mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-07 21:48:16 -08:00
all sibling tests
This commit is contained in:
parent
25a7035861
commit
85d5252301
3 changed files with 69 additions and 22 deletions
|
|
@ -20,9 +20,17 @@ class Attempt < ApplicationRecord
|
|||
scope :with_no_response, -> { where('answer_index is null and open_response_id is null')}
|
||||
|
||||
def messages
|
||||
if student.present?
|
||||
intro = "#{student.name}'s school, "
|
||||
else
|
||||
intro = "Your child's school, "
|
||||
end
|
||||
|
||||
intro += "#{recipient.school.name}, would love your opinion on this question:"
|
||||
|
||||
[
|
||||
#question.text,
|
||||
"#{question.text}\r\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."
|
||||
"#{intro}\n\r#{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
|
||||
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@ describe "survey:attempt_questions" do
|
|||
|
||||
let(:students_recipient) { recipients[1] }
|
||||
let(:students_recipient_schedule) {
|
||||
recipient_schedule = students_recipient.recipient_schedules.for_schedule(schedule).first
|
||||
students_recipient.recipient_schedules.for_schedule(schedule).first
|
||||
}
|
||||
|
||||
describe 'With A FOR_CHILD Question Is Asked' do
|
||||
|
|
@ -232,18 +232,7 @@ describe "survey:attempt_questions" do
|
|||
expect(students_recipient_schedule.reload.next_attempt_at).to eq(Time.new)
|
||||
end
|
||||
|
||||
it 'should set the next_attempt_at to now when attempt is made on second student' do
|
||||
students_recipient.attempts.last.save_response(answer_index: 3)
|
||||
expect{students_recipient_schedule.attempt_question}.to change{students_recipient.attempts.count}.by(1)
|
||||
expect(students_recipient_schedule.reload.queued_question_ids).to be_present
|
||||
|
||||
attempt = students_recipient.attempts.last
|
||||
expect(attempt.student).to eq(students_recipient.students[1])
|
||||
attempt.save_response(answer_index: 4)
|
||||
expect(students_recipient_schedule.reload.next_attempt_at).to eq(Time.new)
|
||||
end
|
||||
|
||||
it 'should set the next_attempt_at in the future when an attempt is made on last student' do
|
||||
it 'should set the next_attempt_at in the future when an attempts are made on each student' do
|
||||
students_recipient.attempts.last.save_response(answer_index: 3)
|
||||
expect{students_recipient_schedule.attempt_question}.to change{students_recipient.attempts.count}.by(1)
|
||||
expect(students_recipient_schedule.reload.queued_question_ids).to be_present
|
||||
|
|
@ -267,15 +256,27 @@ describe "survey:attempt_questions" do
|
|||
expect(students_recipient_schedule.reload.next_attempt_at).to_not eq(date + 2.days)
|
||||
end
|
||||
|
||||
it 'should mention the students name in the text'
|
||||
it 'should mention the students name in the text' do
|
||||
expect(FakeSMS.messages[1].body).to match(/Student0's school, School, would love your opinion on this question/)
|
||||
end
|
||||
|
||||
it 'resends the question about the same student if not responded to'
|
||||
it 'should not mention the students name in the text if the recipient has no student specified' do
|
||||
expect(FakeSMS.messages[0].body).to match(/Your child's school, School, would love your opinion on this question/)
|
||||
end
|
||||
|
||||
it 'still sends when no students are present'
|
||||
it 'resends the question about the same student if not responded to' do
|
||||
message_count = FakeSMS.messages.length
|
||||
expect{students_recipient_schedule.attempt_question}.to change{students_recipient.attempts.count}.by(0)
|
||||
expect(FakeSMS.messages.length).to eq(message_count + 1)
|
||||
expect(FakeSMS.messages.last.body).to match(/Student0's school, School/)
|
||||
expect(FakeSMS.messages.last.body).to match(questions.first.text)
|
||||
end
|
||||
|
||||
it 'doesnt store any queued_question_ids when no students are present'
|
||||
it 'doesnt store any queued_question_ids when no students are present' do
|
||||
recipient_schedule = recipients[0].recipient_schedules.for_schedule(schedule).first
|
||||
expect(recipient_schedule.queued_question_ids).to be_nil
|
||||
end
|
||||
|
||||
it 'doesnt store any queued_question_ids when just one student is present'
|
||||
end
|
||||
|
||||
describe 'With A General Question Is Asked' do
|
||||
|
|
@ -283,13 +284,51 @@ describe "survey:attempt_questions" do
|
|||
subject.invoke
|
||||
end
|
||||
|
||||
it 'should not queue up an questions regardless of how many students there are'
|
||||
it 'should not queue up an questions regardless of how many students there are' do
|
||||
expect(students_recipient_schedule.queued_question_ids).to be_nil
|
||||
end
|
||||
|
||||
it 'should not mention the students name in the text'
|
||||
it 'should not mention the students name in the text' do
|
||||
FakeSMS.messages.each do |message|
|
||||
expect(message.body).to match(/Your child's school, School, would love your opinion on this question/)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
describe 'One Student In A Family' do
|
||||
|
||||
before :each do
|
||||
recipients[1].students.create(name: "Only Student")
|
||||
end
|
||||
|
||||
let(:students_recipient) { recipients[1] }
|
||||
let(:students_recipient_schedule) {
|
||||
students_recipient.recipient_schedules.for_schedule(schedule).first
|
||||
}
|
||||
|
||||
describe 'With A FOR_CHILD Question Is Asked' do
|
||||
let!(:date) { ActiveSupport::TimeZone["UTC"].parse(now.strftime("%Y-%m-%dT20:00:00%z")) }
|
||||
|
||||
before :each do
|
||||
questions.first.update_attributes(for_recipient_students: true)
|
||||
Timecop.freeze(date) { subject.invoke }
|
||||
end
|
||||
|
||||
it 'should create one attempt per recipient regardless of students' do
|
||||
expect(FakeSMS.messages.length).to eq(3)
|
||||
recipients.each do |recipient|
|
||||
expect(recipient.attempts.count).to eq(1)
|
||||
end
|
||||
end
|
||||
|
||||
it 'doesnt store any queued_question_ids' do
|
||||
expect(students_recipient_schedule.queued_question_ids).to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'Opted Out Recipient' do
|
||||
|
||||
before :each do
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ RSpec.describe Attempt, type: :model do
|
|||
# expect(FakeSMS.messages.first.body).to eq("Question 0:1")
|
||||
|
||||
expect(FakeSMS.messages.last.to).to eq('111111111')
|
||||
expect(FakeSMS.messages.last.body).to eq("Question 0:1\r\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("Your child's school, School, would love your opinion on this question:\n\rQuestion 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.")
|
||||
end
|
||||
|
||||
it 'should update sent_at' do
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue