MDL-84202 customfield_number: add number instance to report testing.

This commit is contained in:
Paul Holden 2024-05-30 20:40:19 +01:00
parent f4f166695c
commit bf73278f39
No known key found for this signature in database
GPG key ID: A81A96D6045F6164
2 changed files with 139 additions and 35 deletions

View file

@ -21,7 +21,7 @@ namespace core_reportbuilder\local\helpers;
use core_customfield_generator; use core_customfield_generator;
use core_reportbuilder_generator; use core_reportbuilder_generator;
use core_reportbuilder\local\entities\course; use core_reportbuilder\local\entities\course;
use core_reportbuilder\local\filters\{boolean_select, date, select, text}; use core_reportbuilder\local\filters\{boolean_select, date, number, select, text};
use core_reportbuilder\local\report\{column, filter}; use core_reportbuilder\local\report\{column, filter};
use core_reportbuilder\tests\core_reportbuilder_testcase; use core_reportbuilder\tests\core_reportbuilder_testcase;
use core_course\reportbuilder\datasource\{categories, courses}; use core_course\reportbuilder\datasource\{categories, courses};
@ -72,6 +72,10 @@ final class custom_fields_test extends core_reportbuilder_testcase {
['categoryid' => $category->get('id'), 'type' => 'select', 'name' => 'Select', 'shortname' => 'select', ['categoryid' => $category->get('id'), 'type' => 'select', 'name' => 'Select', 'shortname' => 'select',
'configdata' => ['options' => "Cat\nDog", 'defaultvalue' => 'Cat']]); 'configdata' => ['options' => "Cat\nDog", 'defaultvalue' => 'Cat']]);
$generator->create_field(
['categoryid' => $category->get('id'), 'type' => 'number', 'name' => 'Number', 'shortname' => 'number',
'configdata' => ['defaultvalue' => 1]]);
$courseentity = new course(); $courseentity = new course();
$coursealias = $courseentity->get_table_alias('course'); $coursealias = $courseentity->get_table_alias('course');
@ -89,39 +93,74 @@ final class custom_fields_test extends core_reportbuilder_testcase {
$customfields = $this->generate_customfields(); $customfields = $this->generate_customfields();
$columns = $customfields->get_columns(); $columns = $customfields->get_columns();
$this->assertCount(5, $columns); $this->assertCount(6, $columns);
$this->assertContainsOnlyInstancesOf(column::class, $columns); $this->assertContainsOnlyInstancesOf(column::class, $columns);
// Column titles. // Column titles.
$this->assertEquals( $this->assertEquals([
['Text', 'Textarea', 'Checkbox', 'Date', 'Select'], 'Text',
array_map(fn(column $column) => $column->get_title(), $columns) 'Textarea',
); 'Checkbox',
'Date',
'Select',
'Number',
], array_map(
fn(column $column) => $column->get_title(),
$columns,
));
// Column types. // Column types.
$this->assertEquals( $this->assertEquals([
[column::TYPE_TEXT, column::TYPE_LONGTEXT, column::TYPE_BOOLEAN, column::TYPE_TIMESTAMP, column::TYPE_TEXT], column::TYPE_TEXT,
array_map(fn(column $column) => $column->get_type(), $columns) column::TYPE_LONGTEXT,
); column::TYPE_BOOLEAN,
column::TYPE_TIMESTAMP,
column::TYPE_TEXT,
column::TYPE_FLOAT,
], array_map(
fn(column $column) => $column->get_type(),
$columns,
));
// Column sortable. // Column sortable.
$this->assertEquals( $this->assertEquals([
[true, false, true, true, true], true,
array_map(fn(column $column) => $column->get_is_sortable(), $columns) false,
); true,
true,
true,
true,
], array_map(
fn(column $column) => $column->get_is_sortable(),
$columns,
));
// Column available. // Column available.
$this->assertEquals( $this->assertEquals([
[true, true, true, true, true], true,
array_map(fn(column $column) => $column->get_is_available(), $columns), true,
); true,
true,
true,
true,
], array_map(
fn(column $column) => $column->get_is_available(),
$columns,
));
// Column available, for non-privileged user. // Column available, for non-privileged user.
$this->setUser(null); $this->setUser(null);
$this->assertEquals( $this->assertEquals([
[true, true, false, true, true], true,
array_map(fn(column $column) => $column->get_is_available(), $customfields->get_columns()), true,
); false,
true,
true,
true,
], array_map(
fn(column $column) => $column->get_is_available(),
$customfields->get_columns(),
));
} }
/** /**
@ -165,27 +204,61 @@ final class custom_fields_test extends core_reportbuilder_testcase {
$customfields = $this->generate_customfields(); $customfields = $this->generate_customfields();
$filters = $customfields->get_filters(); $filters = $customfields->get_filters();
$this->assertCount(5, $filters); $this->assertCount(6, $filters);
$this->assertContainsOnlyInstancesOf(filter::class, $filters); $this->assertContainsOnlyInstancesOf(filter::class, $filters);
// Filter headers. // Filter headers.
$this->assertEquals( $this->assertEquals([
['Text', 'Textarea', 'Checkbox', 'Date', 'Select'], 'Text',
array_map(fn(filter $filter) => $filter->get_header(), $filters) 'Textarea',
); 'Checkbox',
'Date',
'Select',
'Number',
], array_map(
fn(filter $filter) => $filter->get_header(),
$filters,
));
// Filter types.
$this->assertEquals([
text::class,
text::class,
boolean_select::class,
date::class,
select::class,
number::class,
], array_map(
fn(filter $filter) => $filter->get_filter_class(),
$filters,
));
// Filter available. // Filter available.
$this->assertEquals( $this->assertEquals([
[true, true, true, true, true], true,
array_map(fn(filter $filter) => $filter->get_is_available(), $filters), true,
); true,
true,
true,
true,
], array_map(
fn(filter $filter) => $filter->get_is_available(),
$filters,
));
// Filter available, for non-privileged user. // Filter available, for non-privileged user.
$this->setUser(null); $this->setUser(null);
$this->assertEquals( $this->assertEquals([
[true, true, false, true, true], true,
array_map(fn(filter $filter) => $filter->get_is_available(), $customfields->get_filters()), true,
); false,
true,
true,
true,
], array_map(
fn(filter $filter) => $filter->get_is_available(),
$customfields->get_filters(),
));
} }
/** /**
@ -206,6 +279,7 @@ final class custom_fields_test extends core_reportbuilder_testcase {
['shortname' => 'checkbox', 'value' => 0], ['shortname' => 'checkbox', 'value' => 0],
['shortname' => 'date', 'value' => 1669852800], ['shortname' => 'date', 'value' => 1669852800],
['shortname' => 'select', 'value' => 2], ['shortname' => 'select', 'value' => 2],
['shortname' => 'number', 'value' => 42],
]]); ]]);
/** @var core_reportbuilder_generator $generator */ /** @var core_reportbuilder_generator $generator */
@ -222,6 +296,7 @@ final class custom_fields_test extends core_reportbuilder_testcase {
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:customfield_checkbox']); $generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:customfield_checkbox']);
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:customfield_date']); $generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:customfield_date']);
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:customfield_select']); $generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:customfield_select']);
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:customfield_number']);
$content = $this->get_custom_report_content($report->get('id')); $content = $this->get_custom_report_content($report->get('id'));
$this->assertEquals([ $this->assertEquals([
@ -233,6 +308,7 @@ final class custom_fields_test extends core_reportbuilder_testcase {
'', '',
'', '',
'', '',
'',
], ],
[ [
$category->name, $category->name,
@ -242,6 +318,7 @@ final class custom_fields_test extends core_reportbuilder_testcase {
'Yes', 'Yes',
'', '',
'Cat', 'Cat',
1,
], ],
[ [
$category->name, $category->name,
@ -251,6 +328,7 @@ final class custom_fields_test extends core_reportbuilder_testcase {
'No', 'No',
userdate(1669852800), userdate(1669852800),
'Dog', 'Dog',
42,
], ],
], array_map('array_values', $content)); ], array_map('array_values', $content));
} }
@ -312,6 +390,18 @@ final class custom_fields_test extends core_reportbuilder_testcase {
'course:customfield_select_operator' => select::EQUAL_TO, 'course:customfield_select_operator' => select::EQUAL_TO,
'course:customfield_select_value' => 3, 'course:customfield_select_value' => 3,
]], ]],
'Filter by number custom field' => ['course:customfield_number', [
'course:customfield_number_operator' => number::EQUAL_TO,
'course:customfield_number_value1' => 42,
], 'C2'],
'Filter by number custom field (default)' => ['course:customfield_number', [
'course:customfield_number_operator' => number::EQUAL_TO,
'course:customfield_number_value1' => 1,
], 'C1'],
'Filter by number custom field (no match)' => ['course:customfield_number', [
'course:customfield_number_operator' => number::EQUAL_TO,
'course:customfield_number_value1' => 3,
]],
]; ];
} }
@ -338,6 +428,7 @@ final class custom_fields_test extends core_reportbuilder_testcase {
['shortname' => 'checkbox', 'value' => 0], ['shortname' => 'checkbox', 'value' => 0],
['shortname' => 'date', 'value' => 1669852800], ['shortname' => 'date', 'value' => 1669852800],
['shortname' => 'select', 'value' => 2], ['shortname' => 'select', 'value' => 2],
['shortname' => 'number', 'value' => 42],
]]); ]]);
/** @var core_reportbuilder_generator $generator */ /** @var core_reportbuilder_generator $generator */

View file

@ -237,6 +237,19 @@ final class user_profile_fields_test extends core_reportbuilder_testcase {
$filters, $filters,
)); ));
// Filter types.
$this->assertEquals([
boolean_select::class,
date::class,
select::class,
text::class,
text::class,
text::class,
], array_map(
fn(filter $filter) => $filter->get_filter_class(),
$filters,
));
// Filter available. // Filter available.
$this->assertEquals([ $this->assertEquals([
true, true,