Skip to content

Commit

Permalink
add tests for teachercon1819 registration model
Browse files Browse the repository at this point in the history
  • Loading branch information
Hamms committed Jan 10, 2018
1 parent b920634 commit a095e17
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 14 deletions.
30 changes: 16 additions & 14 deletions dashboard/app/models/pd/teachercon1819_registration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class Pd::Teachercon1819Registration < ActiveRecord::Base
include Pd::Form
include Teachercon1819RegistrationConstants

belongs_to :pd_application, class_name: 'Pd::Application::ApplicationBase'

YES = 'Yes'.freeze
NO = 'No'.freeze
YES_OR_NO = [YES, NO].freeze
Expand Down Expand Up @@ -58,22 +60,22 @@ def self.options

def self.required_fields
[
:preferredFirstName,
:lastName,
:preferred_first_name,
:last_name,
:email,
:phone,
:teacherAcceptSeat,
:contactFirstName,
:contactLastName,
:contactRelationship,
:contactPhone,
:dietaryNeeds,
:liveFarAway,
:howTraveling,
:needHotel,
:photoRelease,
:liabilityWaiver,
:agreeShareContact,
:teacher_accept_seat,
:contact_first_name,
:contact_last_name,
:contact_relationship,
:contact_phone,
:dietary_needs,
:live_far_away,
:how_traveling,
:need_hotel,
:photo_release,
:liability_waiver,
:agree_share_contact,
].freeze
end

Expand Down
53 changes: 53 additions & 0 deletions dashboard/test/factories/pd_factories.rb
Original file line number Diff line number Diff line change
Expand Up @@ -759,4 +759,57 @@
course 'csp'
form_data {build(:pd_principal_approval1819_application_hash, course: course, approved: approved, replace_course: replace_course).to_json}
end

factory :pd_teachercon1819_registration_hash, class: 'Hash' do
transient do
accepted true
end

initialize_with do
{
email: "ssnape@hogwarts.edu",
preferredFirstName: "Sevvy",
lastName: "Snape",
phone: "5558675309",
}.tap do |hash|
if accepted
hash.merge!(
{
teacherAcceptSeat: "Yes, I accept my seat in the Professional Learning Program",
addressCity: "Albuquerque",
addressState: "Alabama",
addressStreet: "123 Street Ave",
addressZip: "12345",
agreeShareContact: true,
contactFirstName: "Dumble",
contactLastName: "Dore",
contactPhone: "1597534862",
contactRelationship: "it's complicated",
dietaryNeeds: "Food Allergy",
dietaryNeeds_food_allergy_details: "memories",
howTraveling: "Amtrak or regional train service",
liabilityWaiver: "Yes",
liveFarAway: "Yes",
needHotel: "No",
photoRelease: "Yes",
}
)
else
hash.merge!(
{
teacherAcceptSeat: "No, I decline my seat in the Professional Learning Program.",
}
)
end
end.stringify_keys
end
end

factory :pd_teachercon1819_registration, class: 'Pd::Teachercon1819Registration' do
association :pd_application, factory: :pd_teacher1819_application
transient do
accepted false
end
form_data {build(:pd_teachercon1819_registration_hash, accepted: accepted).to_json}
end
end
45 changes: 45 additions & 0 deletions dashboard/test/models/pd/teachercon1819_registration_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
require 'test_helper'

class Pd::Teachercon1819RegistrationTest < ActiveSupport::TestCase
test 'required field validations' do
registration = Pd::Teachercon1819Registration.new
refute registration.valid?
assert_equal [
"Form data is required",
], registration.errors.full_messages

registration.form_data = {}.to_json
refute registration.valid?
assert_equal [
"Form data preferredFirstName",
"Form data lastName",
"Form data email",
"Form data phone",
"Form data teacherAcceptSeat",
"Form data contactFirstName",
"Form data contactLastName",
"Form data contactRelationship",
"Form data contactPhone",
"Form data dietaryNeeds",
"Form data liveFarAway",
"Form data howTraveling",
"Form data needHotel",
"Form data photoRelease",
"Form data liabilityWaiver",
"Form data agreeShareContact",
], registration.errors.full_messages

registration.pd_application = create(:pd_teacher1819_application)
registration.form_data = build(:pd_teachercon1819_registration_hash).to_json

assert registration.valid?
end

test 'declined application requires fewer fields' do
registration = create(:pd_teachercon1819_registration, accepted: false)

assert registration.valid?
refute registration.sanitize_form_data_hash.key?(:contact_first_name)
refute registration.sanitize_form_data_hash.key?(:dietary_needs)
end
end

0 comments on commit a095e17

Please sign in to comment.