Test Failed
Push — main ( 99efcd...df6632 )
by Alex
14:53
created

InventoryTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 102
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 47
c 1
b 0
f 0
dl 0
loc 102
rs 10
wmc 6
1
<?php
2
3
use PHPUnit\Framework\TestCase;
4
use App\Adventure\Inventory;
5
use App\Adventure\Item;
6
7
/**
8
 * Unit tests for the Inventory class.
9
 */
10
class InventoryTest extends TestCase
11
{
12
    /**
13
     * Test case for the getInventory method.
14
     */
15
    public function testGetInventory(): void
16
    {
17
        $inventory = new Inventory();
18
        $this->assertEquals([], $inventory->getInventory());
19
20
        $item1 = $this->createStub(Item::class);
21
        $item1->method('getName')->willReturn('Sword');
22
23
        $item2 = $this->createStub(Item::class);
24
        $item2->method('getName')->willReturn('Shield');
25
26
        $inventory->addItem($item1);
27
        $inventory->addItem($item2);
28
29
        $this->assertEquals(['Sword' => $item1, 'Shield' => $item2], $inventory->getInventory());
30
    }
31
32
    /**
33
     * Test case for the lookInInventory method.
34
     */
35
    public function testLookInInventory(): void
36
    {
37
        $inventory = new Inventory();
38
        $this->assertEquals([], $inventory->lookInInventory());
39
40
        $item1 = $this->createStub(Item::class);
41
        $item1->method('getName')->willReturn('Sword');
42
43
        $item2 = $this->createStub(Item::class);
44
        $item2->method('getName')->willReturn('Shield');
45
46
        $inventory->addItem($item1);
47
        $inventory->addItem($item2);
48
49
        $this->assertEquals(['Sword', 'Shield'], $inventory->lookInInventory());
50
    }
51
52
    /**
53
     * Test case for the getItem method.
54
     */
55
    public function testGetItem(): void
56
    {
57
        $inventory = new Inventory();
58
        $item = $this->createStub(Item::class);
59
        $item->method('getName')->willReturn('Sword');
60
        $inventory->addItem($item);
61
62
        $this->assertSame($item, $inventory->getItem('Sword'));
63
        $this->assertNull($inventory->getItem('Shield'));
64
    }
65
66
    /**
67
     * Test case for the hasItem method.
68
     */
69
    public function testHasItem(): void
70
    {
71
        $inventory = new Inventory();
72
        $item = $this->createStub(Item::class);
73
        $item->method('getName')->willReturn('Sword');
74
        $inventory->addItem($item);
75
76
        $this->assertTrue($inventory->hasItem('Sword'));
77
        $this->assertFalse($inventory->hasItem('Shield'));
78
    }
79
80
    /**
81
     * Test case for the addItem method.
82
     */
83
    public function testAddItem(): void
84
    {
85
        $inventory = new Inventory();
86
        $item = $this->createMock(Item::class);
87
        $item->expects($this->once())
88
            ->method('getName')
89
            ->willReturn('Sword');
90
91
        $inventory->addItem($item);
92
93
        $this->assertTrue($inventory->hasItem('Sword'));
94
        $this->assertSame($item, $inventory->getItem('Sword'));
95
    }
96
97
    /**
98
     * Test case for the removeItem method.
99
     */
100
    public function testRemoveItem(): void
101
    {
102
        $inventory = new Inventory();
103
        $item = $this->createStub(Item::class);
104
        $item->method('getName')->willReturn('Sword');
105
        $inventory->addItem($item);
106
107
        $this->assertTrue($inventory->hasItem('Sword'));
108
109
        $inventory->removeItem($item);
110
        $this->assertFalse($inventory->hasItem('Sword'));
111
        $this->assertNull($inventory->getItem('Sword'));
112
    }
113
}
114