mirror of
https://github.com/moodle/moodle.git
synced 2025-08-07 18:06:51 +02:00
MDL-84202 customfield_number: add number instance to report testing.
This commit is contained in:
parent
f4f166695c
commit
bf73278f39
2 changed files with 139 additions and 35 deletions
|
@ -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 */
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue