-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
keeping planned delivieries amount on adatper side implemented
- Loading branch information
1 parent
0508c58
commit 57348e5
Showing
8 changed files
with
135 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
17 changes: 17 additions & 0 deletions
17
...rc/main/java/io/dddbyexamples/delivery/planning/plan/DefaultPlanCompletenessProvider.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package io.dddbyexamples.delivery.planning.plan; | ||
|
||
import java.time.LocalDate; | ||
|
||
import io.dddbyexamples.delivery.planning.Amounts; | ||
import lombok.AllArgsConstructor; | ||
|
||
@AllArgsConstructor | ||
class DefaultPlanCompletenessProvider implements PlanCompletenessProvider { | ||
|
||
private final InMemoryPlannedAmounts plannedAmounts; | ||
|
||
@Override | ||
public PlanCompleteness get(LocalDate date) { | ||
return new PlanCompleteness(date, plannedAmounts.get(date), Amounts.empty(), Amounts.empty()); | ||
} | ||
} |
22 changes: 22 additions & 0 deletions
22
...dapters/src/main/java/io/dddbyexamples/delivery/planning/plan/InMemoryPlannedAmounts.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package io.dddbyexamples.delivery.planning.plan; | ||
|
||
import java.time.LocalDate; | ||
import java.util.Map; | ||
import java.util.concurrent.ConcurrentHashMap; | ||
|
||
import io.dddbyexamples.delivery.planning.Amounts; | ||
|
||
class InMemoryPlannedAmounts { | ||
|
||
private final Map<LocalDate, Amounts> amounts = new ConcurrentHashMap<>(); | ||
|
||
Amounts get(LocalDate date) { | ||
return amounts.computeIfAbsent(date, localDate -> Amounts.empty()); | ||
} | ||
|
||
void update(LocalDate date, Amounts diff) { | ||
Amounts updatedAmount = this.amounts.computeIfAbsent(date, localDate -> Amounts.empty()); | ||
|
||
amounts.put(date, updatedAmount.sum(diff)); | ||
} | ||
} |
21 changes: 21 additions & 0 deletions
21
...g-adapters/src/main/java/io/dddbyexamples/delivery/planning/plan/SimpleDefaultEvents.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package io.dddbyexamples.delivery.planning.plan; | ||
|
||
import io.dddbyexamples.delivery.planning.DeliveredAmountsChanged; | ||
import io.dddbyexamples.delivery.planning.DeliveryEvents; | ||
import io.dddbyexamples.delivery.planning.PlanningCompleted; | ||
import lombok.AllArgsConstructor; | ||
|
||
@AllArgsConstructor | ||
class SimpleDefaultEvents implements DeliveryEvents { | ||
|
||
private final InMemoryPlannedAmounts plannedAmounts; | ||
|
||
@Override | ||
public void emit(DeliveredAmountsChanged event) { | ||
plannedAmounts.update(event.getDate(), event.getDiff()); | ||
} | ||
|
||
@Override | ||
public void emit(PlanningCompleted event) { | ||
} | ||
} |
69 changes: 69 additions & 0 deletions
69
...pters/src/test/groovy/io/dddbyexamples/delivery/planning/plan/PlanCompletenessSpec.groovy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
package io.dddbyexamples.delivery.planning.plan | ||
|
||
import io.dddbyexamples.delivery.planning.Amounts | ||
import io.dddbyexamples.delivery.planning.DeliveryPlanningService | ||
import io.dddbyexamples.delivery.planning.delivery.* | ||
import io.dddbyexamples.delivery.planning.delivery.capacity.SimplePayloadCapacityPolicy | ||
import spock.lang.Specification | ||
|
||
import java.time.LocalDate | ||
import java.time.LocalDateTime | ||
import java.time.LocalTime | ||
|
||
class PlanCompletenessSpec extends Specification { | ||
|
||
private String refNo = "refNo" | ||
|
||
private InMemoryPlannedAmounts amounts = new InMemoryPlannedAmounts() | ||
PlanCompletenessProvider planCompletenessProvider = new DefaultPlanCompletenessProvider(amounts) | ||
|
||
|
||
DeliveryFactory deliveryFactory = new DeliveryFactory(new SimplePayloadCapacityPolicy(), new SimpleDefaultEvents(amounts)) | ||
|
||
DeliveryPlanningService deliveryPlanningService = new DeliveryPlanningService(deliveryFactory, new DeliveryRepository() { | ||
|
||
Map<Object, Delivery> deliveries = new HashMap<>() | ||
|
||
@Override | ||
Delivery get(Object id) { | ||
return deliveries.get(id); | ||
} | ||
|
||
@Override | ||
void save(Delivery model) { | ||
deliveries.put(model.getId(), model) | ||
} | ||
}, | ||
|
||
new PlanRepository() { | ||
@Override | ||
DeliveryPlan get(Object id) { | ||
return null | ||
} | ||
|
||
@Override | ||
void save(DeliveryPlan model) { | ||
|
||
} | ||
}) | ||
|
||
private date = LocalDate.now() | ||
|
||
Transport transport = new Transport(LocalDateTime.of(date, LocalTime.MIDNIGHT), new TransportType("palette", 22)) | ||
Payload payload = new Payload(Collections.singletonList(new Payload.TransportedProduct(refNo, new StorageUnit(refNo, 10), 1))) | ||
Payload editedPayload = new Payload(Collections.singletonList(new Payload.TransportedProduct(refNo, new StorageUnit(refNo, 20), 1))) | ||
private Amounts scheduledAmounts = Amounts.of(refNo, 10) | ||
|
||
def 'plan completeness should contain proper plannned amount'() { | ||
when: 'logistician schedules the delivery' | ||
ScheduleDelivery command = new ScheduleDelivery(transport, payload) | ||
UUID uuid = deliveryPlanningService.scheduleDelivery(command) | ||
then: 'delivery planned for the date should be included in plan completeness' | ||
assert planCompletenessProvider.get(date).getPlanned() == scheduledAmounts | ||
when: 'logistician edits the delivery' | ||
EditDelivery editDelivery = new EditDelivery(uuid, transport, editedPayload) | ||
deliveryPlanningService.editDelivery(editDelivery) | ||
then: 'delivery planned for the date should be included in plan completeness' | ||
assert planCompletenessProvider.get(date).getPlanned() == Amounts.of(refNo, 20) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
13 changes: 0 additions & 13 deletions
13
...model/src/test/groovy/io/dddbyexamples/delivery/planning/plan/PlanCompletenessSpec.groovy
This file was deleted.
Oops, something went wrong.