chcialbymZmienicOsobeOdpowiedzialnaNaWSamochodzie()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 2
1
<?php
2
3
namespace Madkom\RegistryApplication\Domain\CarManagement\Behat;
4
5
use Behat\Behat\Context\Context;
6
use Behat\Gherkin\Node\TableNode;
7
use Madkom\RegistryApplication\Application\CarManagement\CarDTO;
8
use Madkom\RegistryApplication\Application\CarManagement\Command\Car\AddCarCommand;
9
use Madkom\RegistryApplication\Application\CarManagement\Command\Car\AddCarDocumentCommand;
10
use Madkom\RegistryApplication\Application\CarManagement\DocumentDTO;
11
use Madkom\RegistryApplication\Domain\CarManagement\CarExceptions\CarFoundException;
12
use Madkom\RegistryApplication\Domain\CarManagement\CarExceptions\CarNotFoundException;
13
use Madkom\RegistryApplication\Domain\CarManagement\CarExceptions\DuplicatedVehicleInspectionException;
14
use Madkom\RegistryApplication\Domain\CarManagement\CarExceptions\InvalidDatesException;
15
use Madkom\RegistryApplication\Domain\CarManagement\VehicleInspection\VehicleInspection;
16
17
/**
18
 * Class CarManagementContext.
19
 *
20
 * Defines application features from the specific context.
21
 */
22
class CarManagementContext extends ContextRepositoryInterface implements Context
23
{
24
    /**
25
     * Initializes context.
26
     */
27
/*    public function __construct()
0 ignored issues
show
Unused Code Comprehensibility introduced by
58% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
28
    {
29
        parent::__construct();
30
    }*/
31
32
    /**
33
     * @When /^mam następujące dane samochodów, chcę je dodać do repozytorium:$/
34
     *
35
     * @param \Behat\Gherkin\Node\TableNode $table
36
     */
37
    public function mamNastępujaceDaneSamochodowChceJeDodacDoRepozytorium(TableNode $table)
38
    {
39
        $car = $table->getHash();
40
        foreach ($car as $item) {
41
            $dto = new CarDTO($item['id'],
42
                                $item['responsiblePerson'],
43
                                $item['model'],
44
                                $item['brand'],
45
                                $item['registrationNumber'],
46
                                $item['productionDate'],
47
                                $item['warrantyPeriod'],
48
                                $item['city'],
49
                                $item['department']
50
            );
51
52
            $newCar = new AddCarCommand(self::$carRepository, $dto);
53
            $newCar->execute();
54
        }
55
    }
56
57
    /**
58
     * @Given w repozytorium dodane samochody
59
     */
60
    public function wRepozytoriumDodaneSamochody()
61
    {
62
        self::$carRepository->isEmpty();
63
    }
64
65
    /**
66
     * @Then chciałbym pobrać samochód :id
67
     *
68
     * @param $id
69
     *
70
     * @throws \Madkom\RegistryApplication\Domain\CarManagement\CarExceptions\CarNotFoundException
71
     */
72
    public function chcialbymPobracSamochod($id)
73
    {
74
        self::$carRepository->find($id);
75
    }
76
77
    /**
78
     * @Then chciałbym aby nie było możliwe pobranie samochodu :id
79
     *
80
     * @param $id
81
     *
82
     * @throws \Madkom\RegistryApplication\Domain\CarManagement\CarExceptions\CarFoundException
83
     */
84
    public function chcialbymAbyNieByloMozliwePobranieSamochodu($id)
85
    {
86
        try {
87
            self::$carRepository->find($id);
88
        } catch (CarNotFoundException $e) {
0 ignored issues
show
Coding Style Comprehensibility introduced by
Consider adding a comment why this CATCH block is empty.
Loading history...
89
        } catch (CarFoundException $e) {
90
            throw new CarFoundException('Znaleziono samochód, który nie został dodany do repozytorium.');
91
        }
92
    }
93
94
    /**
95
     * @Then chciałbym usunąć samochód :id
96
     */
97
    public function chcialbymUsunacSamochod($id)
98
    {
99
        self::$carRepository->remove($id);
100
    }
101
102
    /**
103
     * @Then chciałbym pobrać listę wszystkich samochodów do tablicy
104
     */
105
    public function chcialbymPobracListeWszystkichSamochodowDoTablicy()
106
    {
107
        self::$carRepository->getAllPositions();
108
    }
109
110
    /**
111
     * @Then chciałbym zmienić osobę odpowiedzialną na :personId w samochodzie :carId
112
     */
113
    public function chcialbymZmienicOsobeOdpowiedzialnaNaWSamochodzie($carId, $personId)
114
    {
115
        $selectedCar = self::$carRepository->find($carId);
116
        $selectedCar->changeResponsiblePersonTo($personId);
117
    }
118
119
    /**
120
     * @Then chciałbym zmienić miasto na :city w którym się znajduje samochód :carId
121
     */
122
    public function chcialbymZmienicMiastoNaWKtorymSieZnajdujeSamochod($carId, $city)
123
    {
124
        $selectedCar = self::$carRepository->find($carId);
125
        $selectedCar->changeCity($city);
126
    }
127
128
    /**
129
     * @Then w samochodzie :carId chciałbym zmienić dział odpowiedzialny na :department
130
     */
131
    public function wSamochodzieChcialbymZmienicDzialOdpowiedzialnyNa($carId, $department)
132
    {
133
        $selectedCar = self::$carRepository->find($carId);
134
        $selectedCar->changeDepartment($department);
135
    }
136
137
    /**
138
     * @Then chciałbym w samochodzie :carId dodać informację o przeglądzie z numerem :inspectionId, w którym data ostatniego to :lastInspection, a data następnego to :upcomingInspection
139
     *
140
     * @throws \Madkom\RegistryApplication\Domain\CarManagement\CarExceptions\InvalidDatesException
141
     */
142 View Code Duplication
    public function chcialbymWSamochodzieDodacInformacjeOPrzegladzieZNumeremWKtorymDataOstatniegoToADataNastępnegoTo(
143
        $carId,
144
        $inspectionId,
145
        $lastInspection,
146
        $upcomingInspection
147
    ) {
148
        $selectedCar = self::$carRepository->find($carId);
149
        $newInspection = VehicleInspection::createVehicleInspection($inspectionId,
150
                                                                    $lastInspection,
151
                                                                    $upcomingInspection
152
        );
153
        try {
154
            $selectedCar->addVehicleInspection($newInspection);
155
        } catch (InvalidDatesException $e) {
156
        }
157
    }
158
159
    /**
160
     * @Then chciałbym aby nie było możliwe dodanie dwóch przeglądów o takim samym :id do jednego samochodu :carId
161
     */
162 View Code Duplication
    public function chcialbymAbyNieByloMozliweDodanieDwochPrzegladowOTakimSamym($carId, $inspectionId)
163
    {
164
        $selectedCar = self::$carRepository->find($carId);
165
        $newInspection = VehicleInspection::createVehicleInspection($inspectionId, '2015-12-30', '2016-12-30');
166
        try {
167
            $selectedCar->addVehicleInspection($newInspection);
168
        } catch (DuplicatedVehicleInspectionException $e) {
169
        }
170
    }
171
172
    /**
173
     * @Then przygotuję nowy plik dowodu rejestracyjnego o następujących parametrach:
174
     */
175
    public function przygotujeNowyPlikDowoduRejestracyjnegoONastepujacychParametrach(TableNode $table)
176
    {
177
        $documents = $table->getHash();
178
        foreach ($documents as $document) {
179
            $dto = new DocumentDTO($document['id'],
180
                                        $document['source'],
181
                                        $document['title'],
182
                                        $document['description']
183
            );
184
185
            $carDocument = new AddCarDocumentCommand(self::$carRepository, $document['carId'], $dto);
186
            $carDocument->execute();
187
        }
188
    }
189
190
    /**
191
     * @Then chciałbym usunąć plik :documentId skanu dowodu rejestracyjnego z samochodu :carId
192
     */
193
    public function chcialbymUsunacPlikSkanuDowoduRejestracyjnegoZSamochodu($carId, $documentId)
194
    {
195
        $repository = self::$carRepository;
196
        $selectedCar = $repository->find($carId);
197
        $selectedCar->getCarDocument();
198
199
        try {
200
            $selectedCar->removeCarDocument($documentId);
201
            throw new \InvalidArgumentException();
202
        } catch (\Exception $e) {
203
        }
204
    }
205
206
    /**
207
     * @Then chciałbym, aby nie było możliwe usunięcie nieistniejącego pliku :documentId z samochodu :carId
208
     */
209
    public function chcialbymAbyNieByloMozliweUsuniecieNieistniejacegoPlikuZSamochodu($carId, $documentId)
210
    {
211
        $repository = self::$carRepository;
212
        $selectedCar = $repository->find($carId);
213
214
        try {
215
            $selectedCar->removeCarDocument($documentId);
216
            throw new \InvalidArgumentException();
217
        } catch (\Exception $e) {
218
        }
219
    }
220
}
221