Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1441
Línea 237... Línea 237...
237
        $this->assertInstanceOf(filter::class, $instance->get_condition('datasource_test_entity:extra1'));
237
        $this->assertInstanceOf(filter::class, $instance->get_condition('datasource_test_entity:extra1'));
238
        $this->assertNull($instance->get_condition('datasource_test_entity:extra2'));
238
        $this->assertNull($instance->get_condition('datasource_test_entity:extra2'));
239
    }
239
    }
Línea 240... Línea 240...
240
 
240
 
-
 
241
    /**
-
 
242
     * Data provider for {@see get_datasource_test_source}
-
 
243
     *
-
 
244
     * @return array[]
-
 
245
     */
-
 
246
    public static function add_all_from_entities_provider(): array {
-
 
247
        return [
-
 
248
            'All' => [
-
 
249
                [],
-
 
250
                9,
-
 
251
                8,
-
 
252
                8,
-
 
253
            ],
-
 
254
            'Entity' => [
-
 
255
                ['datasource_test_entity'],
-
 
256
                5,
-
 
257
                4,
-
 
258
                4,
-
 
259
            ],
-
 
260
        ];
-
 
261
    }
-
 
262
 
-
 
263
    /**
-
 
264
     * Test adding from all entities
-
 
265
     *
-
 
266
     * @param string[] $entitynames
-
 
267
     * @param int $expectedcountcolumns
-
 
268
     * @param int $expectedcountfilters
-
 
269
     * @param int $expectedcountconditions
-
 
270
     *
-
 
271
     * @covers ::add_all_from_entities
-
 
272
     *
-
 
273
     * @dataProvider add_all_from_entities_provider
-
 
274
     */
-
 
275
    public function test_add_all_from_entities(
-
 
276
        array $entitynames,
-
 
277
        int $expectedcountcolumns,
-
 
278
        int $expectedcountfilters,
-
 
279
        int $expectedcountconditions,
-
 
280
    ): void {
-
 
281
        $instance = $this->get_datasource_test_source();
-
 
282
 
-
 
283
        $method = (new ReflectionClass($instance))->getMethod('add_all_from_entities');
-
 
284
        $method->invoke($instance, $entitynames);
-
 
285
 
-
 
286
        $this->assertCount($expectedcountcolumns, $instance->get_columns());
-
 
287
        $this->assertCount($expectedcountfilters, $instance->get_filters());
-
 
288
        $this->assertCount($expectedcountconditions, $instance->get_conditions());
-
 
289
    }
-
 
290
 
-
 
291
    /**
-
 
292
     * Test getting active conditions
-
 
293
     *
-
 
294
     * @covers ::get_active_conditions
-
 
295
     */
-
 
296
    public function test_get_active_conditions(): void {
-
 
297
        $instance = $this->get_datasource_test_source();
-
 
298
 
-
 
299
        $method = (new ReflectionClass($instance))->getMethod('add_conditions_from_entity');
-
 
300
        $method->invoke($instance, 'datasource_test_entity');
-
 
301
 
-
 
302
        /** @var core_reportbuilder_generator $generator */
-
 
303
        $generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
-
 
304
 
-
 
305
        $reportid = $instance->get_report_persistent()->get('id');
-
 
306
        $generator->create_condition(['reportid' => $reportid, 'uniqueidentifier' => 'datasource_test_entity:first']);
-
 
307
        $generator->create_condition(['reportid' => $reportid, 'uniqueidentifier' => 'datasource_test_entity:second']);
-
 
308
 
-
 
309
        // Set the second condition as unavailable.
-
 
310
        $instance->get_condition('datasource_test_entity:second')->set_is_available(false);
-
 
311
 
-
 
312
        $this->assertEquals([
-
 
313
            'datasource_test_entity:first',
-
 
314
        ], array_keys($instance->get_active_conditions(true)));
-
 
315
 
-
 
316
        // Ensure report elements are reloaded.
-
 
317
        $instance::report_elements_modified($reportid);
-
 
318
 
-
 
319
        $this->assertEquals([
-
 
320
            'datasource_test_entity:first',
-
 
321
            'datasource_test_entity:second',
-
 
322
        ], array_keys($instance->get_active_conditions(false)));
-
 
323
    }
-
 
324
 
241
    /**
325
    /**
242
     * Create and return our test datasource instance
326
     * Create and return our test datasource instance
243
     *
327
     *
244
     * @return datasource_test_source
328
     * @return datasource_test_source
245
     */
329
     */
Línea 261... Línea 345...
261
 */
345
 */
262
class datasource_test_source extends datasource {
346
class datasource_test_source extends datasource {
Línea 263... Línea 347...
263
 
347
 
264
    protected function initialise(): void {
348
    protected function initialise(): void {
-
 
349
        $this->set_main_table('user', 'u');
-
 
350
 
265
        $this->set_main_table('user', 'u');
351
        // Because we must have at least one column in the report.
266
        $this->annotate_entity('dummy', new lang_string('yes'));
352
        $this->annotate_entity('dummy', new lang_string('yes'));
Línea 267... Línea 353...
267
        $this->add_column(new column('test', null, 'dummy'));
353
        $this->add_column(new column('test', null, 'dummy'));
268
 
354
 
-
 
355
        // These are the entities from which we'll add additional report elements.
269
        // This is the entity from which we'll add our report elements.
356
        $this->add_entity(new datasource_test_entity());
Línea 270... Línea 357...
270
        $this->add_entity(new datasource_test_entity());
357
        $this->add_entity((new datasource_test_entity())->set_entity_name('datasource_test_entity_second'));
271
    }
358
    }
272
 
359