Failed Conditions
Push — dot-notation ( bb2795 )
by Donald
02:51
created

testInvalidArgumentExceptionBubblesUpFromKeyExists()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 5
dl 0
loc 11
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php namespace Chekote\NounStore\Store;
2
3
use Chekote\NounStore\Key\KeyTest;
4
use Chekote\Phake\Phake;
5
use InvalidArgumentException;
6
7
/**
8
 * @covers \Chekote\NounStore\Store::get()
9
 */
10
class GetTest extends StoreTest
11
{
12
    public function setUp()
13
    {
14
        parent::setUp();
15
16
        /* @noinspection PhpUndefinedMethodInspection */
17
        Phake::when($this->store)->get(Phake::anyParameters())->thenCallParent();
0 ignored issues
show
Bug introduced by
It seems like $this->store can also be of type Chekote\NounStore\Store; however, parameter $mock of Phake::when() does only seem to accept Phake_IMock, 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

17
        Phake::when(/** @scrutinizer ignore-type */ $this->store)->get(Phake::anyParameters())->thenCallParent();
Loading history...
18
    }
19
20
    public function testKeyIsParsedAndParsedValuesAreUsed()
21
    {
22
        $key = '2nd ' . StoreTest::KEY;
23
        $parsedKey = StoreTest::KEY;
24
        $parsedIndex = 1;
25
26
        /* @noinspection PhpUndefinedMethodInspection */
27
        Phake::expect($this->key, 1)->parse($key)->thenReturn("$parsedKey.$parsedIndex");
0 ignored issues
show
Bug introduced by
It seems like $this->key can also be of type Chekote\NounStore\Key; however, parameter $mock of Chekote\Phake\Phake::expect() does only seem to accept Phake_IMock, 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

27
        Phake::expect(/** @scrutinizer ignore-type */ $this->key, 1)->parse($key)->thenReturn("$parsedKey.$parsedIndex");
Loading history...
Bug introduced by
The method parse() does not exist on Chekote\Phake\Expectation. Since you implemented __call, consider adding a @method annotation. ( Ignorable by Annotation )

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

27
        Phake::expect($this->key, 1)->/** @scrutinizer ignore-call */ parse($key)->thenReturn("$parsedKey.$parsedIndex");
Loading history...
28
29
        $this->assertEquals(StoreTest::SECOND_VALUE, $this->store->get($key));
0 ignored issues
show
Bug introduced by
The method get() does not exist on Phake_IMock. ( Ignorable by Annotation )

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

29
        $this->assertEquals(StoreTest::SECOND_VALUE, $this->store->/** @scrutinizer ignore-call */ get($key));

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
30
    }
31
32
    public function testInvalidArgumentExceptionBubblesUpFromParse()
33
    {
34
        $exception = new InvalidArgumentException('Key syntax is invalid');
35
36
        /* @noinspection PhpUndefinedMethodInspection */
37
        Phake::expect($this->key, 1)->parse(KeyTest::INVALID_KEY)->thenThrow($exception);
0 ignored issues
show
Bug introduced by
It seems like $this->key can also be of type Chekote\NounStore\Key; however, parameter $mock of Chekote\Phake\Phake::expect() does only seem to accept Phake_IMock, 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

37
        Phake::expect(/** @scrutinizer ignore-type */ $this->key, 1)->parse(KeyTest::INVALID_KEY)->thenThrow($exception);
Loading history...
38
39
        $this->expectException(get_class($exception));
40
        $this->expectExceptionMessage($exception->getMessage());
41
42
        $this->store->get(KeyTest::INVALID_KEY);
43
    }
44
45
    public function testReturnsNullWhenKeyDoesNotExist()
46
    {
47
        $key = '3rd ' . StoreTest::KEY;
48
        $dotPath = StoreTest::KEY . '.2';
49
50
        /* @noinspection PhpUndefinedMethodInspection */
51
        Phake::expect($this->key, 1)->parse($key)->thenReturn($dotPath);
0 ignored issues
show
Bug introduced by
It seems like $this->key can also be of type Chekote\NounStore\Key; however, parameter $mock of Chekote\Phake\Phake::expect() does only seem to accept Phake_IMock, 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

51
        Phake::expect(/** @scrutinizer ignore-type */ $this->key, 1)->parse($key)->thenReturn($dotPath);
Loading history...
52
53
        $this->assertNull($this->store->get($key));
54
    }
55
56
    public function testLastItemIsReturnedWhenParsedIndexIsNull()
57
    {
58
        $key = StoreTest::KEY;
59
        $dotPath = $key;
60
61
        /* @noinspection PhpUndefinedMethodInspection */
62
        Phake::expect($this->key, 1)->parse($key)->thenReturn($dotPath);
0 ignored issues
show
Bug introduced by
It seems like $this->key can also be of type Chekote\NounStore\Key; however, parameter $mock of Chekote\Phake\Phake::expect() does only seem to accept Phake_IMock, 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

62
        Phake::expect(/** @scrutinizer ignore-type */ $this->key, 1)->parse($key)->thenReturn($dotPath);
Loading history...
63
64
        $this->assertEquals(StoreTest::SECOND_VALUE, $this->store->get($key));
65
    }
66
67
    public function testIndexItemIsReturnedWhenParsedIndexIsNotNull()
68
    {
69
        $key = '1st ' . StoreTest::KEY;
70
        $dotPath = StoreTest::KEY . '.0';
71
72
        /* @noinspection PhpUndefinedMethodInspection */
73
        Phake::expect($this->key, 1)->parse($key)->thenReturn($dotPath);
0 ignored issues
show
Bug introduced by
It seems like $this->key can also be of type Chekote\NounStore\Key; however, parameter $mock of Chekote\Phake\Phake::expect() does only seem to accept Phake_IMock, 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

73
        Phake::expect(/** @scrutinizer ignore-type */ $this->key, 1)->parse($key)->thenReturn($dotPath);
Loading history...
74
75
        $this->assertEquals(StoreTest::FIRST_VALUE, $this->store->get($key));
76
    }
77
}
78