FactoryBot.define do factory :parent_language do parent { nil } language { nil } end factory :language do designation { "MyString" } end factory :housing do designation { "MyString" } end factory :parent do response_id { "MyString" } number_of_children { 1 } end factory :income do designation { "DefaultIncome" } end factory :ell do designation { "DefaultEll" } end factory :gender do qualtrics_code { 1 } designation { "MyString" } end factory :race_score do measure { nil } school { nil } academic_year { nil } race { nil } average { 1.5 } meets_student_threshold { false } end factory :student do response_id { "ID#{rand}" } lasid { "Lasid#{rand}" } end factory :student_race do student { nil } race { nil } end factory :race do designation { "Race#{rand}" } qualtrics_code { 1 } end factory :response_rate do subcategory { nil } school { nil } academic_year { nil } student_response_rate { 1.5 } teacher_response_rate { 1.5 } meets_student_threshold { false } meets_teacher_threshold { false } end factory :admin_data_value do likert_score { 1.5 } school admin_data_item academic_year end factory :survey do form { 0 } academic_year school end factory :district do name { "#{rand} District" } slug { name.parameterize } end factory :school do name { "#{rand} School" } slug { name.parameterize } sequence(:dese_id, 1000) district end factory :academic_year do range { "2050-51" } initialize_with { AcademicYear.find_or_initialize_by(range:) } end factory :category, class: "Category" do name { "A #{rand} category" } category_id { rand.to_s } description { "A description of a category" } slug { name.parameterize } sort_index { 1 } end factory :subcategory do name { "A subcategory" } subcategory_id { rand.to_s } description { "A description of a subcategory" } category factory :subcategory_with_measures do transient do measures_count { 2 } end after(:create) do |subcategory, evaluator| create_list(:measure, evaluator.measures_count, subcategory:).each do |measure| scale = create(:scale, measure:) survey_item = create(:teacher_survey_item, scale:) create_list(:survey_item_response, SurveyItemResponse::TEACHER_RESPONSE_THRESHOLD, survey_item:) end end end end factory :measure do measure_id { rand.to_s } name { "A Measure" } subcategory trait :with_student_survey_items do after(:create) do |measure| create(:student_scale, measure:) do |scale| create_list(:student_survey_item, 2, scale:) end end end trait :with_admin_data_items do after(:create) do |measure| scale = create(:scale, measure:) create(:admin_data_item, scale:) end end end factory :scale do measure scale_id { "A Scale #{rand}" } factory :teacher_scale do scale_id { "t-#{rand}" } end factory :student_scale do scale_id { "s-#{rand}" } end factory :admin_scale do scale_id { "a-#{rand}" } end factory :parent_scale do scale_id { "p-#{rand}" } end end factory :survey_item do scale prompt { "What do YOU think?" } factory :teacher_survey_item do survey_item_id { "t-#{rand}" } watch_low_benchmark { 2.0 } growth_low_benchmark { 3.0 } approval_low_benchmark { 4.0 } ideal_low_benchmark { 4.5 } end factory :student_survey_item do survey_item_id { "s-#{rand}" } watch_low_benchmark { 2.0 } growth_low_benchmark { 3.0 } approval_low_benchmark { 4.0 } ideal_low_benchmark { 4.5 } end factory :early_education_survey_item do survey_item_id { "s-#{rand}-es#{rand}" } watch_low_benchmark { 2.0 } growth_low_benchmark { 3.0 } approval_low_benchmark { 4.0 } ideal_low_benchmark { 4.5 } end factory :parent_survey_item do survey_item_id { "p-#{rand}" } watch_low_benchmark { 2.0 } growth_low_benchmark { 3.0 } approval_low_benchmark { 4.0 } ideal_low_benchmark { 4.5 } end end factory :survey_item_response do likert_score { 3 } response_id { rand.to_s } grade { 1 } academic_year school survey_item factory: :teacher_survey_item end factory :admin_data_item do admin_data_item_id { rand.to_s } description { rand.to_s } scale end factory :respondent do school academic_year one { 40 } total_students { SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD * 4 } total_teachers { SurveyItemResponse::TEACHER_RESPONSE_THRESHOLD * 4 } end end