forked from robiningelbrecht/statistics-for-strava
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWeeklyStatsWidgetTest.php
More file actions
45 lines (36 loc) · 1.83 KB
/
WeeklyStatsWidgetTest.php
File metadata and controls
45 lines (36 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
namespace App\Tests\Domain\Dashboard\Widget;
use App\Domain\Dashboard\InvalidDashboardLayout;
use App\Domain\Dashboard\Widget\WeeklyStats\WeeklyStatsWidget;
use App\Domain\Dashboard\Widget\WidgetConfiguration;
use App\Tests\ContainerTestCase;
use PHPUnit\Framework\Attributes\DataProvider;
class WeeklyStatsWidgetTest extends ContainerTestCase
{
private WeeklyStatsWidget $widget;
#[DataProvider(methodName: 'provideInvalidConfig')]
public function testGuardValidConfigurationItShouldThrow(WidgetConfiguration $config, string $expectedException): void
{
$this->expectExceptionObject(new InvalidDashboardLayout($expectedException));
$this->widget->guardValidConfiguration($config);
}
public static function provideInvalidConfig(): iterable
{
$config = WidgetConfiguration::empty();
yield 'missing "metricsDisplayOrder" key' => [$config, 'Configuration item "metricsDisplayOrder" is required for WeeklyStatsWidget.'];
$config = WidgetConfiguration::empty()
->add('metricsDisplayOrder', 'invalid');
yield 'invalid "metricsDisplayOrder" key' => [$config, 'Configuration item "metricsDisplayOrder" must be an array.'];
$config = WidgetConfiguration::empty()
->add('metricsDisplayOrder', [1, 2, 3, 4, 5]);
yield 'invalid number of items in "metricsDisplayOrder"' => [$config, 'Configuration item "metricsDisplayOrder" must contain all 4 metrics.'];
$config = WidgetConfiguration::empty()
->add('metricsDisplayOrder', ['test', 2, 3, 4]);
yield 'invalid value in "metricsDisplayOrder"' => [$config, 'Configuration item "metricsDisplayOrder" contains invalid value "test".'];
}
#[\Override]
protected function setUp(): void
{
$this->widget = $this->getContainer()->get(WeeklyStatsWidget::class);
}
}