mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-07 21:48:16 -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
|
end
|
||||||
|
|
||||||
def academic_year
|
def academic_year
|
||||||
@academic_year ||= params[:year]
|
@academic_year ||= AcademicYear.find_by_range params[:year]
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
module DashboardHelper
|
module DashboardHelper
|
||||||
def format_academic_year(ay)
|
def format_academic_year(ay)
|
||||||
years = ay.split('-')
|
years = ay.range.split('-')
|
||||||
"#{years.first} – 20#{years.second}"
|
"#{years.first} – 20#{years.second}"
|
||||||
end
|
end
|
||||||
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
|
class SurveyItemResponse < ActiveRecord::Base
|
||||||
|
belongs_to :academic_year
|
||||||
belongs_to :school
|
belongs_to :school
|
||||||
belongs_to :survey_item
|
belongs_to :survey_item
|
||||||
end
|
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.
|
# 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
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
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|
|
create_table "attempts", force: :cascade do |t|
|
||||||
t.integer "recipient_id"
|
t.integer "recipient_id"
|
||||||
t.integer "schedule_id"
|
t.integer "schedule_id"
|
||||||
|
|
@ -218,11 +223,11 @@ ActiveRecord::Schema.define(version: 20210921133545) do
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "survey_item_responses", force: :cascade do |t|
|
create_table "survey_item_responses", force: :cascade do |t|
|
||||||
t.string "academic_year"
|
|
||||||
t.integer "likert_score"
|
t.integer "likert_score"
|
||||||
t.integer "school_id", null: false
|
t.integer "school_id", null: false
|
||||||
t.integer "survey_item_id", null: false
|
t.integer "survey_item_id", null: false
|
||||||
t.string "response_id", null: false
|
t.string "response_id", null: false
|
||||||
|
t.integer "academic_year_id", null: false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "survey_items", force: :cascade do |t|
|
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", "categories"
|
||||||
add_foreign_key "school_categories", "schools"
|
add_foreign_key "school_categories", "schools"
|
||||||
add_foreign_key "subcategories", "sqm_categories"
|
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", "schools"
|
||||||
add_foreign_key "survey_item_responses", "survey_items"
|
add_foreign_key "survey_item_responses", "survey_items"
|
||||||
add_foreign_key "survey_items", "measures"
|
add_foreign_key "survey_items", "measures"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,10 @@
|
||||||
require 'csv'
|
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'))
|
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|
|
CSV.parse(qualtrics_district_and_school_code_key, headers: true).each do |row|
|
||||||
district_name = row['District']
|
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(: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
|
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
|
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
|
scenario "User views a school dashboard" do
|
||||||
page.driver.browser.basic_authorize(username, password)
|
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('academic-year', selected: '2020 – 2021')
|
||||||
expect(page).to have_select('district', selected: 'Winchester')
|
expect(page).to have_select('district', selected: 'Winchester')
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@ describe SurveyResponseAggregator, type: :model do
|
||||||
let(:category) { SqmCategory.create }
|
let(:category) { SqmCategory.create }
|
||||||
let(:subcategory) { Subcategory.create sqm_category: category }
|
let(:subcategory) { Subcategory.create sqm_category: category }
|
||||||
|
|
||||||
let(:ay_2020_21) { '2020-21' }
|
let(:ay_2020_21) { AcademicYear.find_by_range '2020-21' }
|
||||||
let(:ay_2021_22) { '2021-22' }
|
let(:ay_2021_22) { AcademicYear.find_by_range '2021-22' }
|
||||||
|
|
||||||
let(:school_a) { School.create name: 'School A' }
|
let(:school_a) { School.create name: 'School A' }
|
||||||
let(:school_b) { School.create name: 'School A' }
|
let(:school_b) { School.create name: 'School A' }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue