Skip to content

Commit

Permalink
feat: rent
Browse files Browse the repository at this point in the history
  • Loading branch information
gabbloquet committed Mar 16, 2024
1 parent 9fe186c commit b5333b0
Show file tree
Hide file tree
Showing 44 changed files with 211 additions and 59 deletions.
3 changes: 3 additions & 0 deletions .idea/bdd-ddd-affordance-training.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions service/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -93,14 +93,20 @@
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-spring</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit-platform-engine</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
</dependencies>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package io.github.gabbloquet.todolist;
package io.github.gabbloquet;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class TodolistApplication {
public class Application {
public static void main(String... args) {
SpringApplication.run(TodolistApplication.class, args);
SpringApplication.run(Application.class, args);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package io.github.gabbloquet.rent.domain.model;

public record Car(String name, int price) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package io.github.gabbloquet.rent.domain.model;

public record Customer(String name) {
public RentalRequest rent(Car car) {
if(car.name().contains("TWINGO")){
return new RentalRequest(
RentalRequest.Status.VALIDATED,
null
);
}
return new RentalRequest(
RentalRequest.Status.NOT_VALIDATED,
"Numéro de téléphone incompatible"
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package io.github.gabbloquet.rent.domain.model;

public record RentalRequest(Status status, String message) {

public enum Status {
VALIDATED,
NOT_VALIDATED
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import io.github.gabbloquet.todolist.todolist.model.Todolist;
import io.github.gabbloquet.todolist.todolist.model.TodolistNotFound;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package io.github.gabbloquet.todolist;
package io.github.gabbloquet;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class TodolistApplicationTests {
class ApplicationTests {

@Test
void contextLoads() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.gabbloquet.todolist;
package io.github.gabbloquet;

import com.fasterxml.jackson.databind.ObjectMapper;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package io.github.gabbloquet.features.rent;

import org.springframework.boot.test.context.TestConfiguration;

import static org.mockito.Mockito.mock;

@TestConfiguration
public class RentSpringTestConfig {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package io.github.gabbloquet.features.rent;

import io.cucumber.spring.CucumberContextConfiguration;
import org.junit.platform.suite.api.ConfigurationParameter;
import org.junit.platform.suite.api.IncludeEngines;
import org.junit.platform.suite.api.SelectClasspathResource;
import org.junit.platform.suite.api.Suite;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;

import static io.cucumber.junit.platform.engine.Constants.GLUE_PROPERTY_NAME;
import static io.cucumber.junit.platform.engine.Constants.PLUGIN_PROPERTY_NAME;

@Suite
@IncludeEngines("cucumber")
@SelectClasspathResource("features/rent")
@ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty")
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "io.github.gabbloquet.features.rent")
public record RunRentFeatures() {
@ActiveProfiles("test")
@CucumberContextConfiguration
@SpringBootTest(classes = RentSpringTestConfig.class)
public record CucumberRentConfiguration() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package io.github.gabbloquet.features.rent.domain.specs;

import io.cucumber.java.fr.Alors;
import io.cucumber.java.fr.Et;
import io.cucumber.java.fr.Etantdonné;
import io.cucumber.java.fr.Quand;
import io.github.gabbloquet.rent.domain.model.Car;
import io.github.gabbloquet.rent.domain.model.Customer;
import io.github.gabbloquet.rent.domain.model.RentalRequest;

import static org.assertj.core.api.Assertions.assertThat;

public class ValidateRentSpec {

private Customer customer;
private Car car;
private RentalRequest rentalRequest;

@Etantdonné("Mr {string} propriétaire d’un téléphone jetable")
public void mr_propriétaire_d_un_téléphone_jetable(String name) {
this.customer = new Customer(name);
}

@Etantdonné("Mr {string} ayant un numéro provisoire")
public void mrAyantUnNumeroProvisoire(String name) {
this.customer = new Customer(name);
}

@Etantdonné("une {string} à {int}€ par mois")
public void une_voiture_a(String carName, int price) {
this.car = new Car(carName, price);
}

@Quand("Mr {string} demande à louer une {string}")
public void mrDemandeALouerUne(String name, String carName) {
rentalRequest = customer.rent(car);
}

@Alors("sa demande de location est invalidée")
public void saDemandeDeLocationEstInvalidee() {
assertThat(rentalRequest.status()).isEqualTo(RentalRequest.Status.NOT_VALIDATED);
}

@Alors("Mr Tapie est informé {string}")
public void mrTapieEstInformeNumeroDeTelephoneIncompatible(String expectedMessage) {
assertThat(rentalRequest.message()).isEqualTo(expectedMessage);
}

@Alors("sa demande de location est validée")
public void saDemandeDeLocationEstValidee() {
assertThat(rentalRequest.status()).isEqualTo(RentalRequest.Status.VALIDATED);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package io.github.gabbloquet.features.todolist;

import io.cucumber.spring.CucumberContextConfiguration;
import org.junit.platform.suite.api.ConfigurationParameter;
import org.junit.platform.suite.api.IncludeEngines;
import org.junit.platform.suite.api.SelectClasspathResource;
import org.junit.platform.suite.api.Suite;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;

import static io.cucumber.junit.platform.engine.Constants.GLUE_PROPERTY_NAME;
import static io.cucumber.junit.platform.engine.Constants.PLUGIN_PROPERTY_NAME;

@Suite
@IncludeEngines("cucumber")
@SelectClasspathResource("features/todolist")
@ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty")
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "io.github.gabbloquet.features.todolist")
public record RunTodolistFeatures() {
@ActiveProfiles("test")
@CucumberContextConfiguration
@SpringBootTest(classes = TodolistSpringTestConfig.class)
public record CucumberTodolistConfiguration() {
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.github.gabbloquet.todolist.domain;
package io.github.gabbloquet.features.todolist;

import io.cucumber.spring.ScenarioScope;
import io.github.gabbloquet.features.todolist.domain.ScenarioState;
import io.github.gabbloquet.todolist.task.TaskRepository;
import io.github.gabbloquet.todolist.task.TaskService;
import io.github.gabbloquet.todolist.task.TaskUseCaseTransaction;
Expand Down Expand Up @@ -34,6 +35,7 @@

import static org.mockito.Mockito.mock;

@TestConfiguration
public class TodolistSpringTestConfig {

@Bean
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.gabbloquet.todolist.domain;
package io.github.gabbloquet.features.todolist.domain;

import io.github.gabbloquet.todolist.task.model.TaskId;
import io.github.gabbloquet.todolist.task.model.TaskState;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.github.gabbloquet.todolist.domain.specs;
package io.github.gabbloquet.features.todolist.domain.specs;

import io.cucumber.java.fr.Lorsque;
import io.github.gabbloquet.todolist.domain.ScenarioState;
import io.github.gabbloquet.features.todolist.domain.ScenarioState;
import io.github.gabbloquet.todolist.task.TaskService;
import io.github.gabbloquet.todolist.task.addTask.AddTask;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package io.github.gabbloquet.todolist.domain.specs;
package io.github.gabbloquet.features.todolist.domain.specs;

import io.cucumber.java.fr.Alors;
import io.cucumber.java.fr.Et;
import io.cucumber.java.fr.Lorsque;
import io.github.gabbloquet.todolist.domain.ScenarioState;
import io.github.gabbloquet.features.todolist.domain.ScenarioState;
import io.github.gabbloquet.todolist.task.TaskService;
import io.github.gabbloquet.todolist.task.completeTask.CompleteTask;
import io.github.gabbloquet.todolist.task.model.TaskId;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.github.gabbloquet.todolist.domain.specs;
package io.github.gabbloquet.features.todolist.domain.specs;

import io.cucumber.java.fr.Lorsque;
import io.github.gabbloquet.todolist.domain.ScenarioState;
import io.github.gabbloquet.features.todolist.domain.ScenarioState;
import io.github.gabbloquet.todolist.task.TaskService;
import io.github.gabbloquet.todolist.task.deleteTask.DeleteTask;
import io.github.gabbloquet.todolist.task.model.TaskId;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.github.gabbloquet.todolist.domain.specs;
package io.github.gabbloquet.features.todolist.domain.specs;

import io.cucumber.java.fr.Quand;
import io.github.gabbloquet.todolist.domain.ScenarioState;
import io.github.gabbloquet.features.todolist.domain.ScenarioState;
import io.github.gabbloquet.todolist.todolist.filter.TodolistQueries;
import org.springframework.beans.factory.annotation.Autowired;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.gabbloquet.todolist.domain.specs;
package io.github.gabbloquet.features.todolist.domain.specs;

import io.cucumber.java.fr.Lorsque;
import io.github.gabbloquet.todolist.todolist.TodolistService;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.github.gabbloquet.todolist.domain.specs;
package io.github.gabbloquet.features.todolist.domain.specs;

import io.cucumber.java.fr.Lorsque;
import io.github.gabbloquet.todolist.domain.ScenarioState;
import io.github.gabbloquet.features.todolist.domain.ScenarioState;
import io.github.gabbloquet.todolist.task.TaskService;
import io.github.gabbloquet.todolist.task.model.TaskId;
import io.github.gabbloquet.todolist.task.renameTask.RenameTask;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.github.gabbloquet.todolist.domain.specs;
package io.github.gabbloquet.features.todolist.domain.specs;

import io.cucumber.java.fr.Lorsque;
import io.github.gabbloquet.todolist.domain.ScenarioState;
import io.github.gabbloquet.features.todolist.domain.ScenarioState;
import io.github.gabbloquet.todolist.task.model.TaskId;
import io.github.gabbloquet.todolist.todolist.TodolistService;
import io.github.gabbloquet.todolist.todolist.deprioritizeTask.DeprioritizeTask;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.gabbloquet.todolist.domain.specs;
package io.github.gabbloquet.features.todolist.domain.specs;

import io.cucumber.java.fr.Etantdonné;
import io.github.gabbloquet.todolist.todolist.model.LocalDateTimeSupplier;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package io.github.gabbloquet.todolist.domain.specs;
package io.github.gabbloquet.features.todolist.domain.specs;

import io.cucumber.datatable.DataTable;
import io.cucumber.java.Before;
import io.cucumber.java.fr.Alors;
import io.cucumber.java.fr.Etantdonné;
import io.github.gabbloquet.todolist.domain.ScenarioState;
import io.github.gabbloquet.features.todolist.domain.ScenarioState;
import io.github.gabbloquet.todolist.task.TaskRepository;
import io.github.gabbloquet.todolist.task.addTask.TaskCreated;
import io.github.gabbloquet.todolist.task.completeTask.TaskCompleted;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.gabbloquet.todolist.domain.specs.mappers;
package io.github.gabbloquet.features.todolist.domain.specs.mappers;

import io.cucumber.datatable.DataTable;
import io.cucumber.java.DataTableType;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.gabbloquet.todolist.domain.task.infra;
package io.github.gabbloquet.features.todolist.domain.task.infra;

import io.github.gabbloquet.todolist.task.infra.InMemoryTaskRepository;
import io.github.gabbloquet.todolist.task.model.Task;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.gabbloquet.todolist.domain.todolist.filter;
package io.github.gabbloquet.features.todolist.domain.todolist.filter;

import io.github.gabbloquet.todolist.task.model.TaskId;
import io.github.gabbloquet.todolist.todolist.TodolistUseCaseTransaction;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.gabbloquet.todolist.infrastructure.api;
package io.github.gabbloquet.features.todolist.infrastructure.api;

import io.github.gabbloquet.todolist.task.TaskService;
import io.github.gabbloquet.todolist.task.addTask.AddTask;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.gabbloquet.todolist.infrastructure.api;
package io.github.gabbloquet.features.todolist.infrastructure.api;

import io.github.gabbloquet.todolist.task.addTask.AddTask;
import io.github.gabbloquet.todolist.todolist.TodolistService;
Expand All @@ -23,7 +23,7 @@
import java.util.ArrayList;
import java.util.List;

import static io.github.gabbloquet.todolist.TestUtils.asJsonString;
import static io.github.gabbloquet.TestUtils.asJsonString;
import static org.hamcrest.CoreMatchers.is;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.gabbloquet.todolist.infrastructure.api.dto;
package io.github.gabbloquet.features.todolist.infrastructure.api.dto;

import io.github.gabbloquet.todolist.todolist.infra.dto.TodolistResponseAssembler;
import org.junit.jupiter.api.extension.ExtendWith;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.github.gabbloquet.todolist.utils;
package io.github.gabbloquet.features.todolist.utils;

import io.github.gabbloquet.todolist.utils.ArrayUtils;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;

Expand Down

This file was deleted.

Loading

0 comments on commit b5333b0

Please sign in to comment.