@@ -171,7 +171,8 @@ public function test_get_document_recordset(): void {
171
171
$ record ->course = $ course ->id ;
172
172
$ record ->customfield_overview = 'Test overview text 3 ' ;
173
173
$ record ->typeid = $ this ->cmstype ->get ('id ' );
174
- $ generator ->create_instance_with_data ($ record );
174
+ $ cms3 = $ generator ->create_instance_with_data ($ record );
175
+ $ context = \context_module::instance ($ cms3 ->cmid );
175
176
176
177
// Return only new search.
177
178
$ recordset = $ searcharea ->get_document_recordset ($ time );
@@ -184,7 +185,7 @@ public function test_get_document_recordset(): void {
184
185
$ this ->assertEquals ('mod_cms-cmsfield- ' . $ record ->id , $ doc ->get ('id ' ));
185
186
$ this ->assertEquals ($ record ->id , $ doc ->get ('itemid ' ));
186
187
$ this ->assertEquals ($ course ->id , $ doc ->get ('courseid ' ));
187
- $ this ->assertEquals ($ data -> contextid , $ doc ->get ('contextid ' ));
188
+ $ this ->assertEquals ($ context -> id , $ doc ->get ('contextid ' ));
188
189
$ this ->assertEquals ($ this ->field ->get ('name ' ), $ doc ->get ('title ' ));
189
190
$ this ->assertEquals ($ data ->value , $ doc ->get ('content ' ));
190
191
@@ -217,20 +218,76 @@ public function test_get_document_recordset(): void {
217
218
* @covers ::get_document
218
219
*/
219
220
public function test_default_content (): void {
221
+ $ searcharea = \core_search \manager::get_search_area ($ this ->cmsareaid );
222
+ $ this ->assertInstanceOf ('\mod_cms\search\cmsfield ' , $ searcharea );
223
+
224
+ $ course = self ::getDataGenerator ()->create_course ();
225
+
226
+ // Create cms activity without customfield.
227
+ $ generator = self ::getDataGenerator ()->get_plugin_generator ('mod_cms ' );
228
+ $ record = new \stdClass ();
229
+ $ record ->course = $ course ->id ;
230
+ $ record ->typeid = $ this ->cmstype ->get ('id ' );
231
+ $ cms1 = $ generator ->create_instance_with_data ($ record );
232
+
233
+ $ recordset = $ searcharea ->get_document_recordset ();
234
+ $ count = 0 ;
235
+ foreach ($ recordset as $ record ) {
236
+ $ this ->assertInstanceOf ('stdClass ' , $ record );
237
+ $ this ->assertEmpty ($ record ->dataid );
238
+ $ doc = $ searcharea ->get_document ($ record );
239
+ $ this ->assertInstanceOf ('\core_search\document ' , $ doc );
240
+ // Confirm the content is from defaultvalue from cms fieldtype.
241
+ $ this ->assertEquals ('Default Text Overview ' , $ doc ->get ('content ' ));
242
+ $ count ++;
243
+ }
244
+ $ this ->assertEquals (1 , $ count );
245
+ $ recordset ->close ();
246
+
247
+ // Add custom data for the cms activity.
248
+ $ cms1 ->customfield_overview = 'Update test 1 ' ;
249
+ $ handler = cmsfield_handler::create ($ cms1 ->typeid );
250
+ $ handler ->instance_form_save ($ cms1 );
251
+ $ recordset = $ searcharea ->get_document_recordset ();
252
+ $ count = 0 ;
253
+ foreach ($ recordset as $ record ) {
254
+ $ this ->assertInstanceOf ('stdClass ' , $ record );
255
+ $ doc = $ searcharea ->get_document ($ record );
256
+ $ this ->assertEquals ('Update test 1 ' , $ doc ->get ('content ' ));
257
+ $ count ++;
258
+ }
259
+ $ this ->assertEquals (1 , $ count );
260
+ $ recordset ->close ();
261
+ }
262
+
263
+ /**
264
+ * Test multiple contents in one cms activity
265
+ *
266
+ * @return void
267
+ * @covers ::get_document_recordset
268
+ * @covers ::get_document
269
+ */
270
+ public function test_multiple_contents (): void {
220
271
global $ DB ;
221
272
222
273
// Returns the instance as long as the area is supported.
223
274
$ searcharea = \core_search \manager::get_search_area ($ this ->cmsareaid );
224
275
$ this ->assertInstanceOf ('\mod_cms\search\cmsfield ' , $ searcharea );
225
276
226
277
$ course = self ::getDataGenerator ()->create_course ();
278
+ $ field = self ::getDataGenerator ()->create_custom_field ([
279
+ 'name ' => 'Details ' ,
280
+ 'shortname ' => 'details ' ,
281
+ 'type ' => 'text ' ,
282
+ 'categoryid ' => $ this ->fieldcategory ->get ('id ' ),
283
+ 'configdata ' => json_encode (['defaultvalue ' => 'Default Text Details ' ]),
284
+ ]);
227
285
228
286
$ generator = self ::getDataGenerator ()->get_plugin_generator ('mod_cms ' );
229
287
$ record = new \stdClass ();
230
288
$ record ->course = $ course ->id ;
231
289
$ record ->typeid = $ this ->cmstype ->get ('id ' );
232
290
$ cms1 = $ generator ->create_instance_with_data ($ record );
233
- $ context = \context_module::instance ($ cms1 ->cmid );
234
291
235
292
$ recordset = $ searcharea ->get_document_recordset ();
236
293
$ count = 0 ;
@@ -239,35 +296,26 @@ public function test_default_content(): void {
239
296
$ this ->assertEmpty ($ record ->dataid );
240
297
$ doc = $ searcharea ->get_document ($ record );
241
298
$ this ->assertInstanceOf ('\core_search\document ' , $ doc );
242
- $ this ->assertEquals ('mod_cms-cmsfield- ' . $ record ->id , $ doc ->get ('id ' ));
243
- $ this ->assertEquals ($ record ->id , $ doc ->get ('itemid ' ));
244
- $ this ->assertEquals ($ course ->id , $ doc ->get ('courseid ' ));
245
- $ this ->assertEquals ($ context ->id , $ doc ->get ('contextid ' ));
246
- $ this ->assertEquals ($ this ->field ->get ('name ' ), $ doc ->get ('title ' ));
247
- $ this ->assertEquals ('Default Text Overview ' , $ doc ->get ('content ' ));
299
+ $ this ->assertStringContainsString ('Default Text Overview ' , $ doc ->get ('content ' ));
300
+ $ this ->assertStringContainsString ('Default Text Details ' , $ doc ->get ('content ' ));
248
301
$ count ++;
249
302
}
250
303
$ this ->assertEquals (1 , $ count );
251
304
$ recordset ->close ();
252
305
253
306
// Add data for the cms activity.
254
- $ cms1 ->customfield_overview = 'Update test 1 ' ;
307
+ $ cms1 ->customfield_overview = 'Overview test 1 ' ;
308
+ $ cms1 ->customfield_details = 'Details test 1 ' ;
255
309
$ handler = cmsfield_handler::create ($ cms1 ->typeid );
256
310
$ handler ->instance_form_save ($ cms1 );
257
311
$ recordset = $ searcharea ->get_document_recordset ();
258
312
$ count = 0 ;
259
313
foreach ($ recordset as $ record ) {
260
314
$ this ->assertInstanceOf ('stdClass ' , $ record );
261
- $ data = $ DB ->get_record ('customfield_data ' , ['id ' => $ record ->dataid ]);
262
315
$ doc = $ searcharea ->get_document ($ record );
263
- $ this ->assertInstanceOf ('\core_search\document ' , $ doc );
264
- $ this ->assertEquals ('mod_cms-cmsfield- ' . $ record ->id , $ doc ->get ('id ' ));
265
- $ this ->assertEquals ($ record ->id , $ doc ->get ('itemid ' ));
266
- $ this ->assertEquals ($ course ->id , $ doc ->get ('courseid ' ));
267
- $ this ->assertEquals ($ data ->contextid , $ doc ->get ('contextid ' ));
268
- $ this ->assertEquals ($ this ->field ->get ('name ' ), $ doc ->get ('title ' ));
269
- $ this ->assertEquals ($ data ->value , $ doc ->get ('content ' ));
270
- $ this ->assertEquals ('Update test 1 ' , $ doc ->get ('content ' ));
316
+ // Both strings are contained in the cms activity.
317
+ $ this ->assertStringContainsString ('Overview test 1 ' , $ doc ->get ('content ' ));
318
+ $ this ->assertStringContainsString ('Details test 1 ' , $ doc ->get ('content ' ));
271
319
$ count ++;
272
320
}
273
321
$ this ->assertEquals (1 , $ count );
0 commit comments