helena_administration 0.0.2 → 0.0.5

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/Gemfile +5 -6
  4. data/Gemfile.lock +213 -157
  5. data/README.md +8 -7
  6. data/app/assets/stylesheets/helena_administration.css.sass +3 -2
  7. data/app/controllers/helena_administration/application_controller.rb +1 -7
  8. data/app/controllers/helena_administration/question_groups_controller.rb +2 -2
  9. data/app/controllers/helena_administration/questions/bipolar_radio_matrices_controller.rb +6 -0
  10. data/app/controllers/helena_administration/questions/{checkbox_matrix_controller.rb → checkbox_matrices_controller.rb} +1 -1
  11. data/app/controllers/helena_administration/questions/{radio_matrix_controller.rb → radio_matrices_controller.rb} +1 -1
  12. data/app/controllers/helena_administration/questions_controller.rb +4 -3
  13. data/app/controllers/helena_administration/sessions_controller.rb +46 -2
  14. data/app/controllers/helena_administration/versions_controller.rb +2 -2
  15. data/app/views/helena_administration/questions/_form.html.slim +1 -0
  16. data/config/routes.rb +3 -2
  17. data/helena_administration.gemspec +9 -6
  18. data/lib/helena_administration/version.rb +1 -1
  19. data/lib/helena_administration.rb +1 -1
  20. data/spec/controllers/dashboard_controller_spec.rb +1 -1
  21. data/spec/controllers/sessions_controller_spec.rb +69 -77
  22. data/spec/dummy/config/environments/test.rb +1 -1
  23. data/spec/dummy/config/initializers/assets.rb +1 -1
  24. data/spec/features/dashboard/index.html.slim_spec.rb +1 -1
  25. data/spec/features/question_groups/manage_question_groups_spec.rb +1 -3
  26. data/spec/features/questions/manage_questions_spec.rb +6 -1
  27. data/spec/features/questions/question_types/manage_bipolar_radio_matrix_question_spec.rb +78 -0
  28. data/spec/features/questions/question_types/manage_checkbox_group_question_spec.rb +1 -1
  29. data/spec/features/questions/question_types/manage_long_text_question_spec.rb +1 -1
  30. data/spec/features/questions/question_types/manage_radio_group_question_spec.rb +1 -1
  31. data/spec/features/questions/question_types/manage_radio_matrix_question_spec.rb +1 -1
  32. data/spec/features/questions/question_types/manage_short_text_question_spec.rb +1 -1
  33. data/spec/features/questions/question_types/manage_static_text_question_spec.rb +1 -1
  34. data/spec/features/sessions/manage_sessions_spec.rb +3 -1
  35. data/spec/features/surveys/manage_survey_spec.rb +1 -1
  36. data/spec/features/versions/manage_version_spec.rb +1 -3
  37. data/spec/helpers/applicatin_helper_spec.rb +1 -1
  38. data/spec/spec_helper.rb +8 -28
  39. metadata +48 -21
  40. data/spec/controllers/survey_controller_spec.rb +0 -36
  41. data/spec/dummy/app/decorators/controllers/helena_administration/application_controller_decorator.rb +0 -5
  42. data/spec/rails_helper.rb +0 -23
@@ -1,6 +1,6 @@
1
1
  module HelenaAdministration
2
2
  module Questions
3
- class RadioMatrixController < QuestionsController
3
+ class RadioMatricesController < QuestionsController
4
4
  include Helena::Concerns::Questions::MatrixQuestions
5
5
  end
6
6
  end
@@ -18,10 +18,11 @@ module HelenaAdministration
18
18
  @question = @question_group.questions.build question_params
19
19
  if @question.save
20
20
  flash[:success] = t 'shared.actions.created'
21
+ respond_with @question, location: [@survey, @version, @question_group, @question]
21
22
  else
22
- flash.now[:danger] = t 'shared.actions.error'
23
+ flash[:danger] = t 'shared.actions.error'
24
+ render 'new'
23
25
  end
24
- respond_with [@survey, @version, @question_group, @question]
25
26
  end
26
27
 
27
28
  def edit
@@ -78,7 +79,7 @@ module HelenaAdministration
78
79
  end
79
80
 
80
81
  def question_params
81
- required_param.permit(permited_params + [:question_text, :code, :_type])
82
+ required_param.permit(permited_params + [:position, :question_text, :code, :_type])
82
83
  end
83
84
 
84
85
  def permited_params
@@ -1,6 +1,9 @@
1
+ require 'csv'
1
2
  module HelenaAdministration
2
3
  class SessionsController < ApplicationController
3
- respond_to :html
4
+ include ActionController::Live
5
+
6
+ respond_to :html, :json, :csv
4
7
 
5
8
  before_filter :load_survey, :add_breadcrumbs
6
9
  before_filter :load_session, only: [:edit, :update, :destroy]
@@ -9,7 +12,9 @@ module HelenaAdministration
9
12
  respond_to do |format|
10
13
  @sessions = @survey.sessions.desc(:created_at)
11
14
  format.json { render json: @sessions }
12
- format.csv { render text: @sessions.to_csv }
15
+ format.csv do
16
+ render_csv
17
+ end
13
18
  end
14
19
  end
15
20
 
@@ -40,6 +45,29 @@ module HelenaAdministration
40
45
 
41
46
  private
42
47
 
48
+ def render_csv
49
+ response.headers['Content-Disposition'] = "attachment; filename=#{@survey.name}.csv"
50
+ response.headers['Content-Type'] = 'text/csv'
51
+
52
+ # Write csv header once ...
53
+ response.stream.write CSV.generate_line(session_fields + question_codes)
54
+
55
+ # .. and generate a line for each session.
56
+ @sessions.each do |session|
57
+ response.stream.write CSV.generate_line(session_values(session) + answer_values(session, question_codes))
58
+ end
59
+ ensure
60
+ response.stream.close
61
+ end
62
+
63
+ def session_values(session)
64
+ session_fields.map { |field| session.attributes[field] }
65
+ end
66
+
67
+ def answer_values(session, answer_codes)
68
+ answer_codes.map { |code| session.answers.where(code: code).first.try(&:value) }
69
+ end
70
+
43
71
  def add_breadcrumbs
44
72
  add_breadcrumb t('shared.navigation.dashboard'), dashboard_index_path
45
73
  add_breadcrumb Helena::Survey.model_name.human(count: 2), surveys_path
@@ -56,5 +84,21 @@ module HelenaAdministration
56
84
  def session_params
57
85
  params.require(:session).permit :token, :view_token, :answers_as_yaml, :completed, :last_question_group_id
58
86
  end
87
+
88
+ def question_codes
89
+ @question_codes ||= unique_question_codes
90
+ end
91
+
92
+ # It could be possible that an answer code equals a session field. We add "answer_" in that case so that we get uniqe question codes for sure
93
+ def unique_question_codes
94
+ codes = @survey.versions.map(&:question_codes).flatten
95
+ codes.map do |code|
96
+ session_fields.include?(code) ? "answer_#{code}" : code
97
+ end
98
+ end
99
+
100
+ def session_fields
101
+ Helena::Session.fields.keys
102
+ end
59
103
  end
60
104
  end
@@ -23,7 +23,7 @@ module HelenaAdministration
23
23
  else
24
24
  flash.now[:danger] = t 'shared.actions.error'
25
25
  end
26
- respond_with [@survey, @version]
26
+ respond_with @version, location: [@survey, @version]
27
27
  end
28
28
 
29
29
  def edit
@@ -38,7 +38,7 @@ module HelenaAdministration
38
38
  flash.now[:danger] = t 'shared.actions.error'
39
39
  add_breadcrumb t 'helena_administration.versions.version', version: @version.version
40
40
  end
41
- respond_with [@survey, @version], location: [:edit, @survey, @version]
41
+ respond_with @version, location: [:edit, @survey, @version]
42
42
  end
43
43
 
44
44
  def destroy
@@ -1,4 +1,5 @@
1
1
  = simple_form_for [@survey, @version, @question_group, question] do |f|
2
+ = f.input :position
2
3
  = f.input :question_text
3
4
  = f.input :code, hint: t('shared.code_hint')
4
5
  = f.input :_type, collection: Helena::Question::TYPES.map { |type| [type.model_name.human, type] }
data/config/routes.rb CHANGED
@@ -15,8 +15,9 @@ HelenaAdministration::Engine.routes.draw do
15
15
  resources :static_texts, module: 'questions'
16
16
  resources :radio_groups, module: 'questions'
17
17
  resources :checkbox_groups, module: 'questions'
18
- resources :radio_matrix, module: 'questions'
19
- resources :checkbox_matrix, module: 'questions'
18
+ resources :radio_matrices, module: 'questions'
19
+ resources :bipolar_radio_matrices, module: 'questions'
20
+ resources :checkbox_matrices, module: 'questions'
20
21
  end
21
22
  end
22
23
  end
@@ -18,20 +18,23 @@ Gem::Specification.new do |s|
18
18
  s.test_files = `git ls-files -- {spec}/*`.split("\n")
19
19
 
20
20
  s.add_runtime_dependency 'kaminari', '~> 0.16'
21
- s.add_runtime_dependency 'rails', '~> 4.1'
22
- s.add_runtime_dependency 'slim-rails', '~> 2.1'
23
- s.add_runtime_dependency 'codemirror-rails', '~> 4.5'
21
+ s.add_runtime_dependency 'rails', '~> 4.2'
22
+ s.add_runtime_dependency 'slim-rails', '~> 3.0'
23
+ s.add_runtime_dependency 'codemirror-rails', '~> 5'
24
24
  s.add_dependency 'mongoid', '~> 4.0'
25
25
  s.add_dependency 'mongoid_orderable', '~> 4.1'
26
26
  s.add_dependency 'mongoid-simple-tags', '~> 0.1'
27
27
  s.add_dependency 'haml-rails', '~> 0.5'
28
28
  s.add_runtime_dependency 'html5-rails', '~> 0.1'
29
- s.add_dependency 'jquery-rails', '~> 3.1'
30
- s.add_runtime_dependency 'sass-rails', '~> 4.0'
29
+ s.add_dependency 'jquery-rails', '~> 4'
30
+ s.add_runtime_dependency 'sass-rails', '~> 5.0'
31
31
  s.add_dependency 'bootstrap-sass', '~> 3.2'
32
32
  s.add_dependency 'simple_form', '~> 3.1.0.rc2'
33
33
  s.add_dependency 'breadcrumbs_on_rails', '~> 2.3'
34
34
  s.add_dependency 'rails-i18n', '~> 4.0'
35
- s.add_runtime_dependency 'font-awesome-rails', '~> 4.2'
35
+ s.add_runtime_dependency 'font-awesome-sass', '~> 4.3.0'
36
36
  s.add_runtime_dependency 'coffee-rails', '~> 4.1'
37
+ s.add_dependency 'responders', '~> 2.0'
38
+
39
+ s.add_development_dependency 'database_cleaner', '~> 1.3'
37
40
  end
@@ -1,3 +1,3 @@
1
1
  module HelenaAdministration
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -2,7 +2,7 @@ require 'helena_administration/engine'
2
2
  require 'breadcrumbs_on_rails'
3
3
  require 'html5-rails'
4
4
  require 'bootstrap-sass'
5
- require 'font-awesome-rails'
5
+ require 'font-awesome-sass'
6
6
  require 'codemirror-rails'
7
7
  require 'jquery-rails'
8
8
  require 'helena'
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe HelenaAdministration::DashboardController do
4
4
  routes { HelenaAdministration::Engine.routes }
@@ -1,102 +1,94 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe HelenaAdministration::SessionsController do
4
4
  routes { HelenaAdministration::Engine.routes }
5
5
 
6
6
  let(:survey) { create :survey }
7
-
8
- context 'without authorization' do
9
- before { allow_any_instance_of(HelenaAdministration::ApplicationController).to receive(:can_administer?).and_return false }
10
-
11
- specify 'trying to list surveys throws an error' do
12
- expect { get :index, survey_id: survey }.to raise_error(ActionController::RoutingError, 'Access Denied')
13
- end
14
-
15
- specify 'trying to export surveys as json throws an error' do
16
- expect { get :index, survey_id: survey, format: :json }.to raise_error(ActionController::RoutingError, 'Access Denied')
17
- end
18
-
19
- specify 'trying to export surveys as csv throws an error' do
20
- expect { get :index, survey_id: survey, format: :csv }.to raise_error(ActionController::RoutingError, 'Access Denied')
21
- end
7
+ let(:version) { survey.versions.create version: 0 }
8
+ let(:question_group) { version.question_groups.create title: 'Abakadabara' }
9
+
10
+ before do
11
+ question_group.questions.create code: 'string_answer_1', question_text: 'Yo!', _type: Helena::Questions::LongText
12
+ question_group.questions.create code: 'integer_answer_1', question_text: 'Bo', _type: Helena::Questions::ShortText
13
+
14
+ question_group.questions.create code: 'string_answer_2', question_text: 'Hip', _type: Helena::Questions::LongText
15
+ question_group.questions.create code: 'integer_answer_2', question_text: 'Hop', _type: Helena::Questions::ShortText
16
+
17
+ create :session, survey: survey, answers: [
18
+ build(:string_answer, code: 'string_answer_1', value: 'abc'),
19
+ build(:integer_answer, code: 'integer_answer_1', value: '123')
20
+ ]
21
+ create :session, survey: survey, answers: [
22
+ build(:string_answer, code: 'string_answer_2', value: 'def, xyz'),
23
+ build(:integer_answer, code: 'integer_answer_2', value: '456')
24
+ ]
22
25
  end
23
26
 
24
- context 'with authorization' do
25
- before do
26
- create :session, survey: survey, answers: [
27
- build(:string_answer, code: 'string_answer_1', value: 'abc'),
28
- build(:integer_answer, code: 'integer_answer_1', value: '123')
29
- ]
30
- create :session, survey: survey, answers: [
31
- build(:string_answer, code: 'string_answer_2', value: 'def, xyz'),
32
- build(:integer_answer, code: 'integer_answer_2', value: '456')
33
- ]
34
- end
35
-
36
- it 'return json result of all sessions' do
37
- get :index, survey_id: survey, format: :json
27
+ it 'return json result of all sessions' do
28
+ get :index, survey_id: survey, format: :json
38
29
 
39
- first_result = ActiveSupport::JSON.decode(response.body).first
30
+ first_result = ActiveSupport::JSON.decode(response.body).first
40
31
 
41
- expect(first_result['answers'].first['code']).to eq 'string_answer_2'
42
- expect(first_result['answers'].first['value']).to eq 'def, xyz'
43
- expect(first_result['answers'].last['code']).to eq 'integer_answer_2'
44
- expect(first_result['answers'].last['value']).to eq 456
32
+ expect(first_result['answers'].first['code']).to eq 'string_answer_2'
33
+ expect(first_result['answers'].first['value']).to eq 'def, xyz'
34
+ expect(first_result['answers'].last['code']).to eq 'integer_answer_2'
35
+ expect(first_result['answers'].last['value']).to eq 456
45
36
 
46
- last_result = ActiveSupport::JSON.decode(response.body).last
37
+ last_result = ActiveSupport::JSON.decode(response.body).last
47
38
 
48
- expect(last_result['answers'].first['code']).to eq 'string_answer_1'
49
- expect(last_result['answers'].first['value']).to eq 'abc'
50
- expect(last_result['answers'].last['code']).to eq 'integer_answer_1'
51
- expect(last_result['answers'].last['value']).to eq 123
52
- end
39
+ expect(last_result['answers'].first['code']).to eq 'string_answer_1'
40
+ expect(last_result['answers'].first['value']).to eq 'abc'
41
+ expect(last_result['answers'].last['code']).to eq 'integer_answer_1'
42
+ expect(last_result['answers'].last['value']).to eq 123
43
+ end
53
44
 
54
- it 'return json result of all sessions' do
55
- get :index, survey_id: survey, format: :json
45
+ it 'return json result of all sessions' do
46
+ get :index, survey_id: survey, format: :json
56
47
 
57
- first_result = ActiveSupport::JSON.decode(response.body).first
48
+ first_result = ActiveSupport::JSON.decode(response.body).first
58
49
 
59
- expect(first_result['answers'].first['code']).to eq 'string_answer_2'
60
- expect(first_result['answers'].first['value']).to eq 'def, xyz'
61
- expect(first_result['answers'].last['code']).to eq 'integer_answer_2'
62
- expect(first_result['answers'].last['value']).to eq 456
50
+ expect(first_result['answers'].first['code']).to eq 'string_answer_2'
51
+ expect(first_result['answers'].first['value']).to eq 'def, xyz'
52
+ expect(first_result['answers'].last['code']).to eq 'integer_answer_2'
53
+ expect(first_result['answers'].last['value']).to eq 456
63
54
 
64
- last_result = ActiveSupport::JSON.decode(response.body).last
55
+ last_result = ActiveSupport::JSON.decode(response.body).last
65
56
 
66
- expect(last_result['answers'].first['code']).to eq 'string_answer_1'
67
- expect(last_result['answers'].first['value']).to eq 'abc'
68
- expect(last_result['answers'].last['code']).to eq 'integer_answer_1'
69
- expect(last_result['answers'].last['value']).to eq 123
70
- end
57
+ expect(last_result['answers'].first['code']).to eq 'string_answer_1'
58
+ expect(last_result['answers'].first['value']).to eq 'abc'
59
+ expect(last_result['answers'].last['code']).to eq 'integer_answer_1'
60
+ expect(last_result['answers'].last['value']).to eq 123
61
+ end
71
62
 
72
- it 'return csv result of all sessions' do
73
- get :index, survey_id: survey, format: :csv
63
+ it 'return csv result of all sessions' do
64
+ get :index, survey_id: survey, format: :csv
74
65
 
75
- csv = CSV.parse(response.body)
76
- %w(string_answer_2 integer_answer_2 string_answer_1 integer_answer_1).each do |code|
77
- expect(csv.first).to include code
78
- end
66
+ csv = CSV.parse(response.body)
67
+ %w(string_answer_2 integer_answer_2 string_answer_1 integer_answer_1).each do |code|
68
+ expect(csv.first).to include code
69
+ end
79
70
 
80
- ['456', 'def, xyz'].each do |value|
81
- expect(csv[1]).to include value
82
- end
71
+ ['456', 'def, xyz'].each do |value|
72
+ expect(csv[1]).to include value
73
+ end
83
74
 
84
- %w(123 abc).each do |value|
85
- expect(csv[2]).to include value
86
- end
75
+ %w(123 abc).each do |value|
76
+ expect(csv[2]).to include value
87
77
  end
78
+ end
88
79
 
89
- specify 'csv header for all sessions does not allow same column names for answers and session fields' do
90
- create :session, survey: survey, answers: [
91
- build(:boolean_answer, code: 'completed', value: true),
92
- build(:string_answer, code: 'token', value: 'abcdefghijklmnopqrstuvwxyz')
93
- ]
94
- get :index, survey_id: survey, format: :csv
95
-
96
- csv = CSV.parse(response.body)
97
- %w(answer_token answer_completed).each do |code|
98
- expect(csv.first).to include code
99
- end
80
+ specify 'csv header for all sessions does not allow same column names for answers and session fields' do
81
+ question_group.questions.create code: 'completed', question_text: 'Good', _type: Helena::Questions::LongText
82
+ question_group.questions.create code: 'token', question_text: 'Point', _type: Helena::Questions::ShortText
83
+ create :session, survey: survey, answers: [
84
+ build(:boolean_answer, code: 'completed', value: true),
85
+ build(:string_answer, code: 'token', value: 'abcdefghijklmnopqrstuvwxyz')
86
+ ]
87
+ get :index, survey_id: survey, format: :csv
88
+
89
+ csv = CSV.parse(response.body)
90
+ %w(answer_token answer_completed).each do |code|
91
+ expect(csv.first).to include code
100
92
  end
101
93
  end
102
94
  end
@@ -13,7 +13,7 @@ Rails.application.configure do
13
13
  config.eager_load = false
14
14
 
15
15
  # Configure static asset server for tests with Cache-Control for performance.
16
- config.serve_static_assets = true
16
+ config.serve_static_files = true
17
17
  config.static_cache_control = 'public, max-age=3600'
18
18
 
19
19
  # Show full error reports and disable caching.
@@ -6,4 +6,4 @@ Rails.application.config.assets.version = '1.0'
6
6
  # Precompile additional assets.
7
7
  # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
8
8
  # Rails.application.config.assets.precompile += %w( search.js )
9
- Rails.application.config.assets.precompile += %w( codemirror.css polyfills.js helena_administration.css )
9
+ Rails.application.config.assets.precompile += %w( codemirror* codemirror/**/* polyfills.js helena_administration.css )
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Dashboard' do
4
4
  scenario 'User visits the index page that links to the survey management' do
@@ -1,7 +1,6 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Question groups' do
4
-
5
4
  let!(:survey) { create :survey }
6
5
  let!(:version) { survey.versions.create version: 0 }
7
6
 
@@ -45,7 +44,6 @@ describe 'Question groups' do
45
44
 
46
45
  expect(new_question_group.position).to eq 77
47
46
  expect(new_question_group.title).to eq 'Foo Bar'
48
-
49
47
  end
50
48
 
51
49
  scenario 'User edits question_group' do
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Questions' do
4
4
  let!(:survey) { create :survey }
@@ -33,6 +33,7 @@ describe 'Questions' do
33
33
 
34
34
  fill_in 'Code', with: 'a38'
35
35
  fill_in 'Question text', with: 'Shall we go?'
36
+ fill_in 'Position', with: 32
36
37
 
37
38
  within '.breadcrumbs' do
38
39
  expect(page).to have_text 'New question'
@@ -47,6 +48,8 @@ describe 'Questions' do
47
48
  fill_in 'Code', with: ''
48
49
 
49
50
  expect { click_button 'Save' }.to change { question_group.reload.questions.count }.by(0)
51
+
52
+ expect(page).to have_content "can't be blank"
50
53
  end
51
54
 
52
55
  scenario 'edits a question' do
@@ -56,11 +59,13 @@ describe 'Questions' do
56
59
 
57
60
  fill_in 'Question text', with: 'Are you sure?'
58
61
  fill_in 'Code', with: 'b12'
62
+ fill_in 'Position', with: 42
59
63
 
60
64
  click_button 'Save'
61
65
 
62
66
  expect(question.reload.question_text).to eq 'Are you sure?'
63
67
  expect(question.reload.code).to eq 'b12'
68
+ expect(question.reload.position).to eq 42
64
69
  end
65
70
 
66
71
  scenario 'edits a question errors when code text is empty' do
@@ -0,0 +1,78 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Bipolar 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 :bipolar_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_bipolar_radio_matrix_path(survey, version, question_group, question)
14
+
15
+ check 'Required'
16
+
17
+ fill_in 'questions_bipolar_radio_matrix_labels_attributes_0_position', with: '2'
18
+ fill_in 'questions_bipolar_radio_matrix_labels_attributes_0_text', with: 'Strongly agree'
19
+ fill_in 'questions_bipolar_radio_matrix_labels_attributes_0_value', with: '1'
20
+ check 'questions_bipolar_radio_matrix_labels_attributes_0_preselected'
21
+
22
+ fill_in 'questions_bipolar_radio_matrix_sub_questions_attributes_0_position', with: '2'
23
+ fill_in 'questions_bipolar_radio_matrix_sub_questions_attributes_0_text', with: 'Avec Shop'
24
+ fill_in 'questions_bipolar_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_bipolar_radio_matrix_path(survey, version, question_group, question)
42
+
43
+ fill_in 'questions_bipolar_radio_matrix_labels_attributes_0_position', with: '2'
44
+ fill_in 'questions_bipolar_radio_matrix_labels_attributes_0_text', with: 'Strongly agree'
45
+ fill_in 'questions_bipolar_radio_matrix_labels_attributes_0_value', with: '1'
46
+ check 'questions_bipolar_radio_matrix_labels_attributes_0_preselected'
47
+
48
+ fill_in 'questions_bipolar_radio_matrix_sub_questions_attributes_0_position', with: '2'
49
+ fill_in 'questions_bipolar_radio_matrix_sub_questions_attributes_0_text', with: 'Avec Shop'
50
+ fill_in 'questions_bipolar_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_bipolar_radio_matrix_path(survey, version, question_group, question)
69
+
70
+ check 'questions_bipolar_radio_matrix_labels_attributes_0__destroy'
71
+ check 'questions_bipolar_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
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Checkbox group question management' do
4
4
  let!(:survey) { create :survey }
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Long text question management' do
4
4
  let!(:survey) { create :survey }
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Radio group question management' do
4
4
  let!(:survey) { create :survey }
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Radio matrix question management' do
4
4
  let!(:survey) { create :survey }
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Short text question management' do
4
4
  let!(:survey) { create :survey }
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Static text question management' do
4
4
  let!(:survey) { create :survey }
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Sessions' do
4
4
  let(:survey) { create :survey }
@@ -47,5 +47,7 @@ describe 'Sessions' do
47
47
  expect(session.reload.answers.map(&:value)).to eq ['c', 4]
48
48
  expect(session.reload.completed).to eq true
49
49
  expect(session.reload.last_question_group_id).to eq second_question_group.id
50
+
51
+ expect(page).not_to have_content 'RuntimeError'
50
52
  end
51
53
  end
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Surveys' do
4
4
  scenario 'Index site lists all surveys' do
@@ -1,7 +1,6 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'Versions ' do
4
-
5
4
  let!(:survey) { create :survey }
6
5
  let!(:baseversion) { survey.versions.create version: 0 }
7
6
 
@@ -89,7 +88,6 @@ describe 'Versions ' do
89
88
  within "##{dom_id(inactive_version)}" do
90
89
  expect { click_link 'Delete' }.to change { survey.reload.versions.count }.by(-1)
91
90
  end
92
-
93
91
  end
94
92
 
95
93
  scenario 'User can view version details' do
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe HelenaAdministration::ApplicationHelper do
4
4
  describe '.title' do