fe 0.0.3 → 0.0.4
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.
- checksums.yaml +4 -4
- data/README.md +36 -1
- data/Rakefile +22 -13
- data/app/assets/javascripts/application.js.erb +1 -0
- data/app/assets/javascripts/fe/admin.js +1 -4
- data/app/assets/javascripts/fe/{qe.admin.js → fe.admin.js} +15 -0
- data/app/assets/javascripts/fe/{qe.common.js → fe.common.js} +0 -0
- data/app/assets/javascripts/fe/{qe.public.js → fe.public.js} +115 -27
- data/app/assets/javascripts/fe/rails.extra.js +6 -0
- data/app/assets/stylesheets/fe/{qe.screen.css.scss.erb → fe.screen.css.scss.erb} +12 -18
- data/app/controllers/fe/admin/elements_controller.rb +4 -4
- data/app/controllers/fe/admin/email_templates_controller.rb +10 -4
- data/app/controllers/fe/admin/question_pages_controller.rb +3 -3
- data/app/controllers/fe/admin/question_sheets_controller.rb +6 -5
- data/app/controllers/fe/applications_controller.rb +183 -0
- data/app/controllers/fe/concerns/answer_pages_controller_concern.rb +5 -2
- data/app/controllers/fe/concerns/answer_sheets_controller_concern.rb +10 -6
- data/app/controllers/fe/concerns/application_controller_concern.rb +34 -0
- data/app/controllers/fe/payments_controller.rb +184 -0
- data/app/controllers/fe/reference_pages_controller.rb +41 -0
- data/app/controllers/fe/reference_sheets_controller.rb +1 -1
- data/app/controllers/fe/references_controller.rb +74 -0
- data/app/controllers/fe/submit_pages_controller.rb +22 -0
- data/app/helpers/fe/application_helper.rb +14 -5
- data/app/mailers/fe/notifier.rb +1 -1
- data/app/models/fe/address.rb +3 -0
- data/app/models/fe/answer_pages_presenter.rb +1 -1
- data/app/models/fe/answer_sheet.rb +6 -2
- data/app/models/fe/answer_sheet_question_sheet.rb +1 -1
- data/app/models/fe/application.rb +58 -0
- data/app/models/fe/choice_field.rb +1 -1
- data/app/models/fe/concerns/answer_concern.rb +10 -11
- data/app/models/fe/concerns/answer_pages_presenter_concern.rb +16 -7
- data/app/models/fe/concerns/answer_sheet_concern.rb +10 -16
- data/app/models/fe/concerns/choice_field_concern.rb +21 -10
- data/app/models/fe/condition.rb +1 -1
- data/app/models/fe/current_address.rb +12 -0
- data/app/models/fe/date_field.rb +3 -3
- data/app/models/fe/element.rb +66 -9
- data/app/models/fe/email_address.rb +7 -0
- data/app/models/fe/email_template.rb +1 -1
- data/app/models/fe/option.rb +1 -1
- data/app/models/fe/option_group.rb +1 -1
- data/app/models/fe/page.rb +13 -4
- data/app/models/fe/page_element.rb +13 -1
- data/app/models/fe/page_link.rb +1 -1
- data/app/models/fe/paragraph.rb +1 -1
- data/app/models/fe/payment.rb +32 -7
- data/app/models/fe/payment_question.rb +1 -1
- data/app/models/fe/person.rb +33 -0
- data/app/models/fe/phone_number.rb +5 -0
- data/app/models/fe/presenter.rb +3 -2
- data/app/models/fe/question.rb +7 -7
- data/app/models/fe/question_grid.rb +1 -2
- data/app/models/fe/question_set.rb +1 -1
- data/app/models/fe/question_sheet.rb +9 -3
- data/app/models/fe/reference_question.rb +2 -2
- data/app/models/fe/reference_sheet.rb +28 -4
- data/app/models/fe/section.rb +1 -1
- data/app/models/fe/state_chooser.rb +1 -1
- data/app/models/fe/text_field.rb +3 -3
- data/app/models/fe/user.rb +3 -0
- data/app/models/staff.rb +120 -0
- data/app/views/fe/admin/elements/_errors.html.erb +11 -1
- data/app/views/fe/admin/elements/create.js.erb +3 -3
- data/app/views/fe/admin/elements/destroy.js.erb +2 -2
- data/app/views/fe/admin/elements/drop.js.erb +1 -1
- data/app/views/fe/admin/elements/duplicate.js.erb +1 -1
- data/app/views/fe/admin/elements/edit.js.erb +1 -1
- data/app/views/fe/admin/elements/error.js.erb +1 -1
- data/app/views/fe/admin/elements/new.js.erb +3 -3
- data/app/views/fe/admin/elements/update.js.erb +2 -2
- data/app/views/fe/admin/email_templates/edit.html.erb +9 -9
- data/app/views/fe/admin/email_templates/index.html.erb +3 -3
- data/app/views/fe/admin/email_templates/new.html.erb +2 -2
- data/app/views/fe/admin/panels/_advanced_options.html.erb +28 -1
- data/app/views/fe/admin/panels/_common_fields.html.erb +1 -1
- data/app/views/fe/admin/panels/_condition.html.erb +1 -1
- data/app/views/fe/admin/panels/_insert.html.erb +13 -13
- data/app/views/fe/admin/panels/_nav_controls.html.erb +4 -4
- data/app/views/fe/admin/panels/_page.html.erb +2 -2
- data/app/views/fe/admin/panels/_pages_list.html.erb +4 -4
- data/app/views/fe/admin/panels/_prop_attachment_field.html.erb +1 -1
- data/app/views/fe/admin/panels/_prop_choice_field.html.erb +10 -10
- data/app/views/fe/admin/panels/_prop_date_field.html.erb +1 -1
- data/app/views/fe/admin/panels/_prop_element.html.erb +7 -7
- data/app/views/fe/admin/panels/_prop_page.html.erb +2 -2
- data/app/views/fe/admin/panels/_prop_paragraph.html.erb +1 -1
- data/app/views/fe/admin/panels/_prop_payment_question.html.erb +1 -0
- data/app/views/fe/admin/panels/_prop_question_grid.html.erb +2 -2
- data/app/views/fe/admin/panels/_prop_question_grid_with_total.html.erb +1 -1
- data/app/views/fe/admin/panels/_prop_reference_question.html.erb +2 -2
- data/app/views/fe/admin/panels/_prop_section.html.erb +1 -1
- data/app/views/fe/admin/panels/_prop_sheet.html.erb +9 -9
- data/app/views/fe/admin/panels/_prop_text_field.html.erb +10 -10
- data/app/views/fe/admin/question_pages/_element.html.erb +5 -5
- data/app/views/fe/admin/question_pages/_element_show.html.erb +1 -1
- data/app/views/fe/admin/question_pages/_errors.html.erb +10 -1
- data/app/views/fe/admin/question_pages/_question_page.html.erb +3 -3
- data/app/views/fe/admin/question_pages/create.js.erb +3 -3
- data/app/views/fe/admin/question_pages/destroy.js.erb +3 -3
- data/app/views/fe/admin/question_pages/edit.js.erb +1 -1
- data/app/views/fe/admin/question_pages/show.js.erb +3 -2
- data/app/views/fe/admin/question_pages/show_panel.js.erb +1 -1
- data/app/views/fe/admin/question_sheets/_errors.html.erb +11 -1
- data/app/views/fe/admin/question_sheets/edit.js.erb +1 -1
- data/app/views/fe/admin/question_sheets/error.js.erb +1 -1
- data/app/views/fe/admin/question_sheets/index.html.erb +8 -8
- data/app/views/fe/admin/question_sheets/new.html.erb +1 -1
- data/app/views/fe/admin/question_sheets/show.html.erb +18 -18
- data/app/views/fe/admin/question_sheets/update.js.erb +1 -1
- data/app/views/fe/answer_pages/_answer_page.html.erb +27 -30
- data/app/views/fe/answer_pages/_element.html.erb +5 -1
- data/app/views/fe/answer_pages/update.js.erb +1 -1
- data/app/views/fe/answer_sheets/_answer_sheet.html.erb +16 -14
- data/app/views/fe/answer_sheets/_element.html.erb +1 -1
- data/app/views/fe/answer_sheets/_incomplete.html.erb +8 -8
- data/app/views/fe/answer_sheets/_page_link.html.erb +2 -2
- data/app/views/fe/answer_sheets/_pages_list.html.erb +4 -4
- data/app/views/fe/answer_sheets/_title.html.erb +1 -1
- data/app/views/fe/answer_sheets/edit.html.erb +59 -53
- data/app/views/fe/answer_sheets/incomplete.js.erb +2 -2
- data/app/views/fe/answer_sheets/send_reference_invite.js.erb +1 -1
- data/app/views/fe/application/_logout.html.erb +1 -0
- data/app/views/fe/payment_pages/_credit.html.erb +47 -0
- data/app/views/fe/payment_pages/_mail.html.erb +27 -0
- data/app/views/fe/payment_pages/_payment.html.erb +6 -0
- data/app/views/fe/payment_pages/_staff.html.erb +25 -0
- data/app/views/fe/payment_pages/_staff_results.html.erb +17 -0
- data/app/views/fe/payment_pages/edit.html.erb +75 -0
- data/app/views/fe/payment_pages/staff_search.js.erb +2 -0
- data/app/views/fe/payments/_credit.html.erb +47 -0
- data/app/views/fe/payments/_errors.html.erb +1 -0
- data/app/views/fe/payments/_payment.html.erb +13 -0
- data/app/views/fe/payments/_staff.html.erb +21 -0
- data/app/views/fe/payments/_staff_results.html.erb +18 -0
- data/app/views/fe/payments/approve.js.erb +3 -0
- data/app/views/fe/payments/create.js.erb +19 -0
- data/app/views/fe/payments/destroy.js.erb +7 -0
- data/app/views/fe/payments/edit.html.erb +56 -0
- data/app/views/fe/payments/error.js.erb +3 -0
- data/app/views/fe/payments/no_access.html.erb +7 -0
- data/app/views/fe/payments/staff_search.js.erb +1 -0
- data/app/views/fe/payments/update.html.erb +24 -0
- data/app/views/fe/questions/{_acceptance.html.erb → fe/_acceptance.html.erb} +0 -0
- data/app/views/fe/questions/{_attachment_field.html.erb → fe/_attachment_field.html.erb} +2 -2
- data/app/views/fe/questions/{_checkbox_field.html.erb → fe/_checkbox_field.html.erb} +1 -1
- data/app/views/fe/questions/{_country.html.erb → fe/_country.html.erb} +1 -1
- data/app/views/fe/questions/{_date_field.html.erb → fe/_date_field.html.erb} +0 -0
- data/app/views/fe/questions/{_date_field_mmyy.html.erb → fe/_date_field_mmyy.html.erb} +0 -0
- data/app/views/fe/questions/{_drop_down_field.html.erb → fe/_drop_down_field.html.erb} +1 -1
- data/app/views/fe/questions/fe/_paragraph.html.erb +1 -0
- data/app/views/fe/questions/fe/_payment_question.html.erb +70 -0
- data/app/views/fe/questions/{_question_grid.html.erb → fe/_question_grid.html.erb} +7 -7
- data/app/views/fe/questions/{_question_grid_with_total.html.erb → fe/_question_grid_with_total.html.erb} +1 -1
- data/app/views/fe/questions/{_questions.html.erb → fe/_questions.html.erb} +2 -2
- data/app/views/fe/questions/{_radio_button_field.html.erb → fe/_radio_button_field.html.erb} +13 -11
- data/app/views/fe/questions/{_rating.html.erb → fe/_rating.html.erb} +0 -0
- data/app/views/fe/questions/fe/_reference_discipler.html.erb +1 -0
- data/app/views/fe/questions/fe/_reference_friend.html.erb +1 -0
- data/app/views/fe/questions/fe/_reference_parent.html.erb +1 -0
- data/app/views/fe/questions/fe/_reference_peer.html.erb +1 -0
- data/app/views/fe/questions/fe/_reference_question.html.erb +38 -0
- data/app/views/fe/questions/fe/_reference_roommate.html.erb +1 -0
- data/app/views/fe/questions/fe/_reference_spiritual.html.erb +1 -0
- data/app/views/fe/questions/fe/_reference_staff.html.erb +1 -0
- data/app/views/fe/questions/fe/_section.html.erb +1 -0
- data/app/views/fe/questions/{_state_chooser.html.erb → fe/_state_chooser.html.erb} +0 -0
- data/app/views/fe/questions/{_text_area_field.html.erb → fe/_text_area_field.html.erb} +0 -0
- data/app/views/fe/questions/{_text_field.html.erb → fe/_text_field.html.erb} +0 -0
- data/app/views/fe/questions/{_yes_no.html.erb → fe/_yes_no.html.erb} +6 -6
- data/app/views/fe/questions/{_yes_no_field.erb → fe/_yes_no_field.erb} +1 -1
- data/app/views/fe/reference_pages/_reference.html.erb +31 -0
- data/app/views/fe/reference_pages/edit.html.erb +24 -0
- data/app/views/fe/reference_sheets/done.html.erb +2 -0
- data/app/views/fe/reference_sheets/submitted.js.erb +1 -0
- data/app/views/fe/references/edit.html.erb +8 -0
- data/app/views/fe/references/send_invite.js.erb +7 -0
- data/app/views/fe/references/show.html.erb +18 -0
- data/app/views/fe/references/submit.js.erb +3 -0
- data/app/views/fe/submit_pages/_errors.html.erb +1 -0
- data/app/views/fe/submit_pages/_thankyou.html.erb +2 -0
- data/app/views/fe/submit_pages/edit.html.erb +36 -0
- data/app/views/fe/submit_pages/error.js.erb +1 -0
- data/app/views/fe/submit_pages/submit.js.erb +3 -0
- data/app/views/layouts/fe/application.html.erb +30 -13
- data/app/views/layouts/fe/{qe.admin.html.erb → fe.admin.html.erb} +1 -1
- data/config/locales/en.yml +37 -0
- data/config/routes.rb +69 -27
- data/db/migrate/20131003041856_core.rb +4 -4
- data/db/migrate/20131003044518_create_email_templates.rb +1 -1
- data/db/migrate/20140623153424_create_fe_people.rb +12 -0
- data/db/migrate/20140624180246_create_fe_addresses.rb +20 -0
- data/db/migrate/20140624182216_create_create_fe_phone_numbers.rb +16 -0
- data/db/migrate/20140625160545_create_fe_users.rb +12 -0
- data/db/migrate/20140808202507_add_conditional_type_to_elements.rb +5 -0
- data/db/migrate/20140808203609_add_conditional_answer_to_elements.rb +5 -0
- data/db/migrate/20140828045339_create_payments.rb +13 -0
- data/db/migrate/20141103204704_remove_short_value_column.rb +5 -0
- data/db/migrate/20141109154522_move_conditional_ids_used_for_choice_field_to_their_own_column.rb +7 -0
- data/db/seeds.rb +7 -0
- data/lib/fe.rb +1 -1
- data/lib/fe/engine.rb +46 -1
- data/lib/fe/version.rb +1 -1
- data/lib/tasks/fe_tasks.rake +14 -0
- data/spec/controllers/fe/admin/elements_controller_spec.rb +1 -1
- data/spec/controllers/fe/admin/email_templates_controller_spec.rb +1 -1
- data/spec/controllers/fe/admin/question_pages_controller_spec.rb +1 -1
- data/spec/controllers/fe/admin/question_sheets_controller_spec.rb +1 -1
- data/spec/controllers/fe/answer_pages_controller_spec.rb +1 -1
- data/spec/controllers/fe/answer_sheets_controller_spec.rb +1 -1
- data/spec/controllers/fe/reference_sheets_controller_spec.rb +1 -1
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +29 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +82 -0
- data/spec/dummy/config/environments/test.rb +39 -0
- data/spec/dummy/config/initializers/assets.rb +8 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +56 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/db/schema.rb +203 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/test.log +440 -0
- data/spec/dummy/public/404.html +67 -0
- data/spec/dummy/public/422.html +67 -0
- data/spec/dummy/public/500.html +66 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/factories/answer_sheet_question_sheets.rb +4 -0
- data/spec/factories/answer_sheets.rb +1 -1
- data/spec/factories/applications.rb +7 -0
- data/spec/factories/elements.rb +19 -0
- data/spec/factories/fe_addresses.rb +14 -0
- data/spec/factories/fe_email_addresses.rb +7 -0
- data/spec/factories/fe_people.rb +10 -0
- data/spec/factories/fe_phone_numbers.rb +7 -0
- data/spec/factories/page.rb +9 -0
- data/spec/factories/page_elements.rb +5 -0
- data/spec/factories/payments.rb +7 -0
- data/spec/factories/question_sheet.rb +10 -0
- data/spec/models/fe/answer_sheet_question_sheet_spec.rb +3 -3
- data/spec/models/fe/answer_spec.rb +5 -5
- data/spec/models/fe/application_spec.rb +8 -0
- data/spec/models/fe/attachment_field_spec.rb +1 -1
- data/spec/models/fe/choice_field_spec.rb +29 -2
- data/spec/models/fe/condition_spec.rb +5 -5
- data/spec/models/fe/date_field_spec.rb +9 -9
- data/spec/models/fe/element_spec.rb +139 -9
- data/spec/models/fe/email_template_spec.rb +2 -2
- data/spec/models/fe/option_group_spec.rb +1 -1
- data/spec/models/fe/option_spec.rb +1 -1
- data/spec/models/fe/page_element_spec.rb +3 -3
- data/spec/models/fe/page_link_spec.rb +1 -1
- data/spec/models/fe/page_spec.rb +43 -11
- data/spec/models/fe/paragraph_spec.rb +4 -4
- data/spec/models/fe/payment_question_spec.rb +65 -0
- data/spec/models/fe/person_spec.rb +4 -0
- data/spec/models/fe/question_grid_spec.rb +1 -1
- data/spec/models/fe/question_grid_with_total_spec.rb +1 -1
- data/spec/models/fe/question_set_spec.rb +1 -1
- data/spec/models/fe/question_sheet_spec.rb +5 -5
- data/spec/models/fe/question_spec.rb +13 -12
- data/spec/models/fe/reference_question_spec.rb +4 -4
- data/spec/models/fe/reference_sheet_spec.rb +8 -8
- data/spec/models/fe/section_spec.rb +1 -1
- data/spec/models/fe/state_chooser_spec.rb +1 -1
- data/spec/models/fe/text_field_spec.rb +3 -3
- data/spec/{spec_helper.rb → rails_helper.rb} +3 -3
- data/spec/support/database.txt +3 -3
- metadata +261 -75
- data/app/views/fe/questions/_paragraph.html.erb +0 -1
- data/app/views/fe/questions/_reference_discipler.html.erb +0 -1
- data/app/views/fe/questions/_reference_friend.html.erb +0 -1
- data/app/views/fe/questions/_reference_parent.html.erb +0 -1
- data/app/views/fe/questions/_reference_peer.html.erb +0 -1
- data/app/views/fe/questions/_reference_question.html.erb +0 -38
- data/app/views/fe/questions/_reference_roommate.html.erb +0 -1
- data/app/views/fe/questions/_reference_spiritual.html.erb +0 -1
- data/app/views/fe/questions/_reference_staff.html.erb +0 -1
- data/app/views/fe/questions/_section.html.erb +0 -1
- data/lib/generators/fe/install_generator.rb +0 -132
- data/lib/tasks/qe_tasks.rake +0 -4
- data/spec/models/fe/answer_sheet_spec.rb +0 -8
|
@@ -1,12 +1,142 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'rails_helper'
|
|
2
2
|
|
|
3
3
|
describe Fe::Element do
|
|
4
|
-
it {
|
|
5
|
-
it {
|
|
6
|
-
it {
|
|
7
|
-
it {
|
|
8
|
-
it {
|
|
9
|
-
# it {
|
|
10
|
-
it {
|
|
11
|
-
it {
|
|
4
|
+
it { expect belong_to :question_grid }
|
|
5
|
+
it { expect belong_to :choice_field }
|
|
6
|
+
it { expect have_many :page_elements }
|
|
7
|
+
it { expect have_many :pages }
|
|
8
|
+
it { expect validate_presence_of :kind }
|
|
9
|
+
# it { expect validate_presence_of :style } # this isn't working
|
|
10
|
+
it { expect ensure_length_of :kind }
|
|
11
|
+
it { expect ensure_length_of :style }
|
|
12
|
+
|
|
13
|
+
it "should update a conditional question if added after that question" do
|
|
14
|
+
question_sheet = FactoryGirl.create(:question_sheet_with_pages)
|
|
15
|
+
conditional_el = FactoryGirl.create(:choice_field_element, label: "This is a test for a yes/no question that will hide the next element", conditional_type: "Fe::Element")
|
|
16
|
+
question_sheet.pages.reload
|
|
17
|
+
question_sheet.pages[3].elements << conditional_el
|
|
18
|
+
element = FactoryGirl.create(:text_field_element, label: "This is a test of a short answer that will be hidden by the previous elemenet", conditional_type: nil, conditional_answer: nil)
|
|
19
|
+
question_sheet.pages[3].elements << element
|
|
20
|
+
conditional_el.reload
|
|
21
|
+
expect(conditional_el.conditional).to eq(element)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should update a conditional question if elements are moved around" do
|
|
25
|
+
question_sheet = FactoryGirl.create(:question_sheet_with_pages)
|
|
26
|
+
conditional_el = FactoryGirl.create(:choice_field_element, label: "This is a test for a yes/no question that will hide the next element", conditional_type: "Fe::Element")
|
|
27
|
+
question_sheet.pages.reload
|
|
28
|
+
question_sheet.pages[3].elements << conditional_el
|
|
29
|
+
element = FactoryGirl.create(:text_field_element, label: "This is a test of a short answer that will be moved", conditional_type: nil, conditional_answer: nil)
|
|
30
|
+
question_sheet.pages[3].elements << element
|
|
31
|
+
element2 = FactoryGirl.create(:text_field_element, label: "This is a test of a short answer that will be moved to become hidden", conditional_type: nil, conditional_answer: nil)
|
|
32
|
+
question_sheet.pages[3].elements << element2
|
|
33
|
+
|
|
34
|
+
element.reload
|
|
35
|
+
element2.reload
|
|
36
|
+
conditional_el.reload
|
|
37
|
+
|
|
38
|
+
# currently, page has elements in this order: conditional, element, element2
|
|
39
|
+
# now swap the last 2 elements
|
|
40
|
+
old_element_position = element.position(question_sheet.pages[3])
|
|
41
|
+
old_element2_position = element2.position(question_sheet.pages[3])
|
|
42
|
+
element.page_elements.first.update_attributes(position: old_element2_position)
|
|
43
|
+
element2.page_elements.first.update_attributes(position: old_element_position)
|
|
44
|
+
|
|
45
|
+
conditional_el.reload
|
|
46
|
+
expect(conditional_el.conditional).to eq(element2)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should set the conditional page if a new conditional page element is created" do
|
|
50
|
+
question_sheet = FactoryGirl.create(:question_sheet_with_pages)
|
|
51
|
+
hide_page = question_sheet.pages[4]
|
|
52
|
+
conditional_el = FactoryGirl.create(:choice_field_element, label: "This is a test for a yes/no question that will hide the next pag", conditional_type: "Fe::Page", conditional_id: hide_page.id)
|
|
53
|
+
question_sheet.pages.reload
|
|
54
|
+
question_sheet.pages[3].elements << conditional_el
|
|
55
|
+
conditional_el.reload
|
|
56
|
+
expect(conditional_el.conditional).to eq(hide_page)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "should keep the conditional page if a page is moved" do
|
|
60
|
+
question_sheet = FactoryGirl.create(:question_sheet_with_pages)
|
|
61
|
+
hide_page = question_sheet.pages[4]
|
|
62
|
+
conditional_el = FactoryGirl.create(:choice_field_element, label: "This is a test for a yes/no question that will hide the next pag", conditional_type: "Fe::Page", conditional_id: hide_page.id)
|
|
63
|
+
question_sheet.pages.reload
|
|
64
|
+
question_sheet.pages[3].elements << conditional_el
|
|
65
|
+
conditional_el.reload
|
|
66
|
+
expect(conditional_el.conditional).to eq(question_sheet.pages[4])
|
|
67
|
+
|
|
68
|
+
# move some pages around
|
|
69
|
+
question_sheet.pages[0].update_attributes number: 1
|
|
70
|
+
question_sheet.pages[1].update_attributes number: 2
|
|
71
|
+
question_sheet.pages[2].update_attributes number: 3
|
|
72
|
+
question_sheet.pages[3].update_attributes number: 0 # the page the conditional element is on
|
|
73
|
+
question_sheet.pages[4].update_attributes number: 4
|
|
74
|
+
question_sheet.pages.reload
|
|
75
|
+
|
|
76
|
+
# the page after the conditional page should still be set to the same page
|
|
77
|
+
conditional_el.reload
|
|
78
|
+
expect(conditional_el.conditional).to eq(hide_page)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "should not let a hidden page make the questionnaire incomplete" do
|
|
82
|
+
question_sheet = FactoryGirl.create(:question_sheet_with_pages)
|
|
83
|
+
hide_page = question_sheet.pages[4]
|
|
84
|
+
conditional_el = FactoryGirl.create(:choice_field_element, label: "This is a test for a yes/no question that will hide the next page", conditional_type: "Fe::Page", conditional_id: hide_page.id, conditional_answer: "yes")
|
|
85
|
+
question_sheet.pages.reload
|
|
86
|
+
question_sheet.pages[3].elements << conditional_el
|
|
87
|
+
conditional_el.reload
|
|
88
|
+
expect(conditional_el.conditional).to eq(question_sheet.pages[4])
|
|
89
|
+
|
|
90
|
+
# add required element on hidden page
|
|
91
|
+
element = FactoryGirl.create(:text_field_element, label: "This is a test of a short answer on a hidden page")
|
|
92
|
+
hide_page.elements << element
|
|
93
|
+
|
|
94
|
+
# set up an answer sheet
|
|
95
|
+
application = FactoryGirl.create(:answer_sheet)
|
|
96
|
+
application.answer_sheet_question_sheet = FactoryGirl.create(:answer_sheet_question_sheet, answer_sheet: application, question_sheet: question_sheet)
|
|
97
|
+
application.answer_sheet_question_sheets.first.update_attributes(question_sheet_id: question_sheet.id)
|
|
98
|
+
|
|
99
|
+
# validate the hidden page, it should be marked complete
|
|
100
|
+
expect(hide_page.complete?(application)).to eq(true)
|
|
101
|
+
|
|
102
|
+
# make the answer to the conditional question 'yes' so that the element shows up and is thus required
|
|
103
|
+
conditional_el.set_response("yes", application)
|
|
104
|
+
conditional_el.save_response(application)
|
|
105
|
+
|
|
106
|
+
# validate the now-visible page, it should be marked not complete
|
|
107
|
+
expect(hide_page.complete?(application)).to eq(false)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it "should not require questions in a hidden page" do
|
|
111
|
+
question_sheet = FactoryGirl.create(:question_sheet_with_pages)
|
|
112
|
+
hide_page = question_sheet.pages[4]
|
|
113
|
+
conditional_el = FactoryGirl.create(:choice_field_element, label: "This is a test for a yes/no question that will hide the next page", conditional_type: "Fe::Page", conditional_id: hide_page.id, conditional_answer: "yes")
|
|
114
|
+
question_sheet.pages.reload
|
|
115
|
+
question_sheet.pages[3].elements << conditional_el
|
|
116
|
+
conditional_el.reload
|
|
117
|
+
expect(conditional_el.conditional).to eq(question_sheet.pages[4])
|
|
118
|
+
|
|
119
|
+
# add required element on hidden page
|
|
120
|
+
element = FactoryGirl.create(:text_field_element, label: "This is a test of a short answer on a hidden page")
|
|
121
|
+
hide_page.elements << element
|
|
122
|
+
|
|
123
|
+
# set up an answer sheet
|
|
124
|
+
application = FactoryGirl.create(:answer_sheet)
|
|
125
|
+
application.answer_sheet_question_sheet = FactoryGirl.create(:answer_sheet_question_sheet, answer_sheet: application, question_sheet: question_sheet)
|
|
126
|
+
application.answer_sheet_question_sheets.first.update_attributes(question_sheet_id: question_sheet.id)
|
|
127
|
+
|
|
128
|
+
# make the answer to the conditional question 'yes' (match) so that the element is visible (and thus required)
|
|
129
|
+
conditional_el.set_response("yes", application)
|
|
130
|
+
conditional_el.save_response(application)
|
|
131
|
+
|
|
132
|
+
# validate the hidden page, it should not be complete
|
|
133
|
+
expect(hide_page.complete?(application)).to eq(false)
|
|
134
|
+
|
|
135
|
+
# make the answer to the conditional question 'no' (no match) so that the element is hidden
|
|
136
|
+
conditional_el.set_response("no", application)
|
|
137
|
+
conditional_el.save_response(application)
|
|
138
|
+
|
|
139
|
+
# validate the hidden page, it should be marked complete because of being hidden
|
|
140
|
+
expect(hide_page.complete?(application)).to eq(true)
|
|
141
|
+
end
|
|
12
142
|
end
|
data/spec/models/fe/page_spec.rb
CHANGED
|
@@ -1,14 +1,46 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'rails_helper'
|
|
2
2
|
|
|
3
3
|
describe Fe::Page do
|
|
4
|
-
it {
|
|
5
|
-
it {
|
|
6
|
-
it {
|
|
7
|
-
it {
|
|
8
|
-
it {
|
|
9
|
-
it {
|
|
10
|
-
# it {
|
|
11
|
-
# it {
|
|
12
|
-
it {
|
|
13
|
-
it {
|
|
4
|
+
it { expect belong_to :question_sheet }
|
|
5
|
+
it { expect have_many :page_elements }
|
|
6
|
+
it { expect have_many :elements }
|
|
7
|
+
it { expect have_many :questions }
|
|
8
|
+
it { expect have_many :question_grids }
|
|
9
|
+
it { expect have_many :question_grid_with_totals }
|
|
10
|
+
# it { expect validate_presence_of :label } # this isn't working
|
|
11
|
+
# it { expect validate_presence_of :number } # this isn't working
|
|
12
|
+
it { expect ensure_length_of :label }
|
|
13
|
+
# it { expect validate_numericality_of :number }
|
|
14
|
+
|
|
15
|
+
it "should not require a hidden element" do
|
|
16
|
+
question_sheet = FactoryGirl.create(:question_sheet_with_pages)
|
|
17
|
+
conditional_el = FactoryGirl.create(:choice_field_element, label: "This is a test for a yes/no question that will hide the next element if the answer is yes", conditional_type: "Fe::Element", conditional_answer: "yes")
|
|
18
|
+
question_sheet.pages.reload
|
|
19
|
+
question_sheet.pages[3].elements << conditional_el
|
|
20
|
+
element = FactoryGirl.create(:text_field_element, label: "This is a test of a short answer that is made visible by the previous elemenet")
|
|
21
|
+
question_sheet.pages[3].elements << element
|
|
22
|
+
conditional_el.reload
|
|
23
|
+
expect(conditional_el.conditional).to eq(element)
|
|
24
|
+
|
|
25
|
+
# set up an answer sheet
|
|
26
|
+
application = FactoryGirl.create(:answer_sheet)
|
|
27
|
+
application.answer_sheet_question_sheet = FactoryGirl.create(:answer_sheet_question_sheet, answer_sheet: application, question_sheet: question_sheet)
|
|
28
|
+
application.answer_sheet_question_sheets.first.update_attributes(question_sheet_id: question_sheet.id)
|
|
29
|
+
|
|
30
|
+
# make the answer to the conditional question 'yes' so that the next element shows up and is thus required
|
|
31
|
+
conditional_el.set_response("no", application)
|
|
32
|
+
conditional_el.save_response(application)
|
|
33
|
+
|
|
34
|
+
# validate the page -- the next element after the conditional should not be required
|
|
35
|
+
page = question_sheet.pages[3]
|
|
36
|
+
expect(page.complete?(application)).to eq(true)
|
|
37
|
+
|
|
38
|
+
# make the answer to the conditional question 'yes' so that the next element shows up and is thus required
|
|
39
|
+
conditional_el.set_response("yes", application)
|
|
40
|
+
conditional_el.save_response(application)
|
|
41
|
+
|
|
42
|
+
# validate the page -- the next element after the conditional should not be required
|
|
43
|
+
page = question_sheet.pages[3]
|
|
44
|
+
expect(page.complete?(application)).to eq(false)
|
|
45
|
+
end
|
|
14
46
|
end
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'rails_helper'
|
|
2
2
|
|
|
3
3
|
describe Fe::Paragraph do
|
|
4
4
|
describe '#validate_presence_of :content on update' do
|
|
5
5
|
it 'successfully saves with content' do
|
|
6
6
|
paragraph = build(:paragraph)
|
|
7
7
|
paragraph.content = "abc"
|
|
8
|
-
paragraph.save.
|
|
8
|
+
expect(paragraph.save).to eq(true)
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
it 'saves with default content' do
|
|
12
12
|
paragraph = build(:paragraph)
|
|
13
|
-
paragraph.save.
|
|
14
|
-
paragraph.content.
|
|
13
|
+
expect(paragraph.save).to eq(true)
|
|
14
|
+
expect(paragraph.content).to eq("Lorem ipsum...")
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
require 'rails_helper'
|
|
2
|
+
|
|
3
|
+
describe Fe::PaymentQuestion do
|
|
4
|
+
before(:all) do
|
|
5
|
+
@person = create(:fe_person)
|
|
6
|
+
@application = create(:application, applicant: @person)
|
|
7
|
+
@payment_question = Fe::PaymentQuestion.new
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe "when calling 'response' function" do
|
|
11
|
+
it 'returns a new payment if no application specified' do
|
|
12
|
+
response = @payment_question.send(:response)
|
|
13
|
+
expect(response.new_record?).to be_truthy
|
|
14
|
+
end
|
|
15
|
+
it 'returns the existing application payment if the application already have payments' do
|
|
16
|
+
payment = create(:payment, application: @application)
|
|
17
|
+
response = @payment_question.send(:response, @application).first
|
|
18
|
+
expect(response.id).to be payment.id
|
|
19
|
+
end
|
|
20
|
+
it 'returns a new application payment if the application do not have payments yet' do
|
|
21
|
+
response = @payment_question.send(:response, @application)
|
|
22
|
+
expect(response).not_to be nil
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe "when calling 'display_response' function" do
|
|
27
|
+
it 'returns a blank string if no application specified' do
|
|
28
|
+
expect(@payment_question).to receive(:response)
|
|
29
|
+
response = @payment_question.send(:display_response)
|
|
30
|
+
expect(response).to eq('')
|
|
31
|
+
end
|
|
32
|
+
it 'returns an existing application payment string if the application already have payments' do
|
|
33
|
+
payment = create(:payment, application: @application)
|
|
34
|
+
expect(@payment_question).to receive(:response).with(@application).and_return(payment)
|
|
35
|
+
response = @payment_question.send(:display_response, @application)
|
|
36
|
+
expect(response).not_to be_blank
|
|
37
|
+
end
|
|
38
|
+
it 'returns a blank string if the application do not have payments yet' do
|
|
39
|
+
expect(@payment_question).to receive(:response).with(@application)
|
|
40
|
+
response = @payment_question.send(:display_response, @application)
|
|
41
|
+
expect(response).to eq('')
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
#describe "when calling 'has_response' function" do
|
|
46
|
+
#before(:each) do
|
|
47
|
+
#question_sheet = create(:question_sheet)
|
|
48
|
+
#answer_sheet = create(:answer_sheet)
|
|
49
|
+
#answer_sheet_question_sheet = create(:answer_sheet_question_sheet, answer_sheet: answer_sheet, question_sheet: question_sheet)
|
|
50
|
+
#end
|
|
51
|
+
#it "returns a boolean 'false' if no application specified" do
|
|
52
|
+
#response = @payment_question.send(:has_response?)
|
|
53
|
+
#response.should be false
|
|
54
|
+
#end
|
|
55
|
+
#it "returns a boolean 'true' if the application already have payments" do
|
|
56
|
+
#payment = create(:payment, application: @application)
|
|
57
|
+
#response = @payment_question.send(:has_response?, @application)
|
|
58
|
+
#response.should be true
|
|
59
|
+
#end
|
|
60
|
+
#it "returns a boolean 'false' if the application do not have payments yet" do
|
|
61
|
+
#response = @payment_question.send(:has_response?, @application)
|
|
62
|
+
#response.should be false
|
|
63
|
+
#end
|
|
64
|
+
#end
|
|
65
|
+
end
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'rails_helper'
|
|
2
2
|
|
|
3
3
|
describe Fe::QuestionSheet do
|
|
4
|
-
it {
|
|
5
|
-
it {
|
|
6
|
-
it {
|
|
7
|
-
it {
|
|
4
|
+
it { expect have_many :pages }
|
|
5
|
+
it { expect have_many :answer_sheets }
|
|
6
|
+
it { expect validate_presence_of :label }
|
|
7
|
+
it { expect validate_uniqueness_of :label }
|
|
8
8
|
end
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'rails_helper'
|
|
2
2
|
|
|
3
|
-
describe Question do
|
|
4
|
-
it {
|
|
5
|
-
it {
|
|
6
|
-
it {
|
|
7
|
-
it {
|
|
3
|
+
describe Fe::Question do
|
|
4
|
+
it { expect have_many :conditions }
|
|
5
|
+
it { expect have_many :dependents }
|
|
6
|
+
it { expect have_many :sheet_answers }
|
|
7
|
+
it { expect belong_to :related_question_sheet }
|
|
8
8
|
|
|
9
|
-
# it {
|
|
10
|
-
# it {
|
|
11
|
-
# it {
|
|
9
|
+
# it { expect validate_format_of :slug }
|
|
10
|
+
# it { expect validate_length_of :slug }
|
|
11
|
+
# it { expect validate_uniqueness_of :slug }
|
|
12
12
|
|
|
13
13
|
describe '#default_label?' do
|
|
14
|
-
it '
|
|
15
|
-
question = Question.new
|
|
16
|
-
question.default_label?.
|
|
14
|
+
it 'expect return true' do
|
|
15
|
+
question = Fe::Question.new
|
|
16
|
+
#question.default_label?.expect be_true
|
|
17
|
+
expect(question.default_label?).to eq(true)
|
|
17
18
|
end
|
|
18
19
|
end
|
|
19
20
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'rails_helper'
|
|
2
2
|
|
|
3
3
|
describe Fe::ReferenceQuestion do
|
|
4
4
|
describe '#ptemplate' do
|
|
5
5
|
it 'default' do
|
|
6
6
|
ref = create(:reference_question)
|
|
7
|
-
ref.style.
|
|
8
|
-
ref.ptemplate.
|
|
7
|
+
expect(ref.style).to eq("peer")
|
|
8
|
+
expect(ref.ptemplate).to eq("fe/reference_peer")
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
it 'customized' do
|
|
12
12
|
ref = create(:reference_question)
|
|
13
13
|
ref.style = "abc"
|
|
14
|
-
ref.ptemplate.
|
|
14
|
+
expect(ref.ptemplate).to eq("fe/reference_abc")
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'rails_helper'
|
|
2
2
|
|
|
3
3
|
describe Fe::ReferenceSheet do
|
|
4
|
-
it {
|
|
5
|
-
it {
|
|
6
|
-
# it {
|
|
7
|
-
# it {
|
|
8
|
-
# it {
|
|
9
|
-
# it {
|
|
10
|
-
# it {
|
|
4
|
+
it { expect belong_to :question }
|
|
5
|
+
it { expect belong_to :applicant_answer_sheet }
|
|
6
|
+
# it { expect validate_presence_of :first_name } # need to add started_at column
|
|
7
|
+
# it { expect validate_presence_of :last_name } # need to add started_at column
|
|
8
|
+
# it { expect validate_presence_of :phone } # need to add started_at column
|
|
9
|
+
# it { expect validate_presence_of :email } # need to add started_at column
|
|
10
|
+
# it { expect validate_presence_of :relationship } # need to add started_at column
|
|
11
11
|
end
|