Skip to content

Commit 666079f

Browse files
committed
Fixed specs failing due to course_member method and added specs for it
1 parent b25eefd commit 666079f

File tree

5 files changed

+46
-17
lines changed

5 files changed

+46
-17
lines changed

lib/openstax/biglearn/api/real_client.rb

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -376,11 +376,11 @@ def create_update_assignments(requests)
376376

377377
biglearn_requests = requests.map do |request|
378378
task = request.fetch(:task)
379+
student = task.taskings.first.try!(:role).try!(:course_member)
380+
next if student.nil?
381+
379382
ecosystem = task.ecosystem
380-
role = task.taskings.first.try!(:role)
381-
next if role.nil?
382383

383-
student = role.course_member
384384
task_type = task.practice? ? 'practice' : task.task_type
385385

386386
opens_at = task.opens_at
@@ -450,11 +450,15 @@ def create_update_assignments(requests)
450450
# Records the given student responses
451451
def record_responses(requests)
452452
biglearn_requests = requests.map do |request|
453-
course = request.fetch(:course)
454453
tasked_exercise = request.fetch(:tasked_exercise)
455454
task = tasked_exercise.task_step.task
456-
role = task.taskings.first.role
455+
role = task.taskings.first.try!(:role)
456+
next if role.nil?
457+
457458
student = role.course_member
459+
next if student.nil?
460+
461+
course = request.fetch(:course)
458462

459463
{
460464
response_uuid: request.fetch(:response_uuid),
@@ -468,7 +472,7 @@ def record_responses(requests)
468472
is_real_response: !course.is_preview && !course.is_test && !role.teacher_student?,
469473
responded_at: tasked_exercise.updated_at.utc.iso8601(6)
470474
}
471-
end
475+
end.compact
472476

473477
bulk_api_request(
474478
url: :record_responses,
@@ -484,9 +488,9 @@ def record_responses(requests)
484488
def fetch_assignment_pes(requests)
485489
biglearn_requests = requests.map do |request|
486490
task = request.fetch(:task)
487-
role = task.taskings.first.role
488-
student = role.course_member
489-
course = student.course
491+
course = task.taskings.first.try!(:role).try!(:course)
492+
next if course.nil?
493+
490494
max_num_exercises = request[:max_num_exercises]
491495
algorithm_name = course.biglearn_assignment_pes_algorithm_name ||
492496
Settings::Biglearn.assignment_pes_algorithm_name.to_s
@@ -508,9 +512,9 @@ def fetch_assignment_pes(requests)
508512
def fetch_assignment_spes(requests)
509513
biglearn_requests = requests.map do |request|
510514
task = request.fetch(:task)
511-
role = task.taskings.first.role
512-
student = role.course_member
513-
course = student.course
515+
course = task.taskings.first.try!(:role).try!(:course)
516+
next if course.nil?
517+
514518
max_num_exercises = request[:max_num_exercises]
515519
algorithm_name = course.biglearn_assignment_spes_algorithm_name ||
516520
Settings::Biglearn.assignment_spes_algorithm_name.to_s

spec/factories/tasks/tasked_task_plan.rb

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,10 @@
5757

5858
after(:build) do |task_plan, evaluator|
5959
course = task_plan.owner
60-
period = course.periods.first ||
61-
FactoryBot.create(:course_membership_period, course: course)
60+
period = course.periods.first || FactoryBot.create(:course_membership_period, course: course)
6261

6362
evaluator.number_of_students.times do
64-
user = create :user
65-
role = Role::GetDefaultUserRole[user]
66-
CourseMembership::AddStudent.call(period: period, role: role)
63+
AddUserAsPeriodStudent.call(user: create(:user), period: period)
6764
end
6865

6966
task_plan.tasking_plans = [build(:tasks_tasking_plan, task_plan: task_plan, target: period)]

spec/models/entity/role_spec.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,18 @@
77

88
it { is_expected.to have_one(:student).dependent(:destroy) }
99
it { is_expected.to have_one(:teacher).dependent(:destroy) }
10+
it { is_expected.to have_one(:teacher_student).dependent(:destroy) }
1011

1112
it { is_expected.to belong_to(:profile) }
1213

1314
[:username, :first_name, :last_name, :full_name, :name].each do |delegated_method|
1415
it { is_expected.to delegate_method(delegated_method).to(:profile) }
1516
end
1617

18+
[:course, :course_profile_course_id].each do |delegated_method|
19+
it { is_expected.to delegate_method(delegated_method).to(:course_member) }
20+
end
21+
1722
it { is_expected.to validate_uniqueness_of(:research_identifier) }
1823

1924
context 'research_identifier' do
@@ -39,4 +44,19 @@
3944
expect(enrollment.student.role.latest_enrollment_at).to eq enrollment.created_at
4045
end
4146
end
47+
48+
context 'course_member' do
49+
it 'returns the course_member based on the role type' do
50+
expect(role.course_member).to be_nil
51+
52+
student = FactoryBot.create(:course_membership_student)
53+
expect(student.role.course_member).to eq student
54+
55+
teacher = FactoryBot.create(:course_membership_teacher)
56+
expect(teacher.role.course_member).to eq teacher
57+
58+
teacher_student = FactoryBot.create(:course_membership_teacher_student)
59+
expect(teacher_student.role.course_member).to eq teacher_student
60+
end
61+
end
4262
end

spec/subsystems/tasks/update_period_caches_spec.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,8 @@
274274
let(:queue) { :lowest_priority }
275275

276276
it 'is called when a task_plan is published' do
277+
@task_plan.tasks.delete_all
278+
277279
expect(configured_job).to receive(:perform_later) do |period_ids:|
278280
expect(period_ids).to match_array(@task_plan.tasking_plans.map(&:target_id))
279281
end
@@ -353,6 +355,8 @@
353355
let(:queue) { :low_priority }
354356

355357
it 'is called when a task_plan is published' do
358+
@task_plan.tasks.delete_all
359+
356360
expect(configured_job).to receive(:perform_later) do |period_ids:|
357361
expect(period_ids).to match_array(@task_plan.tasking_plans.map(&:target_id))
358362
end

spec/subsystems/tasks/update_task_caches_spec.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,8 @@
288288
end
289289

290290
it 'is called when a task_plan is published' do
291+
@task_plan.tasks.delete_all
292+
291293
expect(configured_job).to receive(:perform_later) do |task_ids:, queue:|
292294
expect(task_ids).to match_array(@task_plan.tasks.pluck(:id))
293295
expect(queue).to eq queue.to_s
@@ -451,6 +453,8 @@
451453
end
452454

453455
it 'is called when a task_plan is published' do
456+
@task_plan.tasks.delete_all
457+
454458
expect(configured_job).to receive(:perform_later) do |task_ids:, queue:|
455459
expect(task_ids).to match_array(@task_plan.tasks.pluck(:id))
456460
expect(queue).to eq queue.to_s

0 commit comments

Comments
 (0)