Go to file
2026-01-12 11:33:54 +01:00
.mvn/wrapper Technical exercise ITX v1.0 2026-01-12 11:33:54 +01:00
src Technical exercise ITX v1.0 2026-01-12 11:33:54 +01:00
.gitattributes Technical exercise ITX v1.0 2026-01-12 11:33:54 +01:00
.gitignore Technical exercise ITX v1.0 2026-01-12 11:33:54 +01:00
mvnw Technical exercise ITX v1.0 2026-01-12 11:33:54 +01:00
mvnw.cmd Technical exercise ITX v1.0 2026-01-12 11:33:54 +01:00
pom.xml Technical exercise ITX v1.0 2026-01-12 11:33:54 +01:00
README.md Technical exercise ITX v1.0 2026-01-12 11:33:54 +01:00

Price Service Technical Exercise

Description

Spring Boot service that exposes a REST endpoint to retrieve the applicable price for a product, brand and application date.

The service uses:

  • Spring Boot
  • Spring Data JPA
  • H2 in-memory database
  • Liquibase for schema and data initialization
  • Maven
  • Integration tests with MockMvc

The pricing logic follows the specification provided in the exercise, including date ranges and priority handling.


Data Model

The service is initialized with sample data equivalent to the provided PRICES table, including:

  • Brand identifier
  • Product identifier
  • Price list
  • Application date range (start / end)
  • Priority
  • Final price

If multiple prices apply for the same date range, the one with the highest priority is selected.


REST Endpoint

Request

GET /api/price/{brandId}/{productId}?applicationDate={applicationDate}

Path parameters:

  • brandId: brand identifier
  • productId: product identifier

Request parameters:

  • applicationDate: date and time of application (ISO-8601 format)

Example:

/api/price/1/35455?applicationDate=2020-06-14T10:00:00


Response

The service returns:

  • product identifier
  • brand identifier
  • applicable price list
  • start date
  • end date
  • final price

Running the Application

To start the application locally:

mvn spring-boot:run

The service will be available on port 8080.


Running Tests

The project includes integration tests that validate the scenarios described in the exercise.

To execute the tests:

mvn test

The tests:

  • Load the Spring context
  • Initialize the in-memory H2 database via Liquibase
  • Validate the REST endpoint responses

Notes

The database is fully in-memory and requires no external setup.

Liquibase is used to manage database schema and initial data.