mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-07 13:38:18 -08:00
Add academic years as an ActiveRecord object
This commit is contained in:
parent
a7de5b9ac2
commit
e222edc7e7
10 changed files with 47 additions and 11 deletions
|
|
@ -28,7 +28,7 @@ class DashboardController < ApplicationController
|
|||
end
|
||||
|
||||
def academic_year
|
||||
@academic_year ||= params[:year]
|
||||
@academic_year ||= AcademicYear.find_by_range params[:year]
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
module DashboardHelper
|
||||
def format_academic_year(ay)
|
||||
years = ay.split('-')
|
||||
years = ay.range.split('-')
|
||||
"#{years.first} – 20#{years.second}"
|
||||
end
|
||||
end
|
||||
|
|
|
|||
3
app/models/academic_year.rb
Normal file
3
app/models/academic_year.rb
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
class AcademicYear < ActiveRecord::Base
|
||||
|
||||
end
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
class SurveyItemResponse < ActiveRecord::Base
|
||||
belongs_to :academic_year
|
||||
belongs_to :school
|
||||
belongs_to :survey_item
|
||||
end
|
||||
|
|
|
|||
8
db/migrate/20210921154637_create_academic_years.rb
Normal file
8
db/migrate/20210921154637_create_academic_years.rb
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
class CreateAcademicYears < ActiveRecord::Migration[5.0]
|
||||
def change
|
||||
create_table :academic_years do |t|
|
||||
t.string :range, null: false, unique: true
|
||||
t.index :range, unique: true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
class AddForeignKeyFromSurveyItemResponsesToAcademicYear < ActiveRecord::Migration[5.0]
|
||||
def up
|
||||
remove_column :survey_item_responses, :academic_year
|
||||
add_column :survey_item_responses, :academic_year_id, :integer, null: false
|
||||
add_foreign_key :survey_item_responses, :academic_years
|
||||
end
|
||||
|
||||
def down
|
||||
remove_foreign_key :survey_item_responses, :academic_years
|
||||
remove_column :survey_item_responses, :academic_year_id
|
||||
add_column :survey_item_responses, :academic_year, :string
|
||||
end
|
||||
end
|
||||
16
db/schema.rb
16
db/schema.rb
|
|
@ -10,11 +10,16 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20210921133545) do
|
||||
ActiveRecord::Schema.define(version: 20210921155142) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
||||
create_table "academic_years", force: :cascade do |t|
|
||||
t.string "range", null: false
|
||||
t.index ["range"], name: "index_academic_years_on_range", unique: true, using: :btree
|
||||
end
|
||||
|
||||
create_table "attempts", force: :cascade do |t|
|
||||
t.integer "recipient_id"
|
||||
t.integer "schedule_id"
|
||||
|
|
@ -218,11 +223,11 @@ ActiveRecord::Schema.define(version: 20210921133545) do
|
|||
end
|
||||
|
||||
create_table "survey_item_responses", force: :cascade do |t|
|
||||
t.string "academic_year"
|
||||
t.integer "likert_score"
|
||||
t.integer "school_id", null: false
|
||||
t.integer "survey_item_id", null: false
|
||||
t.string "response_id", null: false
|
||||
t.integer "school_id", null: false
|
||||
t.integer "survey_item_id", null: false
|
||||
t.string "response_id", null: false
|
||||
t.integer "academic_year_id", null: false
|
||||
end
|
||||
|
||||
create_table "survey_items", force: :cascade do |t|
|
||||
|
|
@ -262,6 +267,7 @@ ActiveRecord::Schema.define(version: 20210921133545) do
|
|||
add_foreign_key "school_categories", "categories"
|
||||
add_foreign_key "school_categories", "schools"
|
||||
add_foreign_key "subcategories", "sqm_categories"
|
||||
add_foreign_key "survey_item_responses", "academic_years"
|
||||
add_foreign_key "survey_item_responses", "schools"
|
||||
add_foreign_key "survey_item_responses", "survey_items"
|
||||
add_foreign_key "survey_items", "measures"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
require 'csv'
|
||||
|
||||
academic_year_ranges = ['2020-21', '2021-22']
|
||||
academic_year_ranges.each do |range|
|
||||
AcademicYear.create range: range if AcademicYear.find_by_range(range).nil?
|
||||
end
|
||||
|
||||
qualtrics_district_and_school_code_key = File.read(Rails.root.join('data', 'qualtrics_district_and_school_code_key.csv'))
|
||||
CSV.parse(qualtrics_district_and_school_code_key, headers: true).each do |row|
|
||||
district_name = row['District']
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ feature "School dashboard", type: feature do
|
|||
|
||||
let(:measure_row_bars) { page.all('rect.measure-row-bar') }
|
||||
|
||||
let(:ay_2020_21) { '2020-21' }
|
||||
let(:ay_2020_21) { AcademicYear.find_by_range '2020-21' }
|
||||
|
||||
before :each do
|
||||
SurveyItemResponse.create response_id: '123abc', academic_year: ay_2020_21, school: school, survey_item: survey_item_1_for_measure, likert_score: 4
|
||||
|
|
@ -29,7 +29,7 @@ feature "School dashboard", type: feature do
|
|||
scenario "User views a school dashboard" do
|
||||
page.driver.browser.basic_authorize(username, password)
|
||||
|
||||
visit "/districts/winchester/schools/#{school.slug}/dashboard?year=#{ay_2020_21}"
|
||||
visit "/districts/#{district.slug}/schools/#{school.slug}/dashboard?year=#{ay_2020_21.range}"
|
||||
|
||||
expect(page).to have_select('academic-year', selected: '2020 – 2021')
|
||||
expect(page).to have_select('district', selected: 'Winchester')
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ describe SurveyResponseAggregator, type: :model do
|
|||
let(:category) { SqmCategory.create }
|
||||
let(:subcategory) { Subcategory.create sqm_category: category }
|
||||
|
||||
let(:ay_2020_21) { '2020-21' }
|
||||
let(:ay_2021_22) { '2021-22' }
|
||||
let(:ay_2020_21) { AcademicYear.find_by_range '2020-21' }
|
||||
let(:ay_2021_22) { AcademicYear.find_by_range '2021-22' }
|
||||
|
||||
let(:school_a) { School.create name: 'School A' }
|
||||
let(:school_b) { School.create name: 'School A' }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue