MDL-80807 reportbuilder: additional tests for aggregated column sort.
This commit is contained in:
@@ -54,25 +54,21 @@ class avg_test extends core_reportbuilder_testcase {
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
||||
$report = $generator->create_report(['name' => 'Users', 'source' => users::class, 'default' => 0]);
|
||||
|
||||
// First column, sorted.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname', 'sortenabled' => 1]);
|
||||
|
||||
// This is the column we'll aggregate.
|
||||
$generator->create_column(
|
||||
['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:suspended', 'aggregation' => avg::get_class_name()]
|
||||
);
|
||||
// Report columns, aggregated/sorted by user suspended.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname']);
|
||||
$generator->create_column([
|
||||
'reportid' => $report->get('id'),
|
||||
'uniqueidentifier' => 'user:suspended',
|
||||
'aggregation' => avg::get_class_name(),
|
||||
'sortenabled' => 1,
|
||||
'sortdirection' => SORT_DESC,
|
||||
]);
|
||||
|
||||
$content = $this->get_custom_report_content($report->get('id'));
|
||||
$this->assertEquals([
|
||||
[
|
||||
'c0_firstname' => 'Admin',
|
||||
'c1_suspended' => '0.0',
|
||||
],
|
||||
[
|
||||
'c0_firstname' => 'Bob',
|
||||
'c1_suspended' => '0.5',
|
||||
],
|
||||
], $content);
|
||||
['Bob', '0.5'],
|
||||
['Admin', '0.0'],
|
||||
], array_map('array_values', $content));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -53,24 +53,20 @@ class count_test extends core_reportbuilder_testcase {
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
||||
$report = $generator->create_report(['name' => 'Users', 'source' => users::class, 'default' => 0]);
|
||||
|
||||
// First column, sorted.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname', 'sortenabled' => 1]);
|
||||
|
||||
// This is the column we'll aggregate.
|
||||
// Report columns, aggregated/sorted by user lastname.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname']);
|
||||
$generator->create_column([
|
||||
'reportid' => $report->get('id'), 'uniqueidentifier' => 'user:lastname', 'aggregation' => count::get_class_name()]
|
||||
);
|
||||
'reportid' => $report->get('id'),
|
||||
'uniqueidentifier' => 'user:lastname',
|
||||
'aggregation' => count::get_class_name(),
|
||||
'sortenabled' => 1,
|
||||
'sortdirection' => SORT_DESC,
|
||||
]);
|
||||
|
||||
$content = $this->get_custom_report_content($report->get('id'));
|
||||
$this->assertEquals([
|
||||
[
|
||||
'c0_firstname' => 'Admin',
|
||||
'c1_lastname' => 1,
|
||||
],
|
||||
[
|
||||
'c0_firstname' => 'Bob',
|
||||
'c1_lastname' => 3,
|
||||
],
|
||||
], $content);
|
||||
['Bob', 3],
|
||||
['Admin', 1],
|
||||
], array_map('array_values', $content));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,27 +53,21 @@ class countdistinct_test extends core_reportbuilder_testcase {
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
||||
$report = $generator->create_report(['name' => 'Users', 'source' => users::class, 'default' => 0]);
|
||||
|
||||
// First column, sorted.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname', 'sortenabled' => 1]);
|
||||
|
||||
// This is the column we'll aggregate.
|
||||
// Report columns, aggregated/sorted by user lastname.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname']);
|
||||
$generator->create_column([
|
||||
'reportid' => $report->get('id'),
|
||||
'uniqueidentifier' => 'user:lastname',
|
||||
'aggregation' => countdistinct::get_class_name(),
|
||||
'sortenabled' => 1,
|
||||
'sortdirection' => SORT_DESC,
|
||||
]);
|
||||
|
||||
$content = $this->get_custom_report_content($report->get('id'));
|
||||
$this->assertEquals([
|
||||
[
|
||||
'c0_firstname' => 'Admin',
|
||||
'c1_lastname' => 1,
|
||||
],
|
||||
[
|
||||
'c0_firstname' => 'Bob',
|
||||
'c1_lastname' => 2,
|
||||
],
|
||||
], $content);
|
||||
['Bob', 2],
|
||||
['Admin', 1],
|
||||
], array_map('array_values', $content));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -57,28 +57,22 @@ class groupconcat_test extends core_reportbuilder_testcase {
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
||||
$report = $generator->create_report(['name' => 'Users', 'source' => users::class, 'default' => 0]);
|
||||
|
||||
// First column, sorted.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname', 'sortenabled' => 1]);
|
||||
|
||||
// This is the column we'll aggregate.
|
||||
// Report columns, aggregated/sorted by user lastname.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname']);
|
||||
$generator->create_column([
|
||||
'reportid' => $report->get('id'),
|
||||
'uniqueidentifier' => 'user:lastname',
|
||||
'aggregation' => groupconcat::get_class_name(),
|
||||
'sortenabled' => 1,
|
||||
'sortdirection' => SORT_ASC,
|
||||
]);
|
||||
|
||||
// Assert lastname column was aggregated, and sorted predictably.
|
||||
// Assert lastname column was aggregated, and itself also sorted predictably.
|
||||
$content = $this->get_custom_report_content($report->get('id'));
|
||||
$this->assertEquals([
|
||||
[
|
||||
'c0_firstname' => 'Admin',
|
||||
'c1_lastname' => 'User',
|
||||
],
|
||||
[
|
||||
'c0_firstname' => 'Bob',
|
||||
'c1_lastname' => 'Apple, Banana, Banana',
|
||||
],
|
||||
], $content);
|
||||
['Bob', 'Apple, Banana, Banana'],
|
||||
['Admin', 'User'],
|
||||
], array_map('array_values', $content));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -67,28 +67,22 @@ class groupconcatdistinct_test extends core_reportbuilder_testcase {
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
||||
$report = $generator->create_report(['name' => 'Users', 'source' => users::class, 'default' => 0]);
|
||||
|
||||
// First column, sorted.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname', 'sortenabled' => 1]);
|
||||
|
||||
// This is the column we'll aggregate.
|
||||
// Report columns, aggregated/sorted by user lastname.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname']);
|
||||
$generator->create_column([
|
||||
'reportid' => $report->get('id'),
|
||||
'uniqueidentifier' => 'user:lastname',
|
||||
'aggregation' => groupconcatdistinct::get_class_name(),
|
||||
'sortenabled' => 1,
|
||||
'sortdirection' => SORT_ASC,
|
||||
]);
|
||||
|
||||
// Assert lastname column was aggregated, and sorted predictably.
|
||||
// Assert lastname column was aggregated, and itself also sorted predictably.
|
||||
$content = $this->get_custom_report_content($report->get('id'));
|
||||
$this->assertEquals([
|
||||
[
|
||||
'c0_firstname' => 'Admin',
|
||||
'c1_lastname' => 'User',
|
||||
],
|
||||
[
|
||||
'c0_firstname' => 'Bob',
|
||||
'c1_lastname' => 'Apple, Banana',
|
||||
],
|
||||
], $content);
|
||||
['Bob', 'Apple, Banana'],
|
||||
['Admin', 'User'],
|
||||
], array_map('array_values', $content));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -52,24 +52,20 @@ class max_test extends core_reportbuilder_testcase {
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
||||
$report = $generator->create_report(['name' => 'Users', 'source' => users::class, 'default' => 0]);
|
||||
|
||||
// First column, sorted.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname', 'sortenabled' => 1]);
|
||||
|
||||
// This is the column we'll aggregate.
|
||||
$generator->create_column(
|
||||
['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:suspended', 'aggregation' => max::get_class_name()]
|
||||
);
|
||||
// Report columns, aggregated/sorted by user suspended.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname']);
|
||||
$generator->create_column([
|
||||
'reportid' => $report->get('id'),
|
||||
'uniqueidentifier' => 'user:suspended',
|
||||
'aggregation' => max::get_class_name(),
|
||||
'sortenabled' => 1,
|
||||
'sortdirection' => SORT_DESC,
|
||||
]);
|
||||
|
||||
$content = $this->get_custom_report_content($report->get('id'));
|
||||
$this->assertEquals([
|
||||
[
|
||||
'c0_firstname' => 'Admin',
|
||||
'c1_suspended' => 'No',
|
||||
],
|
||||
[
|
||||
'c0_firstname' => 'Bob',
|
||||
'c1_suspended' => 'Yes',
|
||||
],
|
||||
], $content);
|
||||
['Bob', 'Yes'],
|
||||
['Admin', 'No'],
|
||||
], array_map('array_values', $content));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,31 +45,27 @@ class min_test extends core_reportbuilder_testcase {
|
||||
$this->resetAfterTest();
|
||||
|
||||
// Test subjects.
|
||||
$this->getDataGenerator()->create_user(['firstname' => 'Admin', 'suspended' => 1]);
|
||||
$this->getDataGenerator()->create_user(['firstname' => 'Bob', 'suspended' => 1]);
|
||||
$this->getDataGenerator()->create_user(['firstname' => 'Bob', 'suspended' => 0]);
|
||||
|
||||
/** @var core_reportbuilder_generator $generator */
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
||||
$report = $generator->create_report(['name' => 'Users', 'source' => users::class, 'default' => 0]);
|
||||
|
||||
// First column, sorted.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname', 'sortenabled' => 1]);
|
||||
|
||||
// This is the column we'll aggregate.
|
||||
// Report columns, aggregated/sorted by user suspended.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname']);
|
||||
$generator->create_column([
|
||||
'reportid' => $report->get('id'), 'uniqueidentifier' => 'user:suspended', 'aggregation' => min::get_class_name()]
|
||||
);
|
||||
'reportid' => $report->get('id'),
|
||||
'uniqueidentifier' => 'user:suspended',
|
||||
'aggregation' => min::get_class_name(),
|
||||
'sortenabled' => 1,
|
||||
'sortdirection' => SORT_DESC,
|
||||
]);
|
||||
|
||||
$content = $this->get_custom_report_content($report->get('id'));
|
||||
$this->assertEquals([
|
||||
[
|
||||
'c0_firstname' => 'Admin',
|
||||
'c1_suspended' => 'No',
|
||||
],
|
||||
[
|
||||
'c0_firstname' => 'Bob',
|
||||
'c1_suspended' => 'No',
|
||||
],
|
||||
], $content);
|
||||
['Bob', 'Yes'],
|
||||
['Admin', 'No'],
|
||||
], array_map('array_values', $content));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,24 +52,20 @@ class percent_test extends core_reportbuilder_testcase {
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
||||
$report = $generator->create_report(['name' => 'Users', 'source' => users::class, 'default' => 0]);
|
||||
|
||||
// First column, sorted.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname', 'sortenabled' => 1]);
|
||||
|
||||
// This is the column we'll aggregate.
|
||||
// Report columns, aggregated/sorted by user suspended.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname']);
|
||||
$generator->create_column([
|
||||
'reportid' => $report->get('id'), 'uniqueidentifier' => 'user:suspended', 'aggregation' => percent::get_class_name()]
|
||||
);
|
||||
'reportid' => $report->get('id'),
|
||||
'uniqueidentifier' => 'user:suspended',
|
||||
'aggregation' => percent::get_class_name(),
|
||||
'sortenabled' => 1,
|
||||
'sortdirection' => SORT_DESC,
|
||||
]);
|
||||
|
||||
$content = $this->get_custom_report_content($report->get('id'));
|
||||
$this->assertEquals([
|
||||
[
|
||||
'c0_firstname' => 'Admin',
|
||||
'c1_suspended' => '0.0%',
|
||||
],
|
||||
[
|
||||
'c0_firstname' => 'Bob',
|
||||
'c1_suspended' => '50.0%',
|
||||
],
|
||||
], $content);
|
||||
['Bob', '50.0%'],
|
||||
['Admin', '0.0%'],
|
||||
], array_map('array_values', $content));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,25 +55,21 @@ class sum_test extends core_reportbuilder_testcase {
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
||||
$report = $generator->create_report(['name' => 'Users', 'source' => users::class, 'default' => 0]);
|
||||
|
||||
// First column, sorted.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname', 'sortenabled' => 1]);
|
||||
|
||||
// This is the column we'll aggregate.
|
||||
// Report columns, aggregated/sorted by user suspended.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:firstname']);
|
||||
$generator->create_column([
|
||||
'reportid' => $report->get('id'), 'uniqueidentifier' => 'user:suspended', 'aggregation' => sum::get_class_name()
|
||||
'reportid' => $report->get('id'),
|
||||
'uniqueidentifier' => 'user:suspended',
|
||||
'aggregation' => sum::get_class_name(),
|
||||
'sortenabled' => 1,
|
||||
'sortdirection' => SORT_DESC,
|
||||
]);
|
||||
|
||||
$content = $this->get_custom_report_content($report->get('id'));
|
||||
$this->assertEquals([
|
||||
[
|
||||
'c0_firstname' => 'Admin',
|
||||
'c1_suspended' => 0,
|
||||
],
|
||||
[
|
||||
'c0_firstname' => 'Bob',
|
||||
'c1_suspended' => 2,
|
||||
],
|
||||
], $content);
|
||||
['Bob', 2],
|
||||
['Admin', 0],
|
||||
], array_map('array_values', $content));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user