@@ -43,7 +43,11 @@ defmodule Cadet.Accounts.CourseRegistrationTest do
4343 course2: course2
4444 } do
4545 assert_changeset ( % { user_id: user1 . id , course_id: course2 . id , role: :admin } , :valid )
46- assert_changeset ( % { user_id: user2 . id , course_id: course1 . id , role: :student } , :valid )
46+
47+ assert_changeset (
48+ % { user_id: user2 . id , course_id: course1 . id , role: :student , agreed_to_research: true } ,
49+ :valid
50+ )
4751
4852 # assert_changeset(%{user_id: user2.id, course_id: course2.id, role: :staff, group_id: group.id}, :valid)
4953 end
@@ -328,4 +332,43 @@ defmodule Cadet.Accounts.CourseRegistrationTest do
328332 CourseRegistrations . delete_course_registration ( 10_000 )
329333 end
330334 end
335+
336+ describe "update_research_agreement" do
337+ setup do
338+ student1 = insert ( :course_registration , % { role: :student } )
339+ student2 = insert ( :course_registration , % { role: :student , agreed_to_research: false } )
340+
341+ { :ok , % { student1: student1 , student2: student2 } }
342+ end
343+
344+ test "succeeds when field is initially nil" , % { student1: student1 } do
345+ assert is_nil (
346+ CourseRegistration
347+ |> where ( id: ^ student1 . id )
348+ |> Repo . one ( )
349+ |> Map . fetch! ( :agreed_to_research )
350+ )
351+
352+ CourseRegistrations . update_research_agreement ( student1 , true )
353+
354+ assert CourseRegistration
355+ |> where ( id: ^ student1 . id )
356+ |> Repo . one ( )
357+ |> Map . fetch! ( :agreed_to_research ) == true
358+ end
359+
360+ test "succeeds when field is initially not nil" , % { student2: student2 } do
361+ assert CourseRegistration
362+ |> where ( id: ^ student2 . id )
363+ |> Repo . one ( )
364+ |> Map . fetch! ( :agreed_to_research ) == false
365+
366+ CourseRegistrations . update_research_agreement ( student2 , true )
367+
368+ assert CourseRegistration
369+ |> where ( id: ^ student2 . id )
370+ |> Repo . one ( )
371+ |> Map . fetch! ( :agreed_to_research ) == true
372+ end
373+ end
331374end
0 commit comments