Skip to content

Commit c9632e5

Browse files
committed
CQRS 4.5 - TransitAnalyzer - zabezpieczenie testami
1 parent 6894403 commit c9632e5

File tree

5 files changed

+310
-13
lines changed

5 files changed

+310
-13
lines changed

src/main/java/io/legacyfighter/cabs/dto/AddressDTO.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public AddressDTO(Address a) {
1717
additionalNumber = a.getAdditionalNumber();
1818
postalCode = a.getPostalCode();
1919
name = a.getName();
20+
hash = a.getHash();
2021
}
2122

2223
private String country;
@@ -35,6 +36,8 @@ public AddressDTO(Address a) {
3536

3637
private String name;
3738

39+
private Integer hash;
40+
3841
public AddressDTO(String country, String city, String street, Integer buildingNumber) {
3942
this.country = country;
4043
this.city = city;
@@ -106,6 +109,14 @@ public void setName(String name) {
106109
this.name = name;
107110
}
108111

112+
public Integer getHash() {
113+
return hash;
114+
}
115+
116+
public void setHash(Integer hash) {
117+
this.hash = hash;
118+
}
119+
109120
public Address toAddressEntity() {
110121
Address address = new Address();
111122
address.setAdditionalNumber(this.getAdditionalNumber());

src/main/java/io/legacyfighter/cabs/entity/Address.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@ public Address(String country, String city, String street, int buildingNumber) {
4141
this.buildingNumber = buildingNumber;
4242
}
4343

44+
public Address(String country, String district, String city, String street, int buildingNumber) {
45+
this.country = country;
46+
this.district = district;
47+
this.city = city;
48+
this.street = street;
49+
this.buildingNumber = buildingNumber;
50+
}
51+
4452
public String getCountry() {
4553
return country;
4654
}

src/main/java/io/legacyfighter/cabs/ui/TransitAnalyzerController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class TransitAnalyzerController {
1818
TransitAnalyzer transitAnalyzer;
1919

2020
@GetMapping("/transitAnalyze/{clientId}/{addressId}")
21-
AnalyzedAddressesDTO analyze(@PathVariable Long clientId, @PathVariable Long addressId) {
21+
public AnalyzedAddressesDTO analyze(@PathVariable Long clientId, @PathVariable Long addressId) {
2222
List<Address> addresses = transitAnalyzer.analyze(clientId, addressId);
2323
List<AddressDTO> addressDTOs = addresses
2424
.stream()

src/test/java/io/legacyfighter/cabs/common/Fixtures.java

Lines changed: 57 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,20 @@
88
import io.legacyfighter.cabs.money.Money;
99
import io.legacyfighter.cabs.repository.*;
1010

11-
import io.legacyfighter.cabs.service.AwardsService;
12-
import io.legacyfighter.cabs.service.CarTypeService;
13-
import io.legacyfighter.cabs.service.ClaimService;
14-
import io.legacyfighter.cabs.service.DriverService;
11+
import io.legacyfighter.cabs.service.*;
1512
import org.springframework.beans.factory.annotation.Autowired;
1613
import org.springframework.stereotype.Component;
1714

15+
import java.time.Clock;
1816
import java.time.Instant;
1917
import java.time.LocalDateTime;
2018
import java.time.ZoneOffset;
19+
import java.time.temporal.ChronoUnit;
2120
import java.util.stream.IntStream;
2221

22+
import static io.legacyfighter.cabs.entity.CarType.CarClass.VAN;
2323
import static java.util.stream.IntStream.range;
24+
import static org.mockito.Mockito.when;
2425

2526

2627
@Component
@@ -50,9 +51,18 @@ public class Fixtures {
5051
@Autowired
5152
AwardsService awardsService;
5253

54+
@Autowired
55+
TransitService transitService;
56+
5357
@Autowired
5458
DriverAttributeRepository driverAttributeRepository;
5559

60+
@Autowired
61+
DriverSessionService driverSessionService;
62+
63+
@Autowired
64+
DriverTrackingService driverTrackingService;
65+
5666
public Client aClient() {
5767
return clientRepository.save(new Client());
5868
}
@@ -104,28 +114,63 @@ public Driver aDriver(Status status, String name, String lastName, String driver
104114
return driverService.createDriver(driverLicense, lastName, name, Driver.Type.REGULAR, status, "");
105115
}
106116

117+
public Driver aNearbyDriver(String plateNumber) {
118+
Driver driver = aDriver();
119+
driverHasFee(driver, DriverFee.FeeType.FLAT, 10);
120+
driverSessionService.logIn(driver.getId(), plateNumber, VAN, "BRAND");
121+
driverTrackingService.registerPosition(driver.getId(), 1, 1, Instant.now());
122+
return driver;
123+
}
124+
107125
public Transit aCompletedTransitAt(int price, Instant when) {
108126
return aCompletedTransitAt(price, when, aClient(), aDriver());
109127
}
110128

111-
public Transit aCompletedTransitAt(int price, Instant when, Client client, Driver driver) {
112-
Address destination = addressRepository.save(new Address("Polska", "Warszawa", "Zytnia", 20));
129+
public Transit aRequestedAndCompletedTransit(int price, Instant publishedAt, Instant completedAt, Client client, Driver driver, Address from, Address destination) {
130+
from = addressRepository.save(from);
131+
destination = addressRepository.save(destination);
113132
Transit transit = new Transit(
114-
addressRepository.save(new Address("Polska", "Warszawa", "Młynarska", 20)),
133+
from,
115134
destination,
116135
client,
117136
null,
118-
when,
137+
publishedAt,
119138
Distance.ZERO);
120-
transit.publishAt(when);
139+
transit.publishAt(publishedAt);
121140
transit.proposeTo(driver);
122-
transit.acceptBy(driver, Instant.now());
123-
transit.start(Instant.now());
124-
transit.completeAt(Instant.now(), destination, Distance.ofKm(20));
141+
transit.acceptBy(driver, publishedAt);
142+
transit.start(publishedAt);
143+
transit.completeAt(completedAt, destination, Distance.ofKm(1));
125144
transit.setPrice(new Money(price));
126145
return transitRepository.save(transit);
127146
}
128147

148+
public Transit aCompletedTransitAt(int price, Instant publishedAt, Instant completedAt, Client client, Driver driver) {
149+
Address destination = new Address("Polska", "Warszawa", "Zytnia", 20);
150+
Address from = new Address("Polska", "Warszawa", "Młynarska", 20);
151+
return aRequestedAndCompletedTransit(price, publishedAt, completedAt, client, driver, from, destination);
152+
}
153+
154+
public Transit aCompletedTransitAt(int price, Instant publishedAt, Client client, Driver driver) {
155+
return aCompletedTransitAt(price, publishedAt, publishedAt.plus(10, ChronoUnit.MINUTES), client, driver);
156+
}
157+
158+
public Transit aRequestedAndCompletedTransit(int price, Instant publishedAt, Instant completedAt, Client client, Driver driver, Address from, Address destination, Clock clock) {
159+
from = addressRepository.save(from);
160+
destination = addressRepository.save(destination);
161+
162+
when(clock.instant()).thenReturn(publishedAt);
163+
Transit transit = transitService.createTransit(client.getId(), from, destination, VAN);
164+
transitService.publishTransit(transit.getId());
165+
transitService.findDriversForTransit(transit.getId());
166+
transitService.acceptTransit(driver.getId(), transit.getId());
167+
transitService.startTransit(driver.getId(), transit.getId());
168+
when(clock.instant()).thenReturn(completedAt);
169+
transitService.completeTransit(driver.getId(), transit.getId(), destination);
170+
171+
return transitRepository.getOne(transit.getId());
172+
}
173+
129174
public CarType anActiveCarCategory(CarType.CarClass carClass) {
130175
CarTypeDTO carTypeDTO = new CarTypeDTO();
131176
carTypeDTO.setCarClass(carClass);

0 commit comments

Comments
 (0)