mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-07 21:48:16 -08:00
adding more authentication, fixing category bug
This commit is contained in:
parent
60a2982724
commit
42fd3edbae
10 changed files with 28 additions and 93 deletions
|
|
@ -1,4 +1,6 @@
|
|||
class QuestionsController < ApplicationController
|
||||
before_action :authenticate_user!, except: [:show]
|
||||
before_action :verify_super_admin, except: [:show]
|
||||
before_action :set_school, only: [:show]
|
||||
before_action :set_question, only: [:show, :edit, :update, :destroy]
|
||||
|
||||
|
|
@ -78,4 +80,8 @@ class QuestionsController < ApplicationController
|
|||
def question_params
|
||||
params.require(:question).permit(:text, :option1, :option2, :option3, :option4, :option5, :category_id)
|
||||
end
|
||||
|
||||
def verify_super_admin
|
||||
user_signed_in? && current_user.super_admin?
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,12 +1,9 @@
|
|||
class SchedulesController < ApplicationController
|
||||
before_action :authenticate_user!, except: [:show]
|
||||
before_action :set_school
|
||||
before_action :verify_admin
|
||||
before_action :set_schedule, only: [:show, :edit, :update, :destroy]
|
||||
|
||||
# GET schools/1/schedules
|
||||
def index
|
||||
@schedules = @school.schedules
|
||||
end
|
||||
|
||||
# GET schools/1/schedules/1
|
||||
def show
|
||||
end
|
||||
|
|
@ -61,4 +58,11 @@ class SchedulesController < ApplicationController
|
|||
def schedule_params
|
||||
params.require(:schedule).permit(:name, :description, :school_id, :frequency_hours, :start_date, :end_date, :active, :random, :recipient_list_id, :question_list_id)
|
||||
end
|
||||
|
||||
def verify_admin
|
||||
return true if current_user.admin?(@school)
|
||||
|
||||
redirect_to root_path, notice: 'You must be logged in as an admin of that school to access that page.'
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ class Attempt < ApplicationRecord
|
|||
def messages
|
||||
[
|
||||
#question.text,
|
||||
"#{question.text}\n#{question.option1}: Reply 1\n\r#{question.option2}: Reply 2\n\r#{question.option3}: Reply 3\n\r#{question.option4}: Reply 4\n\r#{question.option5}: Reply 5\n\rReply 'stop' to stop these messages."
|
||||
"#{question.text}\n\r#{question.option1}: Reply 1\n\r#{question.option2}: Reply 2\n\r#{question.option3}: Reply 3\n\r#{question.option4}: Reply 4\n\r#{question.option5}: Reply 5\n\rReply 'stop' to stop these messages."
|
||||
]
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ class Category < ApplicationRecord
|
|||
"resources",
|
||||
"indicators-of-academic-learning",
|
||||
"character-and-wellbeing-outcomes",
|
||||
"family-questions"
|
||||
"pilot-family-questions"
|
||||
].index(root_identifier)
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ class Recipient < ApplicationRecord
|
|||
belongs_to :school
|
||||
validates_associated :school
|
||||
|
||||
has_many :recipient_schedules
|
||||
has_many :attempts
|
||||
|
||||
validates :name, presence: true
|
||||
|
|
|
|||
|
|
@ -1,33 +0,0 @@
|
|||
%h1 Listing schedules
|
||||
%table
|
||||
%tr
|
||||
%th Name
|
||||
%th Description
|
||||
%th School
|
||||
%th Frequency hours
|
||||
%th Start date
|
||||
%th End date
|
||||
%th Active
|
||||
%th Random
|
||||
%th Recipient list
|
||||
%th Question list
|
||||
%th
|
||||
%th
|
||||
%th
|
||||
- @schedules.each do |schedule|
|
||||
%tr
|
||||
%td= schedule.name
|
||||
%td= schedule.description
|
||||
%td= schedule.school.name
|
||||
%td= schedule.frequency_hours
|
||||
%td= schedule.start_date
|
||||
%td= schedule.end_date
|
||||
%td= schedule.active
|
||||
%td= schedule.random
|
||||
%td= schedule.recipient_list.name
|
||||
%td= schedule.question_list.name
|
||||
%td= link_to 'Show', [schedule.school, schedule]
|
||||
%td= link_to 'Edit', edit_school_schedule_path(schedule.school, schedule)
|
||||
%td= link_to 'Destroy', [schedule.school, schedule], :confirm => 'Are you sure?', :method => :delete
|
||||
%br/
|
||||
= link_to 'New Schedule', new_school_schedule_path(@school)
|
||||
|
|
@ -23,6 +23,7 @@ RSpec.describe QuestionsController, type: :controller do
|
|||
# This should return the minimal set of attributes required to create a valid
|
||||
# Question. As you add validations to Question, be sure to
|
||||
# adjust the attributes here as well.
|
||||
let!(:user) { User.create(email: 'test@test.com', password: '123456') }
|
||||
let (:category) { Category.create!(name: 'Category') }
|
||||
let(:valid_attributes) {
|
||||
{
|
||||
|
|
@ -45,6 +46,10 @@ RSpec.describe QuestionsController, type: :controller do
|
|||
# QuestionsController. Be sure to keep this updated too.
|
||||
let(:valid_session) { {} }
|
||||
|
||||
before :each do
|
||||
sign_in user
|
||||
end
|
||||
|
||||
describe "GET #index" do
|
||||
it "assigns all questions as @questions" do
|
||||
question = Question.create! valid_attributes
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ require 'rails_helper'
|
|||
|
||||
RSpec.describe SchedulesController, type: :controller do
|
||||
|
||||
let!(:user) { User.create(email: 'test@test.com', password: '123456') }
|
||||
let!(:school) { School.create!(name: 'School') }
|
||||
|
||||
let!(:recipients) { create_recipients(school, 3) }
|
||||
|
|
@ -54,12 +55,9 @@ RSpec.describe SchedulesController, type: :controller do
|
|||
# SchedulesController. Be sure to keep this updated too.
|
||||
let(:valid_session) { {} }
|
||||
|
||||
describe "GET #index" do
|
||||
it "assigns all schedules as @schedules" do
|
||||
schedule = Schedule.create! valid_attributes
|
||||
get :index, params: {school_id: school.id}, session: valid_session
|
||||
expect(assigns(:schedules)).to eq([schedule])
|
||||
end
|
||||
before :each do
|
||||
user.user_schools.create(school: school)
|
||||
sign_in user
|
||||
end
|
||||
|
||||
describe "GET #show" do
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ RSpec.describe Attempt, type: :model do
|
|||
|
||||
it 'should contact the Twilio API' do
|
||||
expect(FakeSMS.messages.length).to eq(1)
|
||||
expect(FakeSMS.messages.last.body).to eq("Question 0:1\nOption 0:1 A: Reply 1\n\rOption 0:1 B: Reply 2\n\rOption 0:1 C: Reply 3\n\rOption 0:1 D: Reply 4\n\rOption 0:1 E: Reply 5\n\rReply 'stop' to stop these messages.")
|
||||
expect(FakeSMS.messages.last.body).to eq("Question 0:1\n\rOption 0:1 A: Reply 1\n\rOption 0:1 B: Reply 2\n\rOption 0:1 C: Reply 3\n\rOption 0:1 D: Reply 4\n\rOption 0:1 E: Reply 5\n\rReply 'stop' to stop these messages.")
|
||||
expect(FakeSMS.messages.last.to).to eq('1111111111')
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,46 +0,0 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe "schedules/index", type: :view do
|
||||
before(:each) do
|
||||
@question_list = QuestionList.create!(name: 'Parents Questions', question_id_array: [1, 2, 3])
|
||||
|
||||
@school = assign(:school, School.create!(name: 'School'))
|
||||
|
||||
@recipient_list = RecipientList.create!(name: 'Parents', recipient_id_array: [1, 2, 3], school: @school)
|
||||
|
||||
assign(:schedules, [
|
||||
Schedule.create!(
|
||||
:name => "Name",
|
||||
:description => "MyText",
|
||||
:school_id => @school.id,
|
||||
:frequency_hours => 3,
|
||||
:active => false,
|
||||
:random => false,
|
||||
:recipient_list_id => @recipient_list.id,
|
||||
:question_list_id => @question_list.id
|
||||
),
|
||||
Schedule.create!(
|
||||
:name => "Name",
|
||||
:description => "MyText",
|
||||
:school_id => @school.id,
|
||||
:frequency_hours => 3,
|
||||
:active => false,
|
||||
:random => true,
|
||||
:recipient_list_id => @recipient_list.id,
|
||||
:question_list_id => @question_list.id,
|
||||
)
|
||||
])
|
||||
end
|
||||
|
||||
it "renders a list of schedules" do
|
||||
render
|
||||
assert_select "tr>td", :text => "Name".to_s, :count => 2
|
||||
assert_select "tr>td", :text => "MyText".to_s, :count => 2
|
||||
assert_select "tr>td", :text => @school.name, :count => 2
|
||||
assert_select "tr>td", :text => 3.to_s, :count => 2
|
||||
assert_select "tr>td", :text => false.to_s, :count => 3
|
||||
assert_select "tr>td", :text => true.to_s, :count => 1
|
||||
assert_select "tr>td", :text => @recipient_list.name, :count => 2
|
||||
assert_select "tr>td", :text => @question_list.name, :count => 2
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue