helena_administration 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rubocop.yml +18 -0
  4. data/.travis.yml +6 -0
  5. data/Gemfile +44 -0
  6. data/Gemfile.lock +309 -0
  7. data/MIT-LICENSE +20 -0
  8. data/README.md +82 -0
  9. data/Rakefile +28 -0
  10. data/app/assets/images/helena_administration/.keep +0 -0
  11. data/app/assets/javascripts/helena_administration.js.coffee +20 -0
  12. data/app/assets/javascripts/polyfills.js +10 -0
  13. data/app/assets/stylesheets/_dashboard.sass +4 -0
  14. data/app/assets/stylesheets/_layout.sass +50 -0
  15. data/app/assets/stylesheets/_media_queries.scss +18 -0
  16. data/app/assets/stylesheets/_variables.sass +19 -0
  17. data/app/assets/stylesheets/helena_administration.css.sass +27 -0
  18. data/app/controllers/helena_administration/application_controller.rb +19 -0
  19. data/app/controllers/helena_administration/dashboard_controller.rb +11 -0
  20. data/app/controllers/helena_administration/import_surveys_controller.rb +40 -0
  21. data/app/controllers/helena_administration/question_groups_controller.rb +68 -0
  22. data/app/controllers/helena_administration/questions/checkbox_groups_controller.rb +15 -0
  23. data/app/controllers/helena_administration/questions/checkbox_matrix_controller.rb +7 -0
  24. data/app/controllers/helena_administration/questions/long_texts_controller.rb +11 -0
  25. data/app/controllers/helena_administration/questions/radio_groups_controller.rb +15 -0
  26. data/app/controllers/helena_administration/questions/radio_matrix_controller.rb +7 -0
  27. data/app/controllers/helena_administration/questions/short_texts_controller.rb +11 -0
  28. data/app/controllers/helena_administration/questions/static_texts_controller.rb +11 -0
  29. data/app/controllers/helena_administration/questions_controller.rb +96 -0
  30. data/app/controllers/helena_administration/sessions_controller.rb +60 -0
  31. data/app/controllers/helena_administration/surveys_controller.rb +71 -0
  32. data/app/controllers/helena_administration/versions_controller.rb +82 -0
  33. data/app/helpers/helena_administration/application_helper.rb +14 -0
  34. data/app/models/helena_administration/import_survey_form.rb +9 -0
  35. data/app/views/helena_administration/application/_chromeframe.html.slim +4 -0
  36. data/app/views/helena_administration/application/_flash_messages.html.haml +5 -0
  37. data/app/views/helena_administration/application/_head.html.slim +13 -0
  38. data/app/views/helena_administration/application/_header.html.slim +16 -0
  39. data/app/views/helena_administration/dashboard/index.html.slim +14 -0
  40. data/app/views/helena_administration/import_surveys/_form.html.slim +11 -0
  41. data/app/views/helena_administration/import_surveys/new.html.slim +1 -0
  42. data/app/views/helena_administration/kaminari/_first_page.html.slim +2 -0
  43. data/app/views/helena_administration/kaminari/_gap.html.slim +2 -0
  44. data/app/views/helena_administration/kaminari/_last_page.html.slim +2 -0
  45. data/app/views/helena_administration/kaminari/_next_page.html.slim +2 -0
  46. data/app/views/helena_administration/kaminari/_page.html.slim +2 -0
  47. data/app/views/helena_administration/kaminari/_paginator.html.slim +11 -0
  48. data/app/views/helena_administration/kaminari/_prev_page.html.slim +2 -0
  49. data/app/views/helena_administration/layouts/application.html.slim +13 -0
  50. data/app/views/helena_administration/question_groups/_form.html.slim +5 -0
  51. data/app/views/helena_administration/question_groups/edit.html.slim +1 -0
  52. data/app/views/helena_administration/question_groups/new.html.slim +1 -0
  53. data/app/views/helena_administration/question_groups/show.html.slim +60 -0
  54. data/app/views/helena_administration/questions/_form.html.slim +15 -0
  55. data/app/views/helena_administration/questions/_labels.html.slim +24 -0
  56. data/app/views/helena_administration/questions/_sub_questions.html.slim +32 -0
  57. data/app/views/helena_administration/questions/edit.html.slim +1 -0
  58. data/app/views/helena_administration/questions/new.html.slim +1 -0
  59. data/app/views/helena_administration/questions/show.html.slim +26 -0
  60. data/app/views/helena_administration/sessions/_form.html.slim +8 -0
  61. data/app/views/helena_administration/sessions/edit.html.slim +1 -0
  62. data/app/views/helena_administration/surveys/_form.html.slim +5 -0
  63. data/app/views/helena_administration/surveys/edit.html.slim +1 -0
  64. data/app/views/helena_administration/surveys/index.html.slim +34 -0
  65. data/app/views/helena_administration/surveys/new.html.slim +1 -0
  66. data/app/views/helena_administration/surveys/show.html.slim +120 -0
  67. data/app/views/helena_administration/versions/_form.html.slim +14 -0
  68. data/app/views/helena_administration/versions/edit.html.slim +1 -0
  69. data/app/views/helena_administration/versions/new.html.slim +1 -0
  70. data/app/views/helena_administration/versions/show.html.slim +68 -0
  71. data/app/views/layouts/helena_administration/application.html.slim +10 -0
  72. data/bin/rails +12 -0
  73. data/config/compass.rb +2 -0
  74. data/config/html5_rails.yml +26 -0
  75. data/config/locales/en.yml +21 -0
  76. data/config/locales/views/dashboard.en.yml +6 -0
  77. data/config/locales/views/import_surveys.en.yml +11 -0
  78. data/config/locales/views/question_groups.en.yml +5 -0
  79. data/config/locales/views/questions.en.yml +5 -0
  80. data/config/locales/views/surveys.en.yml +10 -0
  81. data/config/locales/views/versions.en.yml +11 -0
  82. data/config/routes.rb +24 -0
  83. data/coverage/.resultset.json.lock +0 -0
  84. data/coverage/assets/0.8.0/application.css +799 -0
  85. data/coverage/assets/0.8.0/application.js +1559 -0
  86. data/coverage/assets/0.8.0/colorbox/border.png +0 -0
  87. data/coverage/assets/0.8.0/colorbox/controls.png +0 -0
  88. data/coverage/assets/0.8.0/colorbox/loading.gif +0 -0
  89. data/coverage/assets/0.8.0/colorbox/loading_background.png +0 -0
  90. data/coverage/assets/0.8.0/favicon_green.png +0 -0
  91. data/coverage/assets/0.8.0/favicon_red.png +0 -0
  92. data/coverage/assets/0.8.0/favicon_yellow.png +0 -0
  93. data/coverage/assets/0.8.0/loading.gif +0 -0
  94. data/coverage/assets/0.8.0/magnify.png +0 -0
  95. data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  96. data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  97. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  98. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  99. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  100. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  101. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  102. data/coverage/assets/0.8.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  103. data/coverage/assets/0.8.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
  104. data/coverage/assets/0.8.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  105. data/coverage/assets/0.8.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
  106. data/coverage/assets/0.8.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
  107. data/coverage/assets/0.8.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  108. data/helena_administration.gemspec +37 -0
  109. data/lib/helena_administration/engine.rb +13 -0
  110. data/lib/helena_administration/version.rb +3 -0
  111. data/lib/helena_administration.rb +15 -0
  112. data/lib/tasks/helena_administration_tasks.rake +4 -0
  113. data/spec/controllers/dashboard_controller_spec.rb +11 -0
  114. data/spec/controllers/sessions_controller_spec.rb +102 -0
  115. data/spec/controllers/survey_controller_spec.rb +36 -0
  116. data/spec/dummy/README.rdoc +28 -0
  117. data/spec/dummy/Rakefile +6 -0
  118. data/spec/dummy/app/assets/images/.keep +0 -0
  119. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  120. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  121. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  122. data/spec/dummy/app/controllers/concerns/.keep +0 -0
  123. data/spec/dummy/app/decorators/controllers/helena_administration/application_controller_decorator.rb +5 -0
  124. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  125. data/spec/dummy/app/mailers/.keep +0 -0
  126. data/spec/dummy/app/models/.keep +0 -0
  127. data/spec/dummy/app/models/concerns/.keep +0 -0
  128. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  129. data/spec/dummy/bin/bundle +3 -0
  130. data/spec/dummy/bin/rails +4 -0
  131. data/spec/dummy/bin/rake +4 -0
  132. data/spec/dummy/config/application.rb +27 -0
  133. data/spec/dummy/config/boot.rb +5 -0
  134. data/spec/dummy/config/environment.rb +5 -0
  135. data/spec/dummy/config/environments/development.rb +34 -0
  136. data/spec/dummy/config/environments/production.rb +78 -0
  137. data/spec/dummy/config/environments/test.rb +39 -0
  138. data/spec/dummy/config/initializers/assets.rb +9 -0
  139. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  140. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  141. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  142. data/spec/dummy/config/initializers/inflections.rb +16 -0
  143. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  144. data/spec/dummy/config/initializers/session_store.rb +3 -0
  145. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  146. data/spec/dummy/config/locales/en.yml +23 -0
  147. data/spec/dummy/config/mongoid.yml +13 -0
  148. data/spec/dummy/config/routes.rb +4 -0
  149. data/spec/dummy/config/secrets.yml +22 -0
  150. data/spec/dummy/config.ru +4 -0
  151. data/spec/dummy/lib/assets/.keep +0 -0
  152. data/spec/dummy/log/.keep +0 -0
  153. data/spec/dummy/public/404.html +67 -0
  154. data/spec/dummy/public/422.html +67 -0
  155. data/spec/dummy/public/500.html +66 -0
  156. data/spec/dummy/public/favicon.ico +0 -0
  157. data/spec/features/dashboard/index.html.slim_spec.rb +9 -0
  158. data/spec/features/question_groups/manage_question_groups_spec.rb +97 -0
  159. data/spec/features/questions/manage_questions_spec.rb +108 -0
  160. data/spec/features/questions/question_types/manage_checkbox_group_question_spec.rb +53 -0
  161. data/spec/features/questions/question_types/manage_long_text_question_spec.rb +22 -0
  162. data/spec/features/questions/question_types/manage_radio_group_question_spec.rb +57 -0
  163. data/spec/features/questions/question_types/manage_radio_matrix_question_spec.rb +78 -0
  164. data/spec/features/questions/question_types/manage_short_text_question_spec.rb +20 -0
  165. data/spec/features/questions/question_types/manage_static_text_question_spec.rb +18 -0
  166. data/spec/features/sessions/manage_sessions_spec.rb +51 -0
  167. data/spec/features/surveys/manage_survey_spec.rb +95 -0
  168. data/spec/features/versions/manage_version_spec.rb +113 -0
  169. data/spec/helpers/applicatin_helper_spec.rb +17 -0
  170. data/spec/rails_helper.rb +23 -0
  171. data/spec/spec_helper.rb +63 -0
  172. data/spec/support/.keep +0 -0
  173. metadata +455 -0
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1,9 @@
1
+ require 'rails_helper'
2
+
3
+ describe 'Dashboard' do
4
+ scenario 'User visits the index page that links to the survey management' do
5
+ visit dashboard_index_path
6
+
7
+ expect(page).to have_link 'Manage Surveys', href: surveys_path
8
+ end
9
+ end
@@ -0,0 +1,97 @@
1
+ require 'rails_helper'
2
+
3
+ describe 'Question groups' do
4
+
5
+ let!(:survey) { create :survey }
6
+ let!(:version) { survey.versions.create version: 0 }
7
+
8
+ scenario 'Index site lists all question groups' do
9
+ version.question_groups.create title: 'Second question group', position: 123
10
+ version.question_groups.create title: 'First question group', position: 42
11
+
12
+ visit survey_version_path(survey, version)
13
+
14
+ within 'nav .breadcrumbs' do
15
+ expect(page).to have_content 'Version 0'
16
+ end
17
+
18
+ within 'table.question_groups tbody tr:nth-child(1)' do
19
+ expect(page).to have_content 'First question group'
20
+ end
21
+
22
+ within 'table.question_groups tbody tr:nth-child(2)' do
23
+ expect(page).to have_content 'Second question group'
24
+ end
25
+ end
26
+
27
+ scenario 'User creates a new question group' do
28
+ visit survey_version_path(survey, version)
29
+
30
+ within 'table.question_groups' do
31
+ click_link 'New'
32
+ end
33
+
34
+ within 'nav .breadcrumbs' do
35
+ expect(page).to have_text 'New question group'
36
+ end
37
+
38
+ fill_in 'Position', with: 77
39
+ fill_in 'Title', with: 'Foo Bar'
40
+ check 'Allow participants to go back to the previous question group'
41
+
42
+ expect { click_button 'Save' }.to change { version.reload.question_groups.count }.by(1)
43
+
44
+ new_question_group = version.reload.question_groups.last
45
+
46
+ expect(new_question_group.position).to eq 77
47
+ expect(new_question_group.title).to eq 'Foo Bar'
48
+
49
+ end
50
+
51
+ scenario 'User edits question_group' do
52
+ question_group = version.question_groups.create title: 'Everybody lies!'
53
+
54
+ visit survey_version_path(survey, version)
55
+
56
+ within "##{dom_id(question_group)}" do
57
+ click_link 'Edit'
58
+ end
59
+
60
+ within 'nav .breadcrumbs' do
61
+ expect(page).to have_content 'Everybody lies!'
62
+ end
63
+
64
+ fill_in 'Position', with: 13
65
+ fill_in 'Title', with: 'Foo Bar'
66
+
67
+ click_button 'Save'
68
+
69
+ expect(question_group.reload.position).to eq 13
70
+ expect(question_group.reload.title).to eq 'Foo Bar'
71
+ end
72
+
73
+ scenario 'User deletes a question group' do
74
+ question_group = version.question_groups.create
75
+
76
+ visit survey_version_path(survey, version)
77
+
78
+ within "##{dom_id(question_group)}" do
79
+ expect { click_link 'Delete' }.to change { version.reload.question_groups.count }.by(-1)
80
+ end
81
+ end
82
+
83
+ scenario 'User can view question_group details' do
84
+ question_group = version.question_groups.create title: 'Awesome new question group', position: 666
85
+
86
+ visit survey_version_question_group_path(survey, version, question_group)
87
+
88
+ within 'nav .breadcrumbs' do
89
+ expect(page).to have_content 'Awesome new question group'
90
+ end
91
+
92
+ within "##{dom_id(question_group)}" do
93
+ expect(page).to have_content '666'
94
+ expect(page).to have_content 'Awesome new question group'
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,108 @@
1
+ require 'rails_helper'
2
+
3
+ describe 'Questions' do
4
+ let!(:survey) { create :survey }
5
+ let!(:version) { survey.versions.create version: 0 }
6
+ let!(:question_group) { version.question_groups.create title: 'Abakadabara' }
7
+
8
+ scenario 'Index site lists all questions' do
9
+ question_group.questions.create code: 'second_question', question_text: 'Second question', position: 123, _type: Helena::Questions::LongText
10
+ question_group.questions.create code: 'first_question', question_text: 'First question', position: 42, _type: Helena::Questions::ShortText
11
+
12
+ visit survey_version_question_group_path(survey, version, question_group)
13
+
14
+ within 'nav .breadcrumbs' do
15
+ expect(page).to have_content 'Abakadabara'
16
+ end
17
+
18
+ within 'table.questions tbody tr:nth-child(1)' do
19
+ expect(page).to have_content 'first_question'
20
+ expect(page).to have_content 'First question'
21
+ expect(page).to have_content 'Short text'
22
+ end
23
+
24
+ within 'table.questions tbody tr:nth-child(2)' do
25
+ expect(page).to have_content 'second_question'
26
+ expect(page).to have_content 'Second question'
27
+ expect(page).to have_content 'Long text'
28
+ end
29
+ end
30
+
31
+ scenario 'creates a new question' do
32
+ visit new_survey_version_question_group_question_path(survey, version, question_group)
33
+
34
+ fill_in 'Code', with: 'a38'
35
+ fill_in 'Question text', with: 'Shall we go?'
36
+
37
+ within '.breadcrumbs' do
38
+ expect(page).to have_text 'New question'
39
+ end
40
+
41
+ expect { click_button 'Save' }.to change { question_group.reload.questions.count }.by(1)
42
+ end
43
+
44
+ scenario 'creating a new question errors when without entering a code' do
45
+ visit new_survey_version_question_group_question_path(survey, version, question_group)
46
+
47
+ fill_in 'Code', with: ''
48
+
49
+ expect { click_button 'Save' }.to change { question_group.reload.questions.count }.by(0)
50
+ end
51
+
52
+ scenario 'edits a question' do
53
+ question = create :question, question_text: 'We are here?', question_group: question_group
54
+
55
+ visit edit_survey_version_question_group_question_path(survey, version, question_group, question)
56
+
57
+ fill_in 'Question text', with: 'Are you sure?'
58
+ fill_in 'Code', with: 'b12'
59
+
60
+ click_button 'Save'
61
+
62
+ expect(question.reload.question_text).to eq 'Are you sure?'
63
+ expect(question.reload.code).to eq 'b12'
64
+ end
65
+
66
+ scenario 'edits a question errors when code text is empty' do
67
+ question = create :question, question_text: 'We are here?', question_group: question_group
68
+
69
+ visit edit_survey_version_question_group_question_path(survey, version, question_group, question)
70
+
71
+ fill_in 'Code', with: ''
72
+
73
+ expect { click_button 'Save' }.not_to change { question.reload }
74
+ end
75
+
76
+ scenario 'User deletes a question' do
77
+ question_group.questions.create code: 'abc'
78
+
79
+ question = question_group.questions.find_by code: 'abc'
80
+
81
+ visit survey_version_question_group_path(survey, version, question_group)
82
+
83
+ within "##{dom_id(question)}" do
84
+ expect { click_link 'Delete' }.to change { question_group.reload.questions.count }.by(-1)
85
+ end
86
+ end
87
+
88
+ scenario 'User can view question details' do
89
+ question_group.questions.create code: 'fish',
90
+ question_text: 'How much is the fish?',
91
+ position: 123,
92
+ _type: Helena::Questions::LongText
93
+
94
+ question = question_group.questions.find_by code: 'fish'
95
+ visit survey_version_question_group_question_path(survey, version, question_group, question)
96
+
97
+ within 'nav .breadcrumbs' do
98
+ expect(page).to have_content 'fish'
99
+ end
100
+
101
+ within "##{dom_id(question.reload)}" do
102
+ expect(page).to have_content 'fish'
103
+ expect(page).to have_content 'How much is the fish?'
104
+ expect(page).to have_content '123'
105
+ expect(page).to have_content 'Long text'
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,53 @@
1
+ require 'rails_helper'
2
+
3
+ describe 'Checkbox group question management' do
4
+ let!(:survey) { create :survey }
5
+ let!(:version) { survey.versions.create version: 0 }
6
+ let!(:question_group) { version.question_groups.create title: 'Abakadabara' }
7
+ let!(:question) { create :checkbox_group_question, question_group: question_group }
8
+
9
+ scenario 'edits a question' do
10
+ question.sub_questions.create(code: 'aperto', text: 'Aperto Snacks', value: 'Aperto', position: 1)
11
+
12
+ visit edit_survey_version_question_group_questions_checkbox_group_path(survey, version, question_group, question)
13
+
14
+ check 'Required'
15
+
16
+ fill_in 'questions_checkbox_group_sub_questions_attributes_0_position', with: '2'
17
+ fill_in 'questions_checkbox_group_sub_questions_attributes_0_text', with: 'Avec Shop'
18
+ fill_in 'questions_checkbox_group_sub_questions_attributes_0_code', with: 'avec'
19
+ check 'questions_checkbox_group_sub_questions_attributes_0_preselected'
20
+
21
+ click_button 'Save'
22
+
23
+ expect(question.reload.sub_questions.first.position).to eq 2
24
+ expect(question.reload.sub_questions.first.text).to eq 'Avec Shop'
25
+ expect(question.reload.sub_questions.first.code).to eq 'avec'
26
+ expect(question.reload.required).to eq true
27
+ end
28
+
29
+ scenario 'adds a a sub question' do
30
+ visit edit_survey_version_question_group_questions_checkbox_group_path(survey, version, question_group, question)
31
+
32
+ fill_in 'questions_checkbox_group_sub_questions_attributes_0_position', with: '2'
33
+ fill_in 'questions_checkbox_group_sub_questions_attributes_0_text', with: 'Avec Shop'
34
+ fill_in 'questions_checkbox_group_sub_questions_attributes_0_code', with: 'avec'
35
+ check 'questions_checkbox_group_sub_questions_attributes_0_preselected'
36
+
37
+ click_button 'Save'
38
+
39
+ expect(question.reload.sub_questions.first.position).to eq 2
40
+ expect(question.reload.sub_questions.first.text).to eq 'Avec Shop'
41
+ expect(question.reload.sub_questions.first.code).to eq 'avec'
42
+ end
43
+
44
+ scenario 'removes a sub question' do
45
+ question.sub_questions.create(code: 'aperto', text: 'Aperto Snacks', value: 'Aperto', position: 1)
46
+
47
+ visit edit_survey_version_question_group_questions_checkbox_group_path(survey, version, question_group, question)
48
+
49
+ check 'questions_checkbox_group_sub_questions_attributes_0__destroy'
50
+
51
+ click_button 'Save'
52
+ end
53
+ end
@@ -0,0 +1,22 @@
1
+ require 'rails_helper'
2
+
3
+ describe 'Long text question management' do
4
+ let!(:survey) { create :survey }
5
+ let!(:version) { survey.versions.create version: 0 }
6
+ let!(:question_group) { version.question_groups.create title: 'Abakadabara' }
7
+ let!(:question) { create :long_text_question, question_group: question_group }
8
+
9
+ scenario 'edits a question' do
10
+ visit edit_survey_version_question_group_questions_long_text_path(survey, version, question_group, question)
11
+
12
+ a_very_long_text = Faker::Lorem.paragraph(20)
13
+
14
+ fill_in 'Default value', with: a_very_long_text
15
+ check 'Required'
16
+
17
+ click_button 'Save'
18
+
19
+ expect(question.reload.default_value).to eq a_very_long_text
20
+ expect(question.reload.required).to eq true
21
+ end
22
+ end
@@ -0,0 +1,57 @@
1
+ require 'rails_helper'
2
+
3
+ describe 'Radio group question management' do
4
+ let!(:survey) { create :survey }
5
+ let!(:version) { survey.versions.create version: 0 }
6
+ let!(:question_group) { version.question_groups.create title: 'Abakadabara' }
7
+ let!(:question) { create :radio_group_question, question_group: question_group }
8
+
9
+ scenario 'edits a question' do
10
+ question.labels << build(:label, text: 'Male', value: 'm', position: 1)
11
+
12
+ visit edit_survey_version_question_group_questions_radio_group_path(survey, version, question_group, question)
13
+
14
+ check 'Required'
15
+
16
+ fill_in 'questions_radio_group_labels_attributes_0_position', with: '2'
17
+ fill_in 'questions_radio_group_labels_attributes_0_text', with: 'Female'
18
+ fill_in 'questions_radio_group_labels_attributes_0_value', with: 'f'
19
+ check 'questions_radio_group_labels_attributes_0_preselected'
20
+
21
+ click_button 'Save'
22
+
23
+ expect(question.reload.labels.first.position).to eq 2
24
+ expect(question.reload.labels.first.text).to eq 'Female'
25
+ expect(question.reload.labels.first.value).to eq 'f'
26
+ expect(question.reload.labels.first.preselected).to eq true
27
+ expect(question.reload.required).to eq true
28
+ end
29
+
30
+ scenario 'adds a an option' do
31
+ visit edit_survey_version_question_group_questions_radio_group_path(survey, version, question_group, question)
32
+
33
+ fill_in 'questions_radio_group_labels_attributes_0_position', with: '2'
34
+ fill_in 'questions_radio_group_labels_attributes_0_text', with: 'Female'
35
+ fill_in 'questions_radio_group_labels_attributes_0_value', with: 'f'
36
+ check 'questions_radio_group_labels_attributes_0_preselected'
37
+
38
+ click_button 'Save'
39
+
40
+ expect(question.reload.labels.first.position).to eq 2
41
+ expect(question.reload.labels.first.text).to eq 'Female'
42
+ expect(question.reload.labels.first.value).to eq 'f'
43
+ expect(question.reload.labels.first.preselected).to eq true
44
+ end
45
+
46
+ scenario 'removes an option' do
47
+ question.labels << build(:label, text: 'Male', value: 'm', position: 1)
48
+
49
+ visit edit_survey_version_question_group_questions_radio_group_path(survey, version, question_group, question)
50
+
51
+ check 'questions_radio_group_labels_attributes_0__destroy'
52
+
53
+ click_button 'Save'
54
+
55
+ expect(question.reload.labels).to be_empty
56
+ end
57
+ end
@@ -0,0 +1,78 @@
1
+ require 'rails_helper'
2
+
3
+ describe 'Radio matrix question management' do
4
+ let!(:survey) { create :survey }
5
+ let!(:version) { survey.versions.create version: 0 }
6
+ let!(:question_group) { version.question_groups.create title: 'Abakadabara' }
7
+ let!(:question) { create :radio_matrix_question, question_group: question_group }
8
+
9
+ scenario 'edits a question' do
10
+ question.labels.create text: 'Strongly disagree', value: '-1', position: 1
11
+ question.sub_questions.create code: 'aperto', text: 'Aperto Snacks', value: 'Aperto', position: 1
12
+
13
+ visit edit_survey_version_question_group_questions_radio_matrix_path(survey, version, question_group, question)
14
+
15
+ check 'Required'
16
+
17
+ fill_in 'questions_radio_matrix_labels_attributes_0_position', with: '2'
18
+ fill_in 'questions_radio_matrix_labels_attributes_0_text', with: 'Strongly agree'
19
+ fill_in 'questions_radio_matrix_labels_attributes_0_value', with: '1'
20
+ check 'questions_radio_matrix_labels_attributes_0_preselected'
21
+
22
+ fill_in 'questions_radio_matrix_sub_questions_attributes_0_position', with: '2'
23
+ fill_in 'questions_radio_matrix_sub_questions_attributes_0_text', with: 'Avec Shop'
24
+ fill_in 'questions_radio_matrix_sub_questions_attributes_0_code', with: 'avec'
25
+
26
+ click_button 'Save'
27
+
28
+ expect(question.reload.labels.first.position).to eq 2
29
+ expect(question.reload.labels.first.text).to eq 'Strongly agree'
30
+ expect(question.reload.labels.first.value).to eq '1'
31
+ expect(question.reload.labels.first.preselected).to eq true
32
+
33
+ expect(question.reload.sub_questions.first.position).to eq 2
34
+ expect(question.reload.sub_questions.first.text).to eq 'Avec Shop'
35
+ expect(question.reload.sub_questions.first.code).to eq 'avec'
36
+
37
+ expect(question.reload.required).to eq true
38
+ end
39
+
40
+ scenario 'adds a an option' do
41
+ visit edit_survey_version_question_group_questions_radio_matrix_path(survey, version, question_group, question)
42
+
43
+ fill_in 'questions_radio_matrix_labels_attributes_0_position', with: '2'
44
+ fill_in 'questions_radio_matrix_labels_attributes_0_text', with: 'Strongly agree'
45
+ fill_in 'questions_radio_matrix_labels_attributes_0_value', with: '1'
46
+ check 'questions_radio_matrix_labels_attributes_0_preselected'
47
+
48
+ fill_in 'questions_radio_matrix_sub_questions_attributes_0_position', with: '2'
49
+ fill_in 'questions_radio_matrix_sub_questions_attributes_0_text', with: 'Avec Shop'
50
+ fill_in 'questions_radio_matrix_sub_questions_attributes_0_code', with: 'avec'
51
+
52
+ click_button 'Save'
53
+
54
+ expect(question.reload.labels.first.position).to eq 2
55
+ expect(question.reload.labels.first.text).to eq 'Strongly agree'
56
+ expect(question.reload.labels.first.value).to eq '1'
57
+ expect(question.reload.labels.first.preselected).to eq true
58
+
59
+ expect(question.reload.sub_questions.first.position).to eq 2
60
+ expect(question.reload.sub_questions.first.text).to eq 'Avec Shop'
61
+ expect(question.reload.sub_questions.first.code).to eq 'avec'
62
+ end
63
+
64
+ scenario 'removes an option' do
65
+ question.labels.create text: 'Male', value: 'm', position: 1
66
+ question.sub_questions.create code: 'aperto', text: 'Aperto Snacks', value: 'Aperto', position: 1
67
+
68
+ visit edit_survey_version_question_group_questions_radio_matrix_path(survey, version, question_group, question)
69
+
70
+ check 'questions_radio_matrix_labels_attributes_0__destroy'
71
+ check 'questions_radio_matrix_sub_questions_attributes_0__destroy'
72
+
73
+ click_button 'Save'
74
+
75
+ expect(question.reload.labels).to be_empty
76
+ expect(question.reload.sub_questions).to be_empty
77
+ end
78
+ end