Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
62.50% covered (warning)
62.50%
5 / 8
80.00% covered (warning)
80.00%
4 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
Order
62.50% covered (warning)
62.50%
5 / 8
80.00% covered (warning)
80.00%
4 / 5
6.32
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getId
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getOrderStatus
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getOrderLineList
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 addOrderLine
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Apie\IntegrationTests\Apie\TypeDemo\Resources;
4
5use Apie\Core\Attributes\Auditable;
6use Apie\Core\Attributes\Description;
7use Apie\Core\Attributes\FakeCount;
8use Apie\Core\Attributes\OverwriteAfterPersist;
9use Apie\Core\Attributes\RemovalCheck;
10use Apie\Core\Attributes\RuntimeCheck;
11use Apie\Core\Attributes\StaticCheck;
12use Apie\Core\Entities\EntityInterface;
13use Apie\IntegrationTests\Apie\TypeDemo\Entities\OrderLine;
14use Apie\IntegrationTests\Apie\TypeDemo\Enums\OrderStatus;
15use Apie\IntegrationTests\Apie\TypeDemo\Identifiers\OrderIdentifier;
16use Apie\IntegrationTests\Apie\TypeDemo\Lists\OrderLineList;
17use Apie\IntegrationTests\Apie\TypeDemo\Rules\OnlyDraftOrders;
18
19#[RemovalCheck(new StaticCheck())]
20#[RemovalCheck(new RuntimeCheck(new OnlyDraftOrders()))]
21#[FakeCount(1)]
22#[Auditable(readEvents: true)]
23#[Description('An order is a web order and consists of multiple order lines')]
24#[OverwriteAfterPersist]
25class Order implements EntityInterface
26{
27    private OrderIdentifier $id;
28
29    private OrderStatus $orderStatus;
30
31    public function __construct(private OrderLineList $orderLineList)
32    {
33        $this->id = new OrderIdentifier(null);
34        $this->orderStatus = OrderStatus::DRAFT;
35    }
36
37    public function getId(): OrderIdentifier
38    {
39        return $this->id;
40    }
41
42    public function getOrderStatus(): OrderStatus
43    {
44        return $this->orderStatus;
45    }
46
47    public function getOrderLineList(): OrderLineList
48    {
49        return $this->orderLineList;
50    }
51
52    #[RuntimeCheck(new OnlyDraftOrders())]
53    public function addOrderLine(OrderLine $orderLine): Order
54    {
55        $this->orderStatus->ensureDraft();
56        $this->orderLineList[] = $orderLine;
57
58        return $this;
59    }
60}