Skip to content

Commit 8893f32

Browse files
committed
Improve test speed by reducing test data creation
Removed the overall number of questions and answers in the two changed files. This change should improve test completion speed without affecting test quality.
1 parent d3839a3 commit 8893f32

File tree

2 files changed

+34
-32
lines changed

2 files changed

+34
-32
lines changed

spec/controllers/answers_controller_with_conditional_questions_spec.rb

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
@section1, @section2, @section3 = template.sections
1313

1414
# Different types of questions (than can have conditional options)
15-
@conditional_questions = create_conditional_questions(5)
15+
@conditional_questions = create_conditional_questions(3)
1616

1717
# Questions that do not have conditional options for adding or removing
18-
@non_conditional_questions = create_non_conditional_questions(7, 3)
18+
@non_conditional_questions = create_non_conditional_questions(3, 3)
1919

2020
@plan = create(:plan, :creator, template: template)
2121
@user = @plan.owner
@@ -41,10 +41,11 @@
4141
# NOTE: Checkboxes allow for multiple options to be selected.
4242
context 'with conditional checkbox question' do
4343
it 'handles single option (with condition) in option_list ' do
44+
non_conditional_question_index = 0
4445
condition = create(:condition, question: @conditional_questions[:checkbox],
4546
option_list: [@conditional_questions[:checkbox].question_options[2].id],
4647
action_type: 'remove',
47-
remove_data: non_conditional_questions_ids_by_index(5))
48+
remove_data: non_conditional_questions_ids_by_index(non_conditional_question_index))
4849

4950
# We chose an option that is in the option_list of the condition defined above. Note that
5051
# the text sent by UI is an empty string.
@@ -64,10 +65,11 @@
6465
# Check hide/show questions lists sent to frontend.
6566
check_question_ids_to_show_and_hide(json, condition.remove_data)
6667

67-
# Check Answers in database (persisted). Expect removed answers to be destroyed.
68-
# Answers destroyed eare easier checked using array of ids rather than individually as in example
69-
# expect(Answer.exists?(@answers[:textarea][5].id)).to be_falsey.
70-
removed_answers = @answers.map { |_, answers| answers[5].id }
68+
# Verify that answers for the `removed_data` questions were deleted from the DB.
69+
# NOTE: `@answers` contains only answers to non-conditional questions.
70+
# So we use `non_conditional_question_index` to locate the corresponding answer
71+
# for each type of non-conditional question.
72+
removed_answers = @answers.map { |_, answers| answers[non_conditional_question_index].id }
7173
expect(Answer.where(id: removed_answers).pluck(:id)).to be_empty
7274
# Answers left
7375
expect(Answer.where(id: @all_answers_ids).pluck(:id)).to match_array(
@@ -78,10 +80,10 @@
7880
create(:condition, question: @conditional_questions[:checkbox],
7981
option_list: [@conditional_questions[:checkbox].question_options[1].id],
8082
action_type: 'remove',
81-
remove_data: non_conditional_questions_ids_by_index(3))
83+
remove_data: non_conditional_questions_ids_by_index(2))
8284

8385
create(:condition, question: @conditional_questions[:checkbox],
84-
option_list: [@conditional_questions[:checkbox].question_options[4].id],
86+
option_list: [@conditional_questions[:checkbox].question_options[2].id],
8587
action_type: 'remove',
8688
remove_data: non_conditional_questions_ids_by_index(0))
8789

@@ -103,21 +105,21 @@
103105

104106
it 'handles multiple options (some with conditions) in option_list' do
105107
condition1 = create(:condition, question: @conditional_questions[:checkbox],
106-
option_list: [@conditional_questions[:checkbox].question_options[2].id],
108+
option_list: [@conditional_questions[:checkbox].question_options[1].id],
107109
action_type: 'remove',
108110
remove_data: non_conditional_questions_ids_by_index(0))
109111

110112
condition2 = create(:condition, question: @conditional_questions[:checkbox],
111-
option_list: [@conditional_questions[:checkbox].question_options[4].id],
113+
option_list: [@conditional_questions[:checkbox].question_options[2].id],
112114
action_type: 'remove',
113-
remove_data: non_conditional_questions_ids_by_index(3))
115+
remove_data: non_conditional_questions_ids_by_index(2))
114116

115117
# We choose options that is in the option_list of the conditions defined above as well as an option
116118
# with no condition defined.
117119
args = {
118-
question_option_ids: [@conditional_questions[:checkbox].question_options[1].id,
119-
@conditional_questions[:checkbox].question_options[2].id,
120-
@conditional_questions[:checkbox].question_options[4].id],
120+
question_option_ids: [@conditional_questions[:checkbox].question_options[0].id,
121+
@conditional_questions[:checkbox].question_options[1].id,
122+
@conditional_questions[:checkbox].question_options[2].id],
121123
user_id: @user.id,
122124
question_id: @conditional_questions[:checkbox].id,
123125
plan_id: @plan.id,
@@ -137,7 +139,7 @@
137139
condition = create(:condition, question: @conditional_questions[:radiobutton],
138140
option_list: [@conditional_questions[:radiobutton].question_options[2].id],
139141
action_type: 'remove',
140-
remove_data: non_conditional_questions_ids_by_index(5))
142+
remove_data: non_conditional_questions_ids_by_index(2))
141143

142144
# We choose an option that is in the option_list of the condition defined above.
143145
args = {
@@ -158,10 +160,10 @@
158160
create(:condition, question: @conditional_questions[:radiobutton],
159161
option_list: [@conditional_questions[:radiobutton].question_options[1].id],
160162
action_type: 'remove',
161-
remove_data: non_conditional_questions_ids_by_index(3))
163+
remove_data: non_conditional_questions_ids_by_index(2))
162164

163165
create(:condition, question: @conditional_questions[:radiobutton],
164-
option_list: [@conditional_questions[:radiobutton].question_options[4].id],
166+
option_list: [@conditional_questions[:radiobutton].question_options[2].id],
165167
action_type: 'remove',
166168
remove_data: non_conditional_questions_ids_by_index(0))
167169

@@ -188,7 +190,7 @@
188190
condition = create(:condition, question: @conditional_questions[:dropdown],
189191
option_list: [@conditional_questions[:dropdown].question_options[2].id],
190192
action_type: 'remove',
191-
remove_data: non_conditional_questions_ids_by_index(5))
193+
remove_data: non_conditional_questions_ids_by_index(2))
192194

193195
# We chose an option that is in the option_list of the condition defined above.
194196
args = {
@@ -209,10 +211,10 @@
209211
create(:condition, question: @conditional_questions[:dropdown],
210212
option_list: [@conditional_questions[:dropdown].question_options[1].id],
211213
action_type: 'remove',
212-
remove_data: non_conditional_questions_ids_by_index(3))
214+
remove_data: non_conditional_questions_ids_by_index(2))
213215

214216
create(:condition, question: @conditional_questions[:dropdown],
215-
option_list: [@conditional_questions[:dropdown].question_options[4].id],
217+
option_list: [@conditional_questions[:dropdown].question_options[2].id],
216218
action_type: 'remove',
217219
remove_data: non_conditional_questions_ids_by_index(0))
218220

@@ -276,20 +278,20 @@
276278
add_webhook_condition = create(:condition,
277279
:webhook,
278280
question: @conditional_questions[:checkbox],
279-
option_list: [@conditional_questions[:checkbox].question_options[2].id])
281+
option_list: [@conditional_questions[:checkbox].question_options[1].id])
280282

281283
condition2 = create(:condition, question: @conditional_questions[:checkbox],
282-
option_list: [@conditional_questions[:checkbox].question_options[4].id],
284+
option_list: [@conditional_questions[:checkbox].question_options[2].id],
283285
action_type: 'remove',
284-
remove_data: non_conditional_questions_ids_by_index(3))
286+
remove_data: non_conditional_questions_ids_by_index(2))
285287

286288
# We chose an option that is in the option_list of the condition defined above. Note that
287289
# the text sent by UI is an empty string.
288290
args = {
289291
text: '',
290-
question_option_ids: [@conditional_questions[:checkbox].question_options[2].id,
291-
@conditional_questions[:checkbox].question_options[4].id,
292-
@conditional_questions[:checkbox].question_options[1].id],
292+
question_option_ids: [@conditional_questions[:checkbox].question_options[0].id,
293+
@conditional_questions[:checkbox].question_options[1].id,
294+
@conditional_questions[:checkbox].question_options[2].id],
293295
user_id: @user.id,
294296
question_id: @conditional_questions[:checkbox].id,
295297
plan_id: @plan.id,

spec/features/questions/conditions_questions_spec.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
@section3 = create(:section, phase: @phase)
1616

1717
# Different types of questions (than can have conditional options)
18-
@conditional_questions = create_conditional_questions(5)
18+
@conditional_questions = create_conditional_questions(3)
1919

2020
# Questions that do not have conditional options for adding or removing
21-
@non_conditional_questions = create_non_conditional_questions(3, 5)
21+
@non_conditional_questions = create_non_conditional_questions(3, 3)
2222

2323
create(:role, :creator, :editor, :commenter, user: @user, plan: @plan)
2424

@@ -87,7 +87,7 @@
8787
remove_data: non_conditional_questions_ids_by_index(2))
8888

8989
create(:condition, question: @conditional_questions[:checkbox],
90-
option_list: [@conditional_questions[:checkbox].question_options[4].id],
90+
option_list: [@conditional_questions[:checkbox].question_options[2].id],
9191
action_type: 'remove',
9292
remove_data: non_conditional_questions_ids_by_index(0))
9393

@@ -147,7 +147,7 @@
147147
remove_data: non_conditional_questions_ids_by_index(2))
148148

149149
create(:condition, question: @conditional_questions[:radiobutton],
150-
option_list: [@conditional_questions[:radiobutton].question_options[4].id],
150+
option_list: [@conditional_questions[:radiobutton].question_options[2].id],
151151
action_type: 'remove',
152152
remove_data: non_conditional_questions_ids_by_index(0))
153153

@@ -206,7 +206,7 @@
206206
remove_data: non_conditional_questions_ids_by_index(2))
207207

208208
create(:condition, question: @conditional_questions[:dropdown],
209-
option_list: [@conditional_questions[:dropdown].question_options[4].id],
209+
option_list: [@conditional_questions[:dropdown].question_options[2].id],
210210
action_type: 'remove',
211211
remove_data: non_conditional_questions_ids_by_index(0))
212212

0 commit comments

Comments
 (0)