Passed
Push — master ( 7f745f...f5786a )
by Thomas
02:48
created

tests/Collector/TimeDataCollectorTest.php (3 issues)

1
<?php
2
3
namespace LeKoala\DebugBar\Test\Collector;
4
5
use SilverStripe\Core\Config\Config;
6
use SilverStripe\Dev\SapphireTest;
7
use LeKoala\DebugBar\Collector\TimeDataCollector;
8
use LeKoala\DebugBar\DebugBar;
9
10
class TimeDataCollectorTest extends SapphireTest
11
{
12
    /**
13
     * @var DebugBarTimeDataCollector
0 ignored issues
show
The type LeKoala\DebugBar\Test\Co...bugBarTimeDataCollector was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
14
     */
15
    protected $collector;
16
17
    public function setUp()
18
    {
19
        parent::setUp();
20
        $this->collector = new TimeDataCollector(microtime(true));
0 ignored issues
show
Documentation Bug introduced by
It seems like new LeKoala\DebugBar\Col...lector(microtime(true)) of type LeKoala\DebugBar\Collector\TimeDataCollector is incompatible with the declared type LeKoala\DebugBar\Test\Co...bugBarTimeDataCollector of property $collector.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
It seems like microtime(true) can also be of type string; however, parameter $requestStartTime of LeKoala\DebugBar\Collect...ollector::__construct() does only seem to accept double, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

20
        $this->collector = new TimeDataCollector(/** @scrutinizer ignore-type */ microtime(true));
Loading history...
21
    }
22
23
    public function testCollectorTooltip()
24
    {
25
        $result = $this->collector->getWidgets();
26
        $this->assertContains('Request duration', $result['time']['tooltip']);
27
    }
28
29
    /**
30
     * Deliberately low threshold - should return a danger result
31
     */
32
    public function testDangerOnVerySlowRequest()
33
    {
34
        Config::modify()->set(DebugBar::class, 'warn_request_time_seconds', '0.00001');
35
        $result = $this->collector->getWidgets();
36
        $this->assertSame('danger', $result['time']['warn']);
37
        $this->assertContains('>', $result['time']['tooltip']);
38
    }
39
40
    /**
41
     * Deliberately high threshold and low ratio - should return a warning result
42
     */
43
    public function testWarningOnSlowRequest()
44
    {
45
        Config::modify()->set(DebugBar::class, 'warn_request_time_seconds', '100');
46
        Config::modify()->set(DebugBar::class, 'warn_warning_ratio', '0.000000001');
47
        $result = $this->collector->getWidgets();
48
        $this->assertSame('warning', $result['time']['warn']);
49
        $this->assertContains('>', $result['time']['tooltip']);
50
    }
51
52
    /**
53
     * Deliberately high threshold and high ratio - should return an "ok" result
54
     */
55
    public function testOkOnNormalRequest()
56
    {
57
        Config::modify()->set(DebugBar::class, 'warn_request_time_seconds', '100');
58
        Config::modify()->set(DebugBar::class, 'warn_warning_ratio', '1');
59
        $result = $this->collector->getWidgets();
60
        $this->assertSame('ok', $result['time']['warn']);
61
        $this->assertContains('<', $result['time']['tooltip']);
62
    }
63
64
    public function testWarningCanBeDisabled()
65
    {
66
        Config::modify()->set(DebugBar::class, 'warn_request_time_seconds', false);
67
        $result = $this->collector->getWidgets();
68
        $this->assertArrayNotHasKey('warn', $result['time']);
69
    }
70
}
71