26
26
27
27
namespace mod_cms \search ;
28
28
29
+ use mod_cms \customfield \cmsfield_handler ;
29
30
use mod_cms \local \model \cms_types ;
30
31
31
32
defined ('MOODLE_INTERNAL ' ) || die ();
@@ -93,6 +94,7 @@ public function setUp(): void {
93
94
'shortname ' => 'overview ' ,
94
95
'type ' => 'text ' ,
95
96
'categoryid ' => $ fieldcategory ->get ('id ' ),
97
+ 'configdata ' => json_encode (['defaultvalue ' => 'Default Text Overview ' ]),
96
98
]);
97
99
$ this ->cmstype = $ cmstype ;
98
100
$ this ->fieldcategory = $ fieldcategory ;
@@ -138,45 +140,45 @@ public function test_get_document_recordset(): void {
138
140
$ record ->course = $ course ->id ;
139
141
$ record ->customfield_overview = 'Test overview text 1 ' ;
140
142
$ record ->typeid = $ this ->cmstype ->get ('id ' );
141
- $ generator ->create_instance_with_data ($ record );
143
+ $ cms1 = $ generator ->create_instance_with_data ($ record );
142
144
143
145
$ record = new \stdClass ();
144
146
$ record ->course = $ course ->id ;
145
147
$ record ->customfield_overview = 'Test overview text 2 ' ;
146
148
$ record ->typeid = $ this ->cmstype ->get ('id ' );
147
- $ generator ->create_instance_with_data ($ record );
149
+ $ cms2 = $ generator ->create_instance_with_data ($ record );
148
150
149
151
// All records.
150
152
$ recordset = $ searcharea ->get_document_recordset ();
151
153
$ this ->assertTrue ($ recordset ->valid ());
152
154
$ this ->assertEquals (2 , iterator_count ($ recordset ));
153
155
$ recordset ->close ();
154
156
155
- // The +2 is to prevent race conditions .
157
+ // Search again by current time + 2 sec .
156
158
$ recordset = $ searcharea ->get_document_recordset (time () + 2 );
157
-
158
159
// No new records.
159
160
$ this ->assertFalse ($ recordset ->valid ());
160
161
$ recordset ->close ();
161
162
162
163
// Wait 1 sec to have new search string.
163
164
sleep (1 );
165
+ $ time = time ();
164
166
$ record = new \stdClass ();
165
167
$ record ->course = $ course ->id ;
166
168
$ record ->customfield_overview = 'Test overview text 3 ' ;
167
169
$ record ->typeid = $ this ->cmstype ->get ('id ' );
168
170
$ generator ->create_instance_with_data ($ record );
169
171
170
172
// Return only new search.
171
- $ recordset = $ searcharea ->get_document_recordset (time () );
173
+ $ recordset = $ searcharea ->get_document_recordset ($ time );
172
174
$ count = 0 ;
173
175
foreach ($ recordset as $ record ) {
174
176
$ this ->assertInstanceOf ('stdClass ' , $ record );
175
- $ data = $ DB ->get_record ('customfield_data ' , ['id ' => $ record ->id ]);
177
+ $ data = $ DB ->get_record ('customfield_data ' , ['id ' => $ record ->dataid ]);
176
178
$ doc = $ searcharea ->get_document ($ record );
177
179
$ this ->assertInstanceOf ('\core_search\document ' , $ doc );
178
- $ this ->assertEquals ('mod_cms-cmsfield- ' . $ data ->id , $ doc ->get ('id ' ));
179
- $ this ->assertEquals ($ data ->id , $ doc ->get ('itemid ' ));
180
+ $ this ->assertEquals ('mod_cms-cmsfield- ' . $ record ->id , $ doc ->get ('id ' ));
181
+ $ this ->assertEquals ($ record ->id , $ doc ->get ('itemid ' ));
180
182
$ this ->assertEquals ($ course ->id , $ doc ->get ('courseid ' ));
181
183
$ this ->assertEquals ($ data ->contextid , $ doc ->get ('contextid ' ));
182
184
$ this ->assertEquals ($ this ->field ->get ('name ' ), $ doc ->get ('title ' ));
@@ -191,10 +193,84 @@ public function test_get_document_recordset(): void {
191
193
}
192
194
$ this ->assertEquals (1 , $ count );
193
195
$ recordset ->close ();
196
+
197
+ // Update existing data.
198
+ $ cms1 ->customfield_overview = 'Update test 1 ' ;
199
+ $ handler = cmsfield_handler::create ($ cms1 ->typeid );
200
+ $ handler ->instance_form_save ($ cms1 );
201
+ // Return 2 records.
202
+ $ recordset = $ searcharea ->get_document_recordset ($ time );
203
+ $ this ->assertTrue ($ recordset ->valid ());
204
+ $ this ->assertEquals (2 , iterator_count ($ recordset ));
205
+ $ recordset ->close ();
206
+ }
207
+
208
+ /**
209
+ * Test default value from cms content type
210
+ *
211
+ * @return void
212
+ */
213
+ public function test_default_content (): void {
214
+ global $ DB ;
215
+
216
+ // Returns the instance as long as the area is supported.
217
+ $ searcharea = \core_search \manager::get_search_area ($ this ->cmsareaid );
218
+ $ this ->assertInstanceOf ('\mod_cms\search\cmsfield ' , $ searcharea );
219
+
220
+ $ course = self ::getDataGenerator ()->create_course ();
221
+
222
+ // Name for cms is coming from "title_mustache" in cms_type.
223
+ $ generator = self ::getDataGenerator ()->get_plugin_generator ('mod_cms ' );
224
+ $ record = new \stdClass ();
225
+ $ record ->course = $ course ->id ;
226
+ $ record ->typeid = $ this ->cmstype ->get ('id ' );
227
+ $ cms1 = $ generator ->create_instance_with_data ($ record );
228
+ $ context = \context_module::instance ($ cms1 ->cmid );
229
+
230
+ $ recordset = $ searcharea ->get_document_recordset ();
231
+ $ count = 0 ;
232
+ foreach ($ recordset as $ record ) {
233
+ $ this ->assertInstanceOf ('stdClass ' , $ record );
234
+ $ this ->assertEmpty ($ record ->dataid );
235
+ $ doc = $ searcharea ->get_document ($ record );
236
+ $ this ->assertInstanceOf ('\core_search\document ' , $ doc );
237
+ $ this ->assertEquals ('mod_cms-cmsfield- ' . $ record ->id , $ doc ->get ('id ' ));
238
+ $ this ->assertEquals ($ record ->id , $ doc ->get ('itemid ' ));
239
+ $ this ->assertEquals ($ course ->id , $ doc ->get ('courseid ' ));
240
+ $ this ->assertEquals ($ context ->id , $ doc ->get ('contextid ' ));
241
+ $ this ->assertEquals ($ this ->field ->get ('name ' ), $ doc ->get ('title ' ));
242
+ $ this ->assertEquals ('Default Text Overview ' , $ doc ->get ('content ' ));
243
+ $ count ++;
244
+ }
245
+ $ this ->assertEquals (1 , $ count );
246
+ $ recordset ->close ();
247
+
248
+ // Add data for the cms activity.
249
+ $ cms1 ->customfield_overview = 'Update test 1 ' ;
250
+ $ handler = cmsfield_handler::create ($ cms1 ->typeid );
251
+ $ handler ->instance_form_save ($ cms1 );
252
+ $ recordset = $ searcharea ->get_document_recordset ();
253
+ $ count = 0 ;
254
+ foreach ($ recordset as $ record ) {
255
+ $ this ->assertInstanceOf ('stdClass ' , $ record );
256
+ $ data = $ DB ->get_record ('customfield_data ' , ['id ' => $ record ->dataid ]);
257
+ $ doc = $ searcharea ->get_document ($ record );
258
+ $ this ->assertInstanceOf ('\core_search\document ' , $ doc );
259
+ $ this ->assertEquals ('mod_cms-cmsfield- ' . $ record ->id , $ doc ->get ('id ' ));
260
+ $ this ->assertEquals ($ record ->id , $ doc ->get ('itemid ' ));
261
+ $ this ->assertEquals ($ course ->id , $ doc ->get ('courseid ' ));
262
+ $ this ->assertEquals ($ data ->contextid , $ doc ->get ('contextid ' ));
263
+ $ this ->assertEquals ($ this ->field ->get ('name ' ), $ doc ->get ('title ' ));
264
+ $ this ->assertEquals ($ data ->value , $ doc ->get ('content ' ));
265
+ $ this ->assertEquals ('Update test 1 ' , $ doc ->get ('content ' ));
266
+ $ count ++;
267
+ }
268
+ $ this ->assertEquals (1 , $ count );
269
+ $ recordset ->close ();
194
270
}
195
271
196
272
/**
197
- * Document contents .
273
+ * Test check_access .
198
274
*
199
275
* @return void
200
276
*/
0 commit comments