rapidfire 5.0.0 → 8.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/app/models/rapidfire/question.rb +1 -1
- data/app/models/rapidfire/survey.rb +1 -1
- data/app/services/rapidfire/attempt_builder.rb +2 -1
- data/app/views/rapidfire/attempts/_form.html.erb +8 -0
- data/lib/rapidfire/version.rb +1 -1
- data/spec/controllers/rapidfire/attempts_controller_spec.rb +1 -1
- data/spec/dummy/config/environments/development.rb +1 -1
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +1 -3
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +90 -0
- data/spec/dummy/log/test.log +7067 -70435
- data/spec/factories/answers_factory.rb +4 -4
- data/spec/factories/attempts_factory.rb +2 -2
- data/spec/factories/questions_factory.rb +7 -7
- data/spec/factories/surveys_factory.rb +3 -3
- data/spec/factories/users_factory.rb +2 -2
- data/spec/features/rapidfire/answering_questions_spec.rb +25 -8
- data/spec/features/rapidfire/editing_answers_spec.rb +6 -6
- data/spec/features/rapidfire/managing_questions_spec.rb +3 -3
- data/spec/features/rapidfire/managing_surveys_spec.rb +18 -3
- data/spec/models/rapidfire/answer_spec.rb +2 -2
- data/spec/models/rapidfire/question_spec.rb +3 -3
- data/spec/models/rapidfire/questions/checkbox_spec.rb +3 -3
- data/spec/models/rapidfire/questions/date_spec.rb +2 -2
- data/spec/models/rapidfire/questions/file_spec.rb +2 -2
- data/spec/models/rapidfire/questions/multi_file_spec.rb +2 -2
- data/spec/models/rapidfire/questions/numeric_spec.rb +2 -2
- data/spec/models/rapidfire/questions/select_spec.rb +3 -3
- data/spec/models/rapidfire/survey_spec.rb +1 -1
- data/spec/serializers/rapidfire/question_result_serializer_spec.rb +1 -1
- data/spec/services/rapidfire/attempt_builder_spec.rb +5 -5
- data/spec/services/rapidfire/question_form_spec.rb +3 -3
- data/spec/services/rapidfire/survey_results_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/support/rapidfire/answer_spec_helper.rb +12 -12
- data/spec/support/rapidfire/question_spec_helper.rb +7 -7
- data/spec/tasks/change_delimiter_from_comma_to_srsn_spec.rb +8 -8
- metadata +39 -125
- data/spec/dummy/tmp/capybara/capybara-202304042341376066162578.html +0 -29
- data/spec/dummy/tmp/capybara/capybara-202304042343302647462912.html +0 -29
- data/spec/dummy/tmp/capybara/capybara-202304042343539524195351.html +0 -29
- data/spec/dummy/tmp/capybara/capybara-202304042344039569698410.html +0 -29
- data/spec/dummy/tmp/capybara/capybara-202304042344107081227684.html +0 -29
- data/spec/dummy/tmp/capybara/capybara-202304042346131668826835.html +0 -29
- data/spec/dummy/tmp/capybara/capybara-202304042346251478672095.html +0 -29
- data/spec/dummy/tmp/capybara/capybara-202304042346382011987550.html +0 -29
- data/spec/dummy/tmp/capybara/capybara-20230404234755589239852.html +0 -29
- data/spec/dummy/tmp/capybara/capybara-202304042348377947112508.html +0 -29
- data/spec/dummy/tmp/capybara/capybara-202304042348502970551073.html +0 -55
- data/spec/dummy/tmp/capybara/capybara-202304042351403473706214.html +0 -29
- data/spec/dummy/tmp/capybara/capybara-202304042352069122239363.html +0 -29
- data/spec/dummy/tmp/capybara/capybara-202304042353148433036065.html +0 -29
- data/spec/dummy/tmp/capybara/capybara-202304042353383278368450.html +0 -29
- data/spec/dummy/tmp/capybara/capybara-202304042358431743077504.html +0 -20
- data/spec/dummy/tmp/capybara/capybara-202304042358433434523512.html +0 -20
- data/spec/dummy/tmp/capybara/capybara-202304042358434379121493.html +0 -20
- data/spec/dummy/tmp/capybara/capybara-202304042358492996621343.html +0 -20
- data/spec/dummy/tmp/storage/2e/vk/2evksypp3ct4p9cjihfxwomru17i +0 -1
- data/spec/dummy/tmp/storage/9k/xt/9kxth5brdkw4huy7lciesekum0pt +0 -1
- data/spec/dummy/tmp/storage/cu/44/cu4452jrce4gd0ebcqop1d22kwbs +0 -1
- data/spec/dummy/tmp/storage/dl/oy/dloy0dbuquwe0f48bhugjca71pbv +0 -1
- data/spec/dummy/tmp/storage/h5/vc/h5vcb12f2cviqinrckfmmz4wtsa7 +0 -1
- data/spec/dummy/tmp/storage/ht/4x/ht4xma120asy3gd0fpeseddjzb2l +0 -1
- data/spec/dummy/tmp/storage/ip/au/ipauutuc5vy678hrwz4jx3rvm0n6 +0 -1
- data/spec/dummy/tmp/storage/j1/uy/j1uyrkrosby81sgq1mf59bs7oqee +0 -1
- data/spec/dummy/tmp/storage/nj/vv/njvvpx93zptrmlwbwiuxmxyh1jnf +0 -1
- data/spec/dummy/tmp/storage/nv/nx/nvnxlyvw3vd8xsq2sa4eazqepgbn +0 -1
- data/spec/dummy/tmp/storage/of/b4/ofb41sjj1mp33qs3wsivadhuts3p +0 -1
- data/spec/dummy/tmp/storage/og/ee/ogeerywp2y4szmnlrc5fnuya2evl +0 -1
- data/spec/dummy/tmp/storage/wz/oc/wzocvk4ahpp7kwc951u7f78nj259 +0 -1
- data/spec/dummy/tmp/storage/z3/vx/z3vxuitmnxld08m0qvt9057uyglc +0 -1
- data/spec/dummy/tmp/storage-7.0.0-ruby-3.2.0/k8/br/k8br0vtpgmpqxrl8mdsceymh3c8d +0 -1
- data/spec/dummy/tmp/storage-7.0.0-ruby-3.2.0/mw/le/mwle6olsgsk8h2pxvklj5q0yr9sc +0 -1
- data/spec/dummy/tmp/storage-7.0.0-ruby-3.2.0/o1/2w/o12whqlkt6rc0yaq3b6fsowmewdp +0 -1
- data/spec/dummy/tmp/storage-7.0.0-ruby-3.2.0/o9/2g/o92go6wavds5oht0dso6m1ybvbh4 +0 -1
- data/spec/dummy/tmp/storage-7.0.0-ruby-3.2.0/om/7f/om7frlle7xz8pybxbydeq1q20hro +0 -1
- data/spec/dummy/tmp/storage-7.0.0-ruby-3.2.0/q6/78/q678f1u8v1nv07dbtm85knmw3b9q +0 -1
- data/spec/dummy/tmp/storage-7.0.0-ruby-3.2.0/r4/wp/r4wpzje2mix0dtl8r2f4akh18fm1 +0 -1
- data/spec/dummy/tmp/storage-7.0.0-ruby-3.2.0/v1/h9/v1h9cuuwtwvz8p6fl574qum6k4ig +0 -1
- data/spec/dummy/tmp/storage-7.0.0-ruby-3.2.0/vb/mw/vbmwrl014lccj3jo61vojqscfxha +0 -1
- data/spec/dummy/tmp/storage-7.0.0-ruby-3.2.0/wn/q4/wnq49hhhxvh4gnc2782lf4zzlz46 +0 -1
- data/spec/dummy/tmp/storage-7.0.0-ruby-3.2.0/ya/go/yago1kn4o7p8jfob0cxetrif714s +0 -1
- /data/spec/dummy/tmp/{storage-7.0.0-ruby-3.2.0/40/x5/40x5xe5nmit9ngld2lngzfjp6r6x → storage--ruby-3.3.5/81/2n/812ne4iy4c40lvvdigsg8z02b1v1} +0 -0
- /data/spec/dummy/tmp/{storage-7.0.0-ruby-3.2.0/7h/za/7hza4otjknyyo14szs2az8wiu7ai → storage--ruby-3.3.5/85/bs/85bsmaecej0491dey4t9jpci9yw3} +0 -0
- /data/spec/dummy/tmp/{storage-7.0.0-ruby-3.2.0/1b/cx/1bcxhbuf0bwp8uduq76gye1v11al → storage--ruby-3.3.5/8y/7b/8y7bhqwxh5cad8xau7nfhtukxcsc} +0 -0
- /data/spec/dummy/tmp/{storage-7.0.0-ruby-3.2.0/ad/ct/adct5ysy5mq6kyptqk5q3fzfpwui → storage--ruby-3.3.5/93/z6/93z6nje4f921vgdwa3lkuf49xocr} +0 -0
- /data/spec/dummy/tmp/{storage-7.0.0-ruby-3.2.0/bl/yo/blyo13wkf0l9igpyq4anaqbomz0h → storage--ruby-3.3.5/at/qk/atqksrev4s0ic4srii57aspu4o6z} +0 -0
- /data/spec/dummy/tmp/{storage-7.0.0-ruby-3.2.0/cc/g8/ccg8282dt6ixi4yvvwjt4noqa6pj → storage--ruby-3.3.5/bi/j3/bij3puzjsfm39colnpqstpu6ggv7} +0 -0
- /data/spec/dummy/tmp/{storage-7.0.0-ruby-3.2.0/d3/gj/d3gjt0qoinigrbao1anp4hmvedjm → storage--ruby-3.3.5/cx/4p/cx4pp9ugdv2xndwll28mo8jhjgig} +0 -0
- /data/spec/dummy/tmp/{storage-7.0.0-ruby-3.2.0/n7/ja/n7jacvu07s9z9ai7acjq8kovdh02 → storage--ruby-3.3.5/gv/9c/gv9cand9rqcew9sceoirbfm9l2bl} +0 -0
- /data/spec/dummy/tmp/{storage-7.0.0-ruby-3.2.0/f2/bv/f2bvz6ws3xfrk17dpzhyacx3kys2 → storage--ruby-3.3.5/m2/ce/m2cehdwpmdl0s5vgylxc1tcbxlr2} +0 -0
- /data/spec/dummy/tmp/{storage-7.0.0-ruby-3.2.0/f8/3z/f83z2f041tfpu39ygi0gu32wai8x → storage--ruby-3.3.5/md/rj/mdrjgxirkdtyfijfwdxn37dswspm} +0 -0
- /data/spec/dummy/tmp/{storage-7.0.0-ruby-3.2.0/gt/rc/gtrco13ij0i2vi27t6wm1jhcve5p → storage--ruby-3.3.5/xv/oi/xvoijswvk9a0blrua7x5yl94a6qw} +0 -0
- /data/spec/dummy/tmp/{storage-7.0.0-ruby-3.2.0/qq/kc/qqkciwi2vymum1556755n85po1j9 → storage--ruby-3.3.5/z6/cw/z6cw41euxe15z3ao5wkypp0y9liw} +0 -0
@@ -1,7 +1,7 @@
|
|
1
|
-
|
1
|
+
FactoryBot.define do
|
2
2
|
factory :answer, :class => "Rapidfire::Answer" do
|
3
|
-
attempt {
|
4
|
-
question {
|
5
|
-
answer_text "hello world"
|
3
|
+
attempt { FactoryBot.create(:attempt) }
|
4
|
+
question { FactoryBot.create(:q_long) }
|
5
|
+
answer_text { "hello world" }
|
6
6
|
end
|
7
7
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
|
2
|
-
factory :question do
|
3
|
-
survey {
|
4
|
-
question_text "Sample Question"
|
1
|
+
FactoryBot.define do
|
2
|
+
factory :question, :class => "Rapidfire::Question" do
|
3
|
+
survey { FactoryBot.create(:survey) }
|
4
|
+
question_text { "Sample Question" }
|
5
5
|
|
6
6
|
factory :q_checkbox, :class => "Rapidfire::Questions::Checkbox" do
|
7
|
-
answer_options "hindi\r\ntelugu\r\nkannada\r\n"
|
7
|
+
answer_options { "hindi\r\ntelugu\r\nkannada\r\n" }
|
8
8
|
end
|
9
9
|
|
10
10
|
factory :q_date, :class => "Rapidfire::Questions::Date" do
|
@@ -17,11 +17,11 @@ FactoryGirl.define do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
factory :q_radio, :class => "Rapidfire::Questions::Radio" do
|
20
|
-
answer_options "male\r\nfemale\r\n"
|
20
|
+
answer_options { "male\r\nfemale\r\n" }
|
21
21
|
end
|
22
22
|
|
23
23
|
factory :q_select, :class => "Rapidfire::Questions::Select" do
|
24
|
-
answer_options "mac\r\nwindows\r\n"
|
24
|
+
answer_options { "mac\r\nwindows\r\n" }
|
25
25
|
end
|
26
26
|
|
27
27
|
factory :q_short, :class => "Rapidfire::Questions::Short" do
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
1
|
+
FactoryBot.define do
|
2
2
|
factory :survey, :class => "Rapidfire::Survey" do
|
3
|
-
name "Test Survey"
|
4
|
-
introduction "Please answer all the questions in this survey."
|
3
|
+
name { "Test Survey" }
|
4
|
+
introduction { "Please answer all the questions in this survey." }
|
5
5
|
end
|
6
6
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "Surveys" do
|
4
|
-
let!(:survey) {
|
4
|
+
let!(:survey) { FactoryBot.create(:survey, name: "Question Set", introduction: "Some introduction") }
|
5
5
|
|
6
6
|
it "displays survey introduction" do
|
7
7
|
visit rapidfire.new_survey_attempt_path(survey)
|
@@ -10,10 +10,10 @@ describe "Surveys" do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
describe "Answering Questions" do
|
13
|
-
let!(:question1) {
|
14
|
-
let!(:question2) {
|
15
|
-
let!(:question3) {
|
16
|
-
let!(:question4) {
|
13
|
+
let!(:question1) { FactoryBot.create(:q_long, survey: survey, question_text: "Long Question", validation_rules: { presence: "1" }) }
|
14
|
+
let!(:question2) { FactoryBot.create(:q_short, survey: survey, question_text: "Short Question") }
|
15
|
+
let!(:question3) { FactoryBot.create(:q_checkbox, survey: survey, question_text: "Checkbox question") }
|
16
|
+
let!(:question4) { FactoryBot.create(:q_checkbox, survey: survey, question_text: "Checkbox question", validation_rules: { presence: "1" }) }
|
17
17
|
|
18
18
|
before do
|
19
19
|
visit rapidfire.new_survey_attempt_path(survey)
|
@@ -56,7 +56,7 @@ describe "Surveys" do
|
|
56
56
|
end
|
57
57
|
|
58
58
|
it "shows error for missing answers" do
|
59
|
-
expect(page).to have_content("can't be blank", count:
|
59
|
+
expect(page).to have_content("can't be blank", count: 3)
|
60
60
|
end
|
61
61
|
|
62
62
|
it "shows already populated answers" do
|
@@ -92,7 +92,7 @@ describe "Surveys" do
|
|
92
92
|
if "#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}" >= "5.2"
|
93
93
|
describe "Answering File uploads" do
|
94
94
|
context "when the question is single file upload" do
|
95
|
-
let!(:question1) {
|
95
|
+
let!(:question1) { FactoryBot.create(:q_file, survey: survey, question_text: "Avatar") }
|
96
96
|
|
97
97
|
it "persistes the file" do
|
98
98
|
visit rapidfire.new_survey_attempt_path(survey)
|
@@ -107,7 +107,7 @@ describe "Surveys" do
|
|
107
107
|
end
|
108
108
|
|
109
109
|
context "when the question is multi file upload" do
|
110
|
-
let!(:question1) {
|
110
|
+
let!(:question1) { FactoryBot.create(:q_multifile, survey: survey, question_text: "Images") }
|
111
111
|
|
112
112
|
it "persistes the file" do
|
113
113
|
visit rapidfire.new_survey_attempt_path(survey)
|
@@ -123,6 +123,23 @@ describe "Surveys" do
|
|
123
123
|
expect(answer.files[1].download).to eq("one\n")
|
124
124
|
end
|
125
125
|
end
|
126
|
+
|
127
|
+
context "when persisting a file fails" do
|
128
|
+
let!(:question1) { FactoryBot.create(:q_file, survey: survey, question_text: "Avatar") }
|
129
|
+
|
130
|
+
it "bubbles up the error" do
|
131
|
+
visit rapidfire.new_survey_attempt_path(survey)
|
132
|
+
|
133
|
+
expect_any_instance_of(Rapidfire::Answer).to receive("file_attachment=") do
|
134
|
+
raise ActiveRecord::ActiveRecordError.new("Can't save the file")
|
135
|
+
end
|
136
|
+
|
137
|
+
attach_file "attempt_#{question1.id}_file", file_fixture("one.txt")
|
138
|
+
click_button "Save"
|
139
|
+
|
140
|
+
expect(page).to have_content("Can't save the file")
|
141
|
+
end
|
142
|
+
end
|
126
143
|
end
|
127
144
|
end
|
128
145
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "Surveys" do
|
4
|
-
let(:survey) {
|
5
|
-
let(:question1) {
|
6
|
-
let(:question2) {
|
7
|
-
let(:attempt) {
|
8
|
-
let!(:answer1) {
|
9
|
-
let!(:answer2) {
|
4
|
+
let(:survey) { FactoryBot.create(:survey, name: "Question Set") }
|
5
|
+
let(:question1) { FactoryBot.create(:q_long, survey: survey, question_text: "Long Question", validation_rules: { presence: "1" }) }
|
6
|
+
let(:question2) { FactoryBot.create(:q_short, survey: survey, question_text: "Short Question") }
|
7
|
+
let(:attempt) { FactoryBot.create(:attempt, survey: survey) }
|
8
|
+
let!(:answer1) { FactoryBot.create(:answer, attempt: attempt, question: question1, answer_text: "Long Answer") }
|
9
|
+
let!(:answer2) { FactoryBot.create(:answer, attempt: attempt, question: question2, answer_text: "Short Answer") }
|
10
10
|
before do
|
11
11
|
visit rapidfire.edit_survey_attempt_path(survey, attempt)
|
12
12
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "Questions" do
|
4
|
-
let(:survey) {
|
5
|
-
let(:question1) {
|
6
|
-
let(:question2) {
|
4
|
+
let(:survey) { FactoryBot.create(:survey, name: "Question Set") }
|
5
|
+
let(:question1) { FactoryBot.create(:q_long, survey: survey, question_text: "Long Question") }
|
6
|
+
let(:question2) { FactoryBot.create(:q_short, survey: survey, question_text: "Short Question") }
|
7
7
|
before do
|
8
8
|
[question1, question2]
|
9
9
|
end
|
@@ -4,9 +4,9 @@ describe "Surveys" do
|
|
4
4
|
include Rapidfire::QuestionSpecHelper
|
5
5
|
include Rapidfire::AnswerSpecHelper
|
6
6
|
|
7
|
-
let(:survey) {
|
8
|
-
let(:question1) {
|
9
|
-
let(:question2) {
|
7
|
+
let(:survey) { FactoryBot.create(:survey, name: "Question Set") }
|
8
|
+
let(:question1) { FactoryBot.create(:q_long, survey: survey, question_text: "Long Question") }
|
9
|
+
let(:question2) { FactoryBot.create(:q_short, survey: survey, question_text: "Short Question") }
|
10
10
|
before do
|
11
11
|
[question1, question2]
|
12
12
|
end
|
@@ -94,6 +94,21 @@ describe "Surveys" do
|
|
94
94
|
expect(page).not_to have_link "New Survey"
|
95
95
|
end
|
96
96
|
end
|
97
|
+
|
98
|
+
context "when creating a survey fails" do
|
99
|
+
before do
|
100
|
+
allow_any_instance_of(ApplicationController).to receive(:can_administer?).and_return(true)
|
101
|
+
end
|
102
|
+
|
103
|
+
it "throws an error message" do
|
104
|
+
visit rapidfire.root_path
|
105
|
+
click_link "New Survey"
|
106
|
+
|
107
|
+
click_button "Create Survey"
|
108
|
+
|
109
|
+
expect(page).to have_content "Name can't be blank"
|
110
|
+
end
|
111
|
+
end
|
97
112
|
end
|
98
113
|
|
99
114
|
describe "EDITING Surveys" do
|
@@ -2,12 +2,12 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Rapidfire::Answer do
|
4
4
|
describe "Validations" do
|
5
|
-
subject {
|
5
|
+
subject { FactoryBot.build(:answer) }
|
6
6
|
it { is_expected.to validate_presence_of(:question) }
|
7
7
|
it { is_expected.to validate_presence_of(:attempt) }
|
8
8
|
|
9
9
|
context "when validations are run" do
|
10
|
-
let(:answer) {
|
10
|
+
let(:answer) { FactoryBot.build(:answer) }
|
11
11
|
|
12
12
|
it "delegates validation of answer text to question" do
|
13
13
|
expect(answer.question).to receive(:validate_answer).with(answer).once
|
@@ -11,7 +11,7 @@ describe Rapidfire::Question do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
describe "#rules" do
|
14
|
-
let(:question) {
|
14
|
+
let(:question) { FactoryBot.create(:q_long, validation_rules: validation_rules) }
|
15
15
|
|
16
16
|
context "when there are no validation rules" do
|
17
17
|
let(:validation_rules) { {} }
|
@@ -33,8 +33,8 @@ describe Rapidfire::Question do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
describe "validate_answer" do
|
36
|
-
let(:question) {
|
37
|
-
let(:answer) {
|
36
|
+
let(:question) { FactoryBot.create(:q_long, validation_rules: validation_rules) }
|
37
|
+
let(:answer) { FactoryBot.build(:answer, question: question, answer_text: answer_text) }
|
38
38
|
before { answer.valid? }
|
39
39
|
|
40
40
|
context "when there are no validation rules" do
|
@@ -6,7 +6,7 @@ describe Rapidfire::Questions::Checkbox do
|
|
6
6
|
end
|
7
7
|
|
8
8
|
describe "#options" do
|
9
|
-
let(:question) {
|
9
|
+
let(:question) { FactoryBot.create(:q_select) }
|
10
10
|
|
11
11
|
it "returns options" do
|
12
12
|
expect(question.options).to match_array(["mac", "windows"])
|
@@ -14,8 +14,8 @@ describe Rapidfire::Questions::Checkbox do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
describe "validate_answer" do
|
17
|
-
let(:question) {
|
18
|
-
let(:answer) {
|
17
|
+
let(:question) { FactoryBot.create(:q_checkbox, validation_rules: validation_rules) }
|
18
|
+
let(:answer) { FactoryBot.build(:answer, question: question, answer_text: answer_text) }
|
19
19
|
before { answer.valid? }
|
20
20
|
|
21
21
|
context "when there are no validation rules" do
|
@@ -2,8 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Rapidfire::Questions::Date do
|
4
4
|
describe "validate_answer" do
|
5
|
-
let(:question) {
|
6
|
-
let(:answer) {
|
5
|
+
let(:question) { FactoryBot.create(:q_date, validation_rules: validation_rules) }
|
6
|
+
let(:answer) { FactoryBot.build(:answer, question: question, answer_text: answer_text) }
|
7
7
|
before { answer.valid? }
|
8
8
|
|
9
9
|
context "when there are no validation rules" do
|
@@ -16,8 +16,8 @@ describe Rapidfire::Questions::File do
|
|
16
16
|
|
17
17
|
if "#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}" >= "5.2"
|
18
18
|
describe "validate_answer" do
|
19
|
-
let(:question) {
|
20
|
-
let(:answer) {
|
19
|
+
let(:question) { FactoryBot.create(:q_file, validation_rules: validation_rules) }
|
20
|
+
let(:answer) { FactoryBot.build(:answer, question: question, file: file) }
|
21
21
|
before { answer.valid? }
|
22
22
|
|
23
23
|
context "when there are no validation rules" do
|
@@ -16,8 +16,8 @@ describe Rapidfire::Questions::MultiFile do
|
|
16
16
|
|
17
17
|
if "#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}" >= "5.2"
|
18
18
|
describe "validate_answer" do
|
19
|
-
let(:question) {
|
20
|
-
let(:answer) {
|
19
|
+
let(:question) { FactoryBot.create(:q_multifile, validation_rules: validation_rules) }
|
20
|
+
let(:answer) { FactoryBot.build(:answer, question: question, files: files) }
|
21
21
|
before { answer.valid? }
|
22
22
|
|
23
23
|
context "when there are no validation rules" do
|
@@ -2,8 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Rapidfire::Questions::Numeric do
|
4
4
|
describe "validate_answer" do
|
5
|
-
let(:question) {
|
6
|
-
let(:answer) {
|
5
|
+
let(:question) { FactoryBot.create(:q_numeric, validation_rules: validation_rules) }
|
6
|
+
let(:answer) { FactoryBot.build(:answer, question: question, answer_text: answer_text) }
|
7
7
|
before { answer.valid? }
|
8
8
|
|
9
9
|
context "when there are no validation rules" do
|
@@ -6,7 +6,7 @@ describe Rapidfire::Questions::Select do
|
|
6
6
|
end
|
7
7
|
|
8
8
|
describe "#options" do
|
9
|
-
let(:question) {
|
9
|
+
let(:question) { FactoryBot.create(:q_select) }
|
10
10
|
|
11
11
|
it "returns options" do
|
12
12
|
expect(question.options).to match_array(["mac", "windows"])
|
@@ -14,8 +14,8 @@ describe Rapidfire::Questions::Select do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
describe "validate_answer" do
|
17
|
-
let(:question) {
|
18
|
-
let(:answer) {
|
17
|
+
let(:question) { FactoryBot.create(:q_select, validation_rules: validation_rules) }
|
18
|
+
let(:answer) { FactoryBot.build(:answer, question: question, answer_text: answer_text) }
|
19
19
|
before { answer.valid? }
|
20
20
|
|
21
21
|
context "when there are no validation rules" do
|
@@ -4,7 +4,7 @@ describe Rapidfire::QuestionResultSerializer do
|
|
4
4
|
include Rapidfire::QuestionSpecHelper
|
5
5
|
include Rapidfire::AnswerSpecHelper
|
6
6
|
|
7
|
-
let(:survey) {
|
7
|
+
let(:survey) { FactoryBot.create(:survey) }
|
8
8
|
let(:results) do
|
9
9
|
Rapidfire::SurveyResults.new(survey: survey).extract
|
10
10
|
end
|
@@ -5,9 +5,9 @@ def fixture_file_upload(path, mime_type)
|
|
5
5
|
end
|
6
6
|
|
7
7
|
describe Rapidfire::AttemptBuilder do
|
8
|
-
let(:survey) {
|
9
|
-
let(:question1) {
|
10
|
-
let(:question2) {
|
8
|
+
let(:survey) { FactoryBot.create(:survey) }
|
9
|
+
let(:question1) { FactoryBot.create(:q_short, survey: survey) }
|
10
|
+
let(:question2) { FactoryBot.create(:q_long, survey: survey,
|
11
11
|
validation_rules: { presence: "1" }) }
|
12
12
|
|
13
13
|
describe "Creation" do
|
@@ -91,7 +91,7 @@ describe Rapidfire::AttemptBuilder do
|
|
91
91
|
|
92
92
|
if "#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}" >= "5.2"
|
93
93
|
context "with a single file upload question" do
|
94
|
-
let(:question3) {
|
94
|
+
let(:question3) { FactoryBot.create(:q_file, survey: survey) }
|
95
95
|
|
96
96
|
let(:answer_params) do
|
97
97
|
{
|
@@ -111,7 +111,7 @@ describe Rapidfire::AttemptBuilder do
|
|
111
111
|
end
|
112
112
|
|
113
113
|
context "with multiple files upload question" do
|
114
|
-
let(:question3) {
|
114
|
+
let(:question3) { FactoryBot.create(:q_multifile, survey: survey) }
|
115
115
|
|
116
116
|
let(:answer_params) do
|
117
117
|
{
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Rapidfire::QuestionForm do
|
4
|
-
let(:survey) {
|
4
|
+
let(:survey) { FactoryBot.create(:survey) }
|
5
5
|
|
6
6
|
describe "Creation" do
|
7
7
|
let(:proxy) { described_class.new(survey: survey) }
|
@@ -19,7 +19,7 @@ describe Rapidfire::QuestionForm do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
context "when a question is passed" do
|
22
|
-
let(:question) {
|
22
|
+
let(:question) { FactoryBot.create(:q_checkbox, survey: survey) }
|
23
23
|
let(:proxy) { described_class.new(survey: survey, question: question) }
|
24
24
|
|
25
25
|
it "persists question params" do
|
@@ -75,7 +75,7 @@ describe Rapidfire::QuestionForm do
|
|
75
75
|
end
|
76
76
|
|
77
77
|
context "updating a question" do
|
78
|
-
let(:question) {
|
78
|
+
let(:question) { FactoryBot.create(:q_checkbox, survey: survey) }
|
79
79
|
let(:proxy) do
|
80
80
|
proxy_params = params.merge(survey: survey, question: question)
|
81
81
|
described_class.new(proxy_params)
|
data/spec/spec_helper.rb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
module Rapidfire
|
2
2
|
module AnswerSpecHelper
|
3
3
|
def create_answers
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
FactoryBot.create(:answer, :question => @question_checkbox, :answer_text => 'hindi')
|
5
|
+
FactoryBot.create(:answer, :question => @question_checkbox, :answer_text => "hindi\r\ntelugu")
|
6
|
+
FactoryBot.create(:answer, :question => @question_checkbox, :answer_text => "hindi\r\nkannada")
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
FactoryBot.create(:answer, :question => @question_select, :answer_text => 'mac')
|
9
|
+
FactoryBot.create(:answer, :question => @question_select, :answer_text => 'mac')
|
10
|
+
FactoryBot.create(:answer, :question => @question_select, :answer_text => 'windows')
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
FactoryBot.create(:answer, :question => @question_radio, :answer_text => 'male')
|
13
|
+
FactoryBot.create(:answer, :question => @question_radio, :answer_text => 'female')
|
14
14
|
|
15
15
|
3.times do
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
FactoryBot.create(:answer, :question => @question_date, :answer_text => Date.today.to_s)
|
17
|
+
FactoryBot.create(:answer, :question => @question_long, :answer_text => 'my bio goes on and on!')
|
18
|
+
FactoryBot.create(:answer, :question => @question_numeric, :answer_text => 999)
|
19
|
+
FactoryBot.create(:answer, :question => @question_short, :answer_text => 'this is cool')
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
module Rapidfire
|
2
2
|
module QuestionSpecHelper
|
3
3
|
def create_questions(survey)
|
4
|
-
@question_checkbox =
|
5
|
-
@question_date =
|
6
|
-
@question_long =
|
7
|
-
@question_numeric =
|
8
|
-
@question_radio =
|
9
|
-
@question_select =
|
10
|
-
@question_short =
|
4
|
+
@question_checkbox = FactoryBot.create(:q_checkbox, :survey => survey)
|
5
|
+
@question_date = FactoryBot.create(:q_date, :survey => survey)
|
6
|
+
@question_long = FactoryBot.create(:q_long, :survey => survey)
|
7
|
+
@question_numeric = FactoryBot.create(:q_numeric, :survey => survey)
|
8
|
+
@question_radio = FactoryBot.create(:q_radio, :survey => survey)
|
9
|
+
@question_select = FactoryBot.create(:q_select, :survey => survey)
|
10
|
+
@question_short = FactoryBot.create(:q_short, :survey => survey)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -9,18 +9,18 @@ describe 'rapidfire:change_delimiter_from_comma_to_srsn' do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it 'converts select,radio and checkbox answer options delimiter from , to \r\n' do
|
12
|
-
survey =
|
13
|
-
q_checkbox =
|
12
|
+
survey = FactoryBot.create(:survey)
|
13
|
+
q_checkbox = FactoryBot.create(:q_checkbox, survey: survey,
|
14
14
|
answer_options: 'one,two,three')
|
15
|
-
q_radio =
|
15
|
+
q_radio = FactoryBot.create(:q_radio, survey: survey,
|
16
16
|
answer_options: 'hello,world')
|
17
|
-
q_select =
|
17
|
+
q_select = FactoryBot.create(:q_select, survey: survey,
|
18
18
|
answer_options: 'new,old,historic,')
|
19
19
|
|
20
|
-
q_date =
|
21
|
-
q_long =
|
22
|
-
q_numeric =
|
23
|
-
q_short =
|
20
|
+
q_date = FactoryBot.create(:q_date, survey: survey)
|
21
|
+
q_long = FactoryBot.create(:q_long, survey: survey)
|
22
|
+
q_numeric = FactoryBot.create(:q_numeric, survey: survey)
|
23
|
+
q_short = FactoryBot.create(:q_short, survey: survey)
|
24
24
|
|
25
25
|
Rake::Task['rapidfire:change_delimiter_from_comma_to_srsn'].invoke
|
26
26
|
|