@@ -76,4 +76,144 @@ public function test_duplicate_page() {
76
76
}
77
77
}
78
78
}
79
+
80
+ /**
81
+ * Test test_lesson_get_user_deadline().
82
+ */
83
+ public function test_lesson_get_user_deadline () {
84
+ global $ DB ;
85
+
86
+ $ this ->resetAfterTest ();
87
+ $ this ->setAdminUser ();
88
+
89
+ $ basetimestamp = time (); // The timestamp we will base the enddates on.
90
+
91
+ // Create generator, course and lessons.
92
+ $ student1 = $ this ->getDataGenerator ()->create_user ();
93
+ $ student2 = $ this ->getDataGenerator ()->create_user ();
94
+ $ student3 = $ this ->getDataGenerator ()->create_user ();
95
+ $ teacher = $ this ->getDataGenerator ()->create_user ();
96
+ $ course = $ this ->getDataGenerator ()->create_course ();
97
+ $ lessongenerator = $ this ->getDataGenerator ()->get_plugin_generator ('mod_lesson ' );
98
+
99
+ // Both lessons close in two hours.
100
+ $ lesson1 = $ lessongenerator ->create_instance (array ('course ' => $ course ->id , 'deadline ' => $ basetimestamp + 7200 ));
101
+ $ lesson2 = $ lessongenerator ->create_instance (array ('course ' => $ course ->id , 'deadline ' => $ basetimestamp + 7200 ));
102
+ $ group1 = $ this ->getDataGenerator ()->create_group (array ('courseid ' => $ course ->id ));
103
+ $ group2 = $ this ->getDataGenerator ()->create_group (array ('courseid ' => $ course ->id ));
104
+
105
+ $ student1id = $ student1 ->id ;
106
+ $ student2id = $ student2 ->id ;
107
+ $ student3id = $ student3 ->id ;
108
+ $ teacherid = $ teacher ->id ;
109
+
110
+ // Users enrolments.
111
+ $ studentrole = $ DB ->get_record ('role ' , array ('shortname ' => 'student ' ));
112
+ $ teacherrole = $ DB ->get_record ('role ' , array ('shortname ' => 'editingteacher ' ));
113
+ $ this ->getDataGenerator ()->enrol_user ($ student1id , $ course ->id , $ studentrole ->id , 'manual ' );
114
+ $ this ->getDataGenerator ()->enrol_user ($ student2id , $ course ->id , $ studentrole ->id , 'manual ' );
115
+ $ this ->getDataGenerator ()->enrol_user ($ student3id , $ course ->id , $ studentrole ->id , 'manual ' );
116
+ $ this ->getDataGenerator ()->enrol_user ($ teacherid , $ course ->id , $ teacherrole ->id , 'manual ' );
117
+
118
+ // Create groups.
119
+ $ group1 = $ this ->getDataGenerator ()->create_group (array ('courseid ' => $ course ->id ));
120
+ $ group2 = $ this ->getDataGenerator ()->create_group (array ('courseid ' => $ course ->id ));
121
+ $ group1id = $ group1 ->id ;
122
+ $ group2id = $ group2 ->id ;
123
+ $ this ->getDataGenerator ()->create_group_member (array ('userid ' => $ student1id , 'groupid ' => $ group1id ));
124
+ $ this ->getDataGenerator ()->create_group_member (array ('userid ' => $ student2id , 'groupid ' => $ group2id ));
125
+
126
+ // Group 1 gets an group override for lesson 1 to close in three hours.
127
+ $ record1 = (object ) [
128
+ 'lessonid ' => $ lesson1 ->id ,
129
+ 'groupid ' => $ group1id ,
130
+ 'deadline ' => $ basetimestamp + 10800 // In three hours.
131
+ ];
132
+ $ DB ->insert_record ('lesson_overrides ' , $ record1 );
133
+
134
+ // Let's test lesson 1 closes in three hours for user student 1 since member of group 1.
135
+ // lesson 2 closes in two hours.
136
+ $ this ->setUser ($ student1id );
137
+ $ params = new stdClass ();
138
+
139
+ $ comparearray = array ();
140
+ $ object = new stdClass ();
141
+ $ object ->id = $ lesson1 ->id ;
142
+ $ object ->userdeadline = $ basetimestamp + 10800 ; // The overriden deadline for lesson 1.
143
+
144
+ $ comparearray [$ lesson1 ->id ] = $ object ;
145
+
146
+ $ object = new stdClass ();
147
+ $ object ->id = $ lesson2 ->id ;
148
+ $ object ->userdeadline = $ basetimestamp + 7200 ; // The unchanged deadline for lesson 2.
149
+
150
+ $ comparearray [$ lesson2 ->id ] = $ object ;
151
+
152
+ $ this ->assertEquals ($ comparearray , lesson_get_user_deadline ($ course ->id ));
153
+
154
+ // Let's test lesson 1 closes in two hours (the original value) for user student 3 since member of no group.
155
+ $ this ->setUser ($ student3id );
156
+ $ params = new stdClass ();
157
+
158
+ $ comparearray = array ();
159
+ $ object = new stdClass ();
160
+ $ object ->id = $ lesson1 ->id ;
161
+ $ object ->userdeadline = $ basetimestamp + 7200 ; // The original deadline for lesson 1.
162
+
163
+ $ comparearray [$ lesson1 ->id ] = $ object ;
164
+
165
+ $ object = new stdClass ();
166
+ $ object ->id = $ lesson2 ->id ;
167
+ $ object ->userdeadline = $ basetimestamp + 7200 ; // The original deadline for lesson 2.
168
+
169
+ $ comparearray [$ lesson2 ->id ] = $ object ;
170
+
171
+ $ this ->assertEquals ($ comparearray , lesson_get_user_deadline ($ course ->id ));
172
+
173
+ // User 2 gets an user override for lesson 1 to close in four hours.
174
+ $ record2 = (object ) [
175
+ 'lessonid ' => $ lesson1 ->id ,
176
+ 'userid ' => $ student2id ,
177
+ 'deadline ' => $ basetimestamp + 14400 // In four hours.
178
+ ];
179
+ $ DB ->insert_record ('lesson_overrides ' , $ record2 );
180
+
181
+ // Let's test lesson 1 closes in four hours for user student 2 since personally overriden.
182
+ // lesson 2 closes in two hours.
183
+ $ this ->setUser ($ student2id );
184
+
185
+ $ comparearray = array ();
186
+ $ object = new stdClass ();
187
+ $ object ->id = $ lesson1 ->id ;
188
+ $ object ->userdeadline = $ basetimestamp + 14400 ; // The overriden deadline for lesson 1.
189
+
190
+ $ comparearray [$ lesson1 ->id ] = $ object ;
191
+
192
+ $ object = new stdClass ();
193
+ $ object ->id = $ lesson2 ->id ;
194
+ $ object ->userdeadline = $ basetimestamp + 7200 ; // The unchanged deadline for lesson 2.
195
+
196
+ $ comparearray [$ lesson2 ->id ] = $ object ;
197
+
198
+ $ this ->assertEquals ($ comparearray , lesson_get_user_deadline ($ course ->id ));
199
+
200
+ // Let's test a teacher sees the original times.
201
+ // lesson 1 and lesson 2 close in two hours.
202
+ $ this ->setUser ($ teacherid );
203
+
204
+ $ comparearray = array ();
205
+ $ object = new stdClass ();
206
+ $ object ->id = $ lesson1 ->id ;
207
+ $ object ->userdeadline = $ basetimestamp + 7200 ; // The unchanged deadline for lesson 1.
208
+
209
+ $ comparearray [$ lesson1 ->id ] = $ object ;
210
+
211
+ $ object = new stdClass ();
212
+ $ object ->id = $ lesson2 ->id ;
213
+ $ object ->userdeadline = $ basetimestamp + 7200 ; // The unchanged deadline for lesson 2.
214
+
215
+ $ comparearray [$ lesson2 ->id ] = $ object ;
216
+
217
+ $ this ->assertEquals ($ comparearray , lesson_get_user_deadline ($ course ->id ));
218
+ }
79
219
}
0 commit comments