mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-09 07:28:41 -07: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
|
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_school, only: [:show]
|
||||||
before_action :set_question, only: [:show, :edit, :update, :destroy]
|
before_action :set_question, only: [:show, :edit, :update, :destroy]
|
||||||
|
|
||||||
|
|
@ -78,4 +80,8 @@ class QuestionsController < ApplicationController
|
||||||
def question_params
|
def question_params
|
||||||
params.require(:question).permit(:text, :option1, :option2, :option3, :option4, :option5, :category_id)
|
params.require(:question).permit(:text, :option1, :option2, :option3, :option4, :option5, :category_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def verify_super_admin
|
||||||
|
user_signed_in? && current_user.super_admin?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,9 @@
|
||||||
class SchedulesController < ApplicationController
|
class SchedulesController < ApplicationController
|
||||||
|
before_action :authenticate_user!, except: [:show]
|
||||||
before_action :set_school
|
before_action :set_school
|
||||||
|
before_action :verify_admin
|
||||||
before_action :set_schedule, only: [:show, :edit, :update, :destroy]
|
before_action :set_schedule, only: [:show, :edit, :update, :destroy]
|
||||||
|
|
||||||
# GET schools/1/schedules
|
|
||||||
def index
|
|
||||||
@schedules = @school.schedules
|
|
||||||
end
|
|
||||||
|
|
||||||
# GET schools/1/schedules/1
|
# GET schools/1/schedules/1
|
||||||
def show
|
def show
|
||||||
end
|
end
|
||||||
|
|
@ -61,4 +58,11 @@ class SchedulesController < ApplicationController
|
||||||
def schedule_params
|
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)
|
params.require(:schedule).permit(:name, :description, :school_id, :frequency_hours, :start_date, :end_date, :active, :random, :recipient_list_id, :question_list_id)
|
||||||
end
|
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
|
end
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ class Attempt < ApplicationRecord
|
||||||
def messages
|
def messages
|
||||||
[
|
[
|
||||||
#question.text,
|
#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
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ class Category < ApplicationRecord
|
||||||
"resources",
|
"resources",
|
||||||
"indicators-of-academic-learning",
|
"indicators-of-academic-learning",
|
||||||
"character-and-wellbeing-outcomes",
|
"character-and-wellbeing-outcomes",
|
||||||
"family-questions"
|
"pilot-family-questions"
|
||||||
].index(root_identifier)
|
].index(root_identifier)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ class Recipient < ApplicationRecord
|
||||||
belongs_to :school
|
belongs_to :school
|
||||||
validates_associated :school
|
validates_associated :school
|
||||||
|
|
||||||
|
has_many :recipient_schedules
|
||||||
has_many :attempts
|
has_many :attempts
|
||||||
|
|
||||||
validates :name, presence: true
|
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
|
# This should return the minimal set of attributes required to create a valid
|
||||||
# Question. As you add validations to Question, be sure to
|
# Question. As you add validations to Question, be sure to
|
||||||
# adjust the attributes here as well.
|
# adjust the attributes here as well.
|
||||||
|
let!(:user) { User.create(email: 'test@test.com', password: '123456') }
|
||||||
let (:category) { Category.create!(name: 'Category') }
|
let (:category) { Category.create!(name: 'Category') }
|
||||||
let(:valid_attributes) {
|
let(:valid_attributes) {
|
||||||
{
|
{
|
||||||
|
|
@ -45,6 +46,10 @@ RSpec.describe QuestionsController, type: :controller do
|
||||||
# QuestionsController. Be sure to keep this updated too.
|
# QuestionsController. Be sure to keep this updated too.
|
||||||
let(:valid_session) { {} }
|
let(:valid_session) { {} }
|
||||||
|
|
||||||
|
before :each do
|
||||||
|
sign_in user
|
||||||
|
end
|
||||||
|
|
||||||
describe "GET #index" do
|
describe "GET #index" do
|
||||||
it "assigns all questions as @questions" do
|
it "assigns all questions as @questions" do
|
||||||
question = Question.create! valid_attributes
|
question = Question.create! valid_attributes
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe SchedulesController, type: :controller do
|
RSpec.describe SchedulesController, type: :controller do
|
||||||
|
|
||||||
|
let!(:user) { User.create(email: 'test@test.com', password: '123456') }
|
||||||
let!(:school) { School.create!(name: 'School') }
|
let!(:school) { School.create!(name: 'School') }
|
||||||
|
|
||||||
let!(:recipients) { create_recipients(school, 3) }
|
let!(:recipients) { create_recipients(school, 3) }
|
||||||
|
|
@ -54,12 +55,9 @@ RSpec.describe SchedulesController, type: :controller do
|
||||||
# SchedulesController. Be sure to keep this updated too.
|
# SchedulesController. Be sure to keep this updated too.
|
||||||
let(:valid_session) { {} }
|
let(:valid_session) { {} }
|
||||||
|
|
||||||
describe "GET #index" do
|
before :each do
|
||||||
it "assigns all schedules as @schedules" do
|
user.user_schools.create(school: school)
|
||||||
schedule = Schedule.create! valid_attributes
|
sign_in user
|
||||||
get :index, params: {school_id: school.id}, session: valid_session
|
|
||||||
expect(assigns(:schedules)).to eq([schedule])
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "GET #show" do
|
describe "GET #show" do
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ RSpec.describe Attempt, type: :model do
|
||||||
|
|
||||||
it 'should contact the Twilio API' do
|
it 'should contact the Twilio API' do
|
||||||
expect(FakeSMS.messages.length).to eq(1)
|
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')
|
expect(FakeSMS.messages.last.to).to eq('1111111111')
|
||||||
end
|
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