From 784e23982e3e4cd2d752a82cb62793d784fd8105 Mon Sep 17 00:00:00 2001 From: rebuilt Date: Fri, 23 Jun 2023 11:26:53 -0700 Subject: [PATCH] feat: update survey_item_response table to indlude recorded date and import recorded date when loading responses --- app/services/survey_responses_data_loader.rb | 5 ++-- ...d_recorded_date_to_survey_item_response.rb | 5 ++++ db/schema.rb | 3 ++- .../survey_responses_data_loader_spec.rb | 24 +++++++++++++++++++ 4 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20230622224103_add_recorded_date_to_survey_item_response.rb diff --git a/app/services/survey_responses_data_loader.rb b/app/services/survey_responses_data_loader.rb index 8c2b68d1..9245e210 100644 --- a/app/services/survey_responses_data_loader.rb +++ b/app/services/survey_responses_data_loader.rb @@ -56,7 +56,6 @@ class SurveyResponsesDataLoader return if rule.new(row:).skip_row? end - # byebug if row.response_id == 'butler_student_survey_response_1' process_survey_items(row:) end @@ -77,11 +76,11 @@ class SurveyResponsesDataLoader gender = row.gender grade = row.grade if survey_item_response.present? - survey_item_response.update!(likert_score:, grade:, gender:) + survey_item_response.update!(likert_score:, grade:, gender:, recorded_date: row.recorded_date) [] else SurveyItemResponse.new(response_id: row.response_id, academic_year: row.academic_year, school: row.school, survey_item:, - likert_score:, grade:, gender:) + likert_score:, grade:, gender:, recorded_date: row.recorded_date) end end diff --git a/db/migrate/20230622224103_add_recorded_date_to_survey_item_response.rb b/db/migrate/20230622224103_add_recorded_date_to_survey_item_response.rb new file mode 100644 index 00000000..90aae498 --- /dev/null +++ b/db/migrate/20230622224103_add_recorded_date_to_survey_item_response.rb @@ -0,0 +1,5 @@ +class AddRecordedDateToSurveyItemResponse < ActiveRecord::Migration[7.0] + def change + add_column :survey_item_responses, :recorded_date, :datetime + end +end diff --git a/db/schema.rb b/db/schema.rb index f1a96c04..cf70b8d5 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2023_06_10_165508) do +ActiveRecord::Schema[7.0].define(version: 2023_06_22_224103) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" @@ -444,6 +444,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_06_10_165508) do t.bigint "student_id" t.integer "grade" t.bigint "gender_id" + t.datetime "recorded_date" t.index ["academic_year_id"], name: "index_survey_item_responses_on_academic_year_id" t.index ["gender_id"], name: "index_survey_item_responses_on_gender_id" t.index ["response_id"], name: "index_survey_item_responses_on_response_id" diff --git a/spec/services/survey_responses_data_loader_spec.rb b/spec/services/survey_responses_data_loader_spec.rb index 89ed7329..2ed58ca1 100644 --- a/spec/services/survey_responses_data_loader_spec.rb +++ b/spec/services/survey_responses_data_loader_spec.rb @@ -97,6 +97,7 @@ describe SurveyResponsesDataLoader do it "ensures teacher responses load correctly" do assigns_academic_year_to_survey_item_responses assigns_school_to_the_survey_item_responses + assigns_recorded_date_to_teacher_responses loads_survey_item_responses_for_a_given_survey_response loads_all_survey_item_responses_for_a_given_survey_item captures_likert_scores_for_survey_item_responses @@ -112,6 +113,7 @@ describe SurveyResponsesDataLoader do it "ensures student responses load correctly" do assigns_academic_year_to_student_survey_item_responses assigns_school_to_student_survey_item_responses + assigns_recorded_date_to_student_responses loads_student_survey_item_response_values student_survey_item_response_count_matches_expected captures_likert_scores_for_student_survey_item_responses @@ -297,3 +299,25 @@ def assigns_gender_to_responses expect(SurveyItemResponse.where(response_id: key).first.gender).to eq value end end + +def assigns_recorded_date_to_student_responses + results = {"student_survey_response_1" => "2020-09-30T18:48:50", + "student_survey_response_3" => "2021-03-31T09:59:02", + "student_survey_response_4" => "2021-03-31T10:00:17", + "student_survey_response_5" => "2021-03-31T10:01:36", + "student_survey_response_6" => "2021-03-31T10:01:37", + "student_survey_response_7" => "2021-03-31T10:01:38"} + results.each do |key, value| + expect(SurveyItemResponse.find_by_response_id(key).recorded_date).to eq Date.parse(value) + end +end + +def assigns_recorded_date_to_teacher_responses + results = {"teacher_survey_response_1" => "2020-10-16 11:09:03", + "teacher_survey_response_3" => "2020-12-06 8:36:52", + "teacher_survey_response_4" => "2020-12-06 8:51:25", + "teacher_survey_response_5" => "2020-12-06 8:55:58"} + results.each do |key, value| + expect(SurveyItemResponse.find_by_response_id(key).recorded_date).to eq Date.parse(value) + end +end