Test Failed
Push — main ( 6df04e...456b77 )
by Alexandra
11:41 queued 02:13
created

GildedRose::updateQuality()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 4
nc 2
nop 1
dl 0
loc 9
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AHJ\ApprovalTests\Tests\Example;
6
7
final class GildedRose
8
{
9
    public function updateQuality(array $items): array
10
    {
11
        $result = [];
12
13
        foreach ($items as $item) {
14
            $result[] = $this->updateItemQuality($item);
15
        }
16
17
        return $result;
18
    }
19
20
    public function updateItemQuality(Item $item): Item
21
    {
22
        $item = clone $item;
23
24
        switch ($item->name) {
25
            case 'Aged Brie':
26
                if ($item->quality < 50) {
27
                    $item->quality = $item->quality + 1;
28
                }
29
                $item->sell_in = $item->sell_in - 1;
30
31
                if ($item->sell_in < 0 && $item->quality < 50) {
32
                    $item->quality = $item->quality + 1;
33
                }
34
35
                return $item;
36
            case 'Backstage passes to a TAFKAL80ETC concert':
37
                if ($item->quality < 50) {
38
                    $item->quality = $item->quality + 1;
39
40
                    if ($item->sell_in < 11) {
41
                        if ($item->quality < 50) {
42
                            $item->quality = $item->quality + 1;
43
                        }
44
                    }
45
46
                    if ($item->sell_in < 6) {
47
                        if ($item->quality < 50) {
48
                            $item->quality = $item->quality + 1;
49
                        }
50
                    }
51
                }
52
                $item->sell_in = $item->sell_in - 1;
53
54
                if ($item->sell_in < 0) {
55
                    $item->quality = 0;
56
                }
57
58
                return $item;
59
            case 'Sulfuras, Hand of Ragnaros':
60
                break;
61
            default:
62
                if ($item->quality > 0) {
63
                    $item->quality = $item->quality - 1;
64
                }
65
                $item->sell_in = $item->sell_in - 1;
66
67
                if ($item->sell_in < 0) {
68
                    if ($item->quality > 0) {
69
                        $item->quality = $item->quality - 1;
70
                    }
71
                }
72
73
                return $item;
74
        }
75
76
        return $item;
77
    }
78
}
79