Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jl form builder value bug #137

Merged
merged 11 commits into from
Mar 7, 2017
12 changes: 11 additions & 1 deletion app/models/questionnaire_response.rb
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
class QuestionnaireResponse < ActiveRecord::Base
belongs_to :submission
belongs_to :item
validates :content, presence: true, if: :required?
validates :content, presence: true, if: :required?
validates_format_of :content, with: Devise::email_regexp, allow_blank: true, if: :content_is_email?
validates_format_of :content, with: /\d{3}-\d{3}-\d{4}/, allow_blank: true, if: :content_is_phone?

def required?
required == true
end

def content_is_email?
(item.item_type == 'email') if item
end

def content_is_phone?
(item.item_type == 'phone') if item
end

# When content == '["a","b", "c"]',
# return ['a', 'b', 'c'].
def content_as_array
Expand Down
1 change: 1 addition & 0 deletions app/views/additional_details/submissions/edit.js.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ $('#submissionModal .modal-body').html("<%= j render 'form' %>")
$('.submission-btn').remove()
$('#submissionModal .modal-footer').html("<a href='javascript:void(0)' class='btn btn-primary update-submission' data-id='<%=@submission.id %>'>Update Submission</a>")
$('#submissionModal').modal('show')
$('.selectpicker').selectpicker()
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
%div{ class: 'input-group date', id: 'datetimepicker' }
%input{ type: 'text', class: 'form-control' }
.input-group#datetimepicker
= qr.text_field :content, class: 'form-control'
%span.input-group-addon
%span.glyphicon.glyphicon-calendar
Original file line number Diff line number Diff line change
@@ -1 +1 @@
= qr.select :content, options_for_select(item.item_options.collect { |io| [ io.content, io.content ] } ), {}, { class: 'form-control' }
= qr.select :content, options_for_select(item.item_options.collect { |io| [ io.content, io.content ] }, qr.object.content ), {}, { class: 'form-control' }
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,19 @@
fake_login_for_each_test

before :each do
institution = create(:institution, name: "Institution")
provider = create(:provider, name: "Provider", parent: institution)
program = create(:program, name: "Program", parent: provider, process_ssrs: true)
service = create(:service_with_pricing_map, name: 'Brain Removal')
@protocol = create(:protocol_federally_funded, type: 'Study', primary_pi: jug2)
@sr = create(:service_request_without_validations, status: 'first_draft', protocol: @protocol)
ssr = create(:sub_service_request_without_validations, service_request: @sr, organization: program, status: 'first_draft')
create(:line_item, service_request: @sr, sub_service_request: ssr, service: service)
create(:arm, protocol: @protocol, visit_count: 1)
questionnaire = create(:questionnaire, :without_validations, service: service, name: 'Does your brain hurt?')
item = create(:item, questionnaire: questionnaire, content: 'How is your brain? Does it hurt and need to be removed?',
item_type: 'yes_no')
institution = create(:institution, name: "Institution")
provider = create(:provider, name: "Provider", parent: institution)
program = create(:program, name: "Program", parent: provider, process_ssrs: true)
service = create(:service_with_pricing_map, name: 'Brain Removal')
@protocol = create(:protocol_federally_funded, type: 'Study', primary_pi: jug2)
@sr = create(:service_request_without_validations, status: 'first_draft', protocol: @protocol)
ssr = create(:sub_service_request_without_validations, service_request: @sr, organization: program, status: 'first_draft')
create(:line_item, service_request: @sr, sub_service_request: ssr, service: service)
create(:arm, protocol: @protocol, visit_count: 1)
questionnaire = create(:questionnaire, :without_validations, service: service, name: 'Does your brain hurt?')
item = create(:item, questionnaire: questionnaire, content: 'How is your brain? Does it hurt and need to be removed?', item_type: 'yes_no')
item2 = create(:item, questionnaire: questionnaire, content: 'Emails make me feel sassy', item_type: 'email')
item3 = create(:item, questionnaire: questionnaire, content: "Oh, I'll get you a toe, dude", item_type: 'phone')
visit document_management_service_request_path(@sr)
wait_for_javascript_to_finish
end
Expand All @@ -29,18 +30,34 @@
end
end

it 'should be able to see the submission modal' do
before :each do
click_link 'Complete Form Functionality'
wait_for_javascript_to_finish
end

it 'should be able to see the submission modal' do
expect(page).to have_content('Questionnaire Submission')
end

it 'should be able to answer questionnaire and create a submission' do
click_link 'Complete Form Functionality'
choose 'Yes'
click_link 'Create Submission'
wait_for_javascript_to_finish
expect(page).to have_css('#submissionModal .modal-body form')
end

it 'should validate email format' do
find('#submission_questionnaire_responses_attributes_1_content').set('crazy pills')
sleep 1
click_link 'Create Submission'
expect(page).to have_content('Error')
end

it 'should validate phone format' do
find('#submission_questionnaire_responses_attributes_1_content').set('This is a not a phone number')
sleep 1
click_link 'Create Submission'
expect(page).to have_content('Error')
end
end
end