From 58c344a66bcd5b802ef51044dbc8c84ceac366d0 Mon Sep 17 00:00:00 2001 From: MobR10 <100953132+MobR10@users.noreply.github.com> Date: Thu, 18 May 2023 21:22:23 +0300 Subject: [PATCH 1/4] tema validator raffa --- .../ro/raffa/curs/validator/CarValidator.java | 48 ++++ .../curs/validator/CarValidatorTest.java | 208 +++++++++++++++++- 2 files changed, 248 insertions(+), 8 deletions(-) diff --git a/src/main/java/ro/raffa/curs/validator/CarValidator.java b/src/main/java/ro/raffa/curs/validator/CarValidator.java index 02b0d5b..ccd0b59 100644 --- a/src/main/java/ro/raffa/curs/validator/CarValidator.java +++ b/src/main/java/ro/raffa/curs/validator/CarValidator.java @@ -1,5 +1,8 @@ package ro.raffa.curs.validator; +import java.math.BigDecimal; + + import lombok.experimental.UtilityClass; import ro.raffa.curs.exception.CarValidatorException; import ro.raffa.curs.model.Car; @@ -8,9 +11,15 @@ public class CarValidator { public static Boolean validateCar(Car car) throws CarValidatorException { validateCarMaker(car.getMaker()); + validateCarModel(car.getModel()); + validateCarColor(car.getColor()); + validateCarYear(car.getYear()); + validateCarPrice(car.getPrice()); + validateCarCurrency(car.getCurrency()); return true; } + private static void validateCarMaker(String name) throws CarValidatorException { if (name == null || name.isEmpty()) { throw new CarValidatorException(90001, name); @@ -22,5 +31,44 @@ private static void validateCarMaker(String name) throws CarValidatorException { throw new CarValidatorException(90003, name); } } + + private static void validateCarCurrency(String currency) throws CarValidatorException{ + if(currency == null || currency.isEmpty()) { + throw new CarValidatorException(9004, currency); + } + if(!currency.equals("EUR")){ + throw new CarValidatorException(9005, currency); + } + } + + private static void validateCarPrice(BigDecimal price) { + if(price == null || price.equals(BigDecimal.valueOf(0))) { + throw new CarValidatorException(9006, price.toString()); + } + } + + private static void validateCarYear(Integer year) { + if(year== 0 || year == null) { + throw new CarValidatorException(9007, year.toString()); + } + } + + private static void validateCarModel(String model) { + if(model == null || model.isEmpty()) { + throw new CarValidatorException(9008, model); + } + if(model.toLowerCase().charAt(0) == model.charAt(0)) { + throw new CarValidatorException(9009, model); + } + } + + private static void validateCarColor(String color) { + if(color == null || color.isEmpty()) { + throw new CarValidatorException(9010, color); + } + if(color.toLowerCase().charAt(0) == color.charAt(0)) { + throw new CarValidatorException(9011, color); + } + } } diff --git a/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java b/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java index 9aec6a9..0221bc2 100644 --- a/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java +++ b/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java @@ -18,7 +18,7 @@ public class CarValidatorTest { @Test void validateCar_name_null() { try { - CarValidator.validateCar(createCar(null)); + CarValidator.validateCar(carForMaker(null)); } catch (CarValidatorException e) { assertEquals(90001, e.getErrorCode()); } @@ -28,7 +28,7 @@ void validateCar_name_null() { @Test void validateCar_name_empty() { try { - CarValidator.validateCar(createCar("")); + CarValidator.validateCar(carForMaker("")); } catch (CarValidatorException e) { assertEquals(90001, e.getErrorCode()); } @@ -38,7 +38,7 @@ void validateCar_name_empty() { @Test void validateCar_name_over_15() { try { - CarValidator.validateCar(createCar("Kiewjiejfiejefwefwewef")); + CarValidator.validateCar(carForMaker("Kiewjiejfiejefwefwewef")); } catch (CarValidatorException e) { assertEquals(90002, e.getErrorCode()); } @@ -48,7 +48,7 @@ void validateCar_name_over_15() { @Test void validateCar_name_firstChar_lowerCase() { try { - CarValidator.validateCar(createCar("mercedes")); + CarValidator.validateCar(carForMaker("mercedes")); } catch (CarValidatorException e) { assertEquals(90003, e.getErrorCode()); } @@ -57,17 +57,209 @@ void validateCar_name_firstChar_lowerCase() { @Test void validateCar_name_okay() { - Boolean result = CarValidator.validateCar(createCar("Mercedes")); + Boolean result = CarValidator.validateCar(carForMaker("Mercedes")); assertTrue(result); } - Car createCar(String maker) { + @Test + void validateCar_model_null() { + try { + CarValidator.validateCar(carForModel(null)); + } catch (CarValidatorException e) { + assertEquals(9008, e.getErrorCode()); + } + } + + @Test + void validateCar_model_empty() { + try { + CarValidator.validateCar(carForModel("")); + } catch (CarValidatorException e) { + assertEquals(9008, e.getErrorCode()); + } + } + + @Test + void validateCar_model_firstChar_lowerCase() { + try { + CarValidator.validateCar(carForModel("toronto")); + } catch (CarValidatorException e) { + assertEquals(9009, e.getErrorCode()); + } + } + + @Test + void validateCar_model_ok() { + assertTrue(CarValidator.validateCar(carForMaker("Toronto"))); + } + + @Test + void validateCar_color_null() { + try { + CarValidator.validateCar(carForColor(null)); + } catch (CarValidatorException e) { + assertEquals(9010, e.getErrorCode()); + } + } + + @Test + void validateCar_color_empty() { + try { + CarValidator.validateCar(carForColor("")); + } catch (CarValidatorException e) { + assertEquals(9010, e.getErrorCode()); + } + } + + @Test + void validateCar_color_firstChar_lowerCase() { + try { + CarValidator.validateCar(carForColor("color")); + } catch (CarValidatorException e) { + assertEquals(9011, e.getErrorCode()); + } + } + + @Test + void validateCar_color_ok() { + assertTrue(CarValidator.validateCar(carForColor("Color"))); + } + + @Test + void validateCar_year_is0() { + try { + CarValidator.validateCar(carForYear(0)); + } catch (CarValidatorException e) { + assertEquals(9007, e.getErrorCode()); + } + } + + // @Test + // void validateCar_year_null() { + // try { + // CarValidator.validateCar(carForYear(null)); + // } catch (CarValidatorException e) { + // assertEquals(9007, e.getErrorCode()); + // } + // } SOMETHING NOT WORKING HERE + + @Test + void validateCar_year_ok() { + assertTrue(CarValidator.validateCar(carForYear(2005))); + } + + // @Test + // void validateCar_price_null() { + // try { + // CarValidator.validateCar(carForPrice(null)); + // } catch (CarValidatorException e) { + // assertEquals(9006, e.getErrorCode()); + // } + // } SOMETHING NOT WORKING HERE + + @Test + void validateCar_price_is0() { + try { + CarValidator.validateCar(carForPrice(BigDecimal.valueOf(0))); + } catch (CarValidatorException e) { + assertEquals(9006, e.getErrorCode()); + } + } + + @Test + void validateCar_price_ok() { + assertTrue(CarValidator.validateCar(carForPrice(BigDecimal.valueOf(25000)))); + } + + @Test + void validateCar_currency_null() { + try { + CarValidator.validateCar(carForCurrency(null)); + } catch (CarValidatorException e) { + assertEquals(9004, e.getErrorCode()); + } + } + + @Test + void validateCar_currency_empty() { + try { + CarValidator.validateCar(carForCurrency("")); + } catch (CarValidatorException e) { + assertEquals(9004, e.getErrorCode()); + } + } + + @Test + void validateCar_incorrect_currency() { + try { + CarValidator.validateCar(carForCurrency("RON")); + } catch (CarValidatorException e) { + assertEquals(9005, e.getErrorCode()); + } + } + + Car carForMaker(String maker) { Car car = new Car(); car.setMaker(maker); - car.setColor("yellow"); - car.setModel("x5"); + car.setColor("Yellow"); + car.setModel("X5"); + car.setYear(2023); + car.setCurrency("EUR"); + car.setPrice(BigDecimal.valueOf(98000)); + return car; + } + + Car carForModel(String model) { + Car car = new Car(); + car.setMaker("Mercedes"); + car.setColor("Yellow"); + car.setModel(model); + car.setYear(2023); + car.setCurrency("EUR"); + car.setPrice(BigDecimal.valueOf(98000)); + return car; + } + + Car carForColor(String color) { + Car car = new Car(); + car.setMaker("Mercedes"); + car.setColor(color); + car.setModel("X5"); + car.setYear(2023); + car.setCurrency("EUR"); + car.setPrice(BigDecimal.valueOf(98000)); + return car; + } + + Car carForYear(Integer year) { + Car car = new Car(); + car.setMaker("Mercedes"); + car.setColor("Yellow"); + car.setModel("X5"); + car.setYear(year); + car.setCurrency("EUR"); + car.setPrice(BigDecimal.valueOf(98000)); + return car; + } + + Car carForPrice(BigDecimal price) { + Car car = new Car(); + car.setMaker("Mercedes"); + car.setColor("Yellow"); + car.setModel("X5"); car.setYear(2023); car.setCurrency("EUR"); + car.setPrice(price); + return car; + } + + Car carForCurrency(String currency) { + Car car = new Car(); + car.setMaker("Mercedes"); + car.setColor("Yellow"); + car.setModel("X5"); + car.setYear(2023); + car.setCurrency(currency); car.setPrice(BigDecimal.valueOf(98000)); return car; } From 8707a25347fa1b5adbb941618b8afad78ae4850a Mon Sep 17 00:00:00 2001 From: MobR10 Date: Fri, 19 May 2023 09:32:12 +0300 Subject: [PATCH 2/4] published branch for later use --- .../curs/validator/CarValidatorTest.java | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java b/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java index 0221bc2..c2fbf88 100644 --- a/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java +++ b/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java @@ -134,28 +134,28 @@ void validateCar_year_is0() { } } - // @Test - // void validateCar_year_null() { - // try { - // CarValidator.validateCar(carForYear(null)); - // } catch (CarValidatorException e) { - // assertEquals(9007, e.getErrorCode()); - // } - // } SOMETHING NOT WORKING HERE + @Test + void validateCar_year_null() { + try { + CarValidator.validateCar(carForYear(null)); + } catch (CarValidatorException e) { + assertEquals(9007, e.getErrorCode()); + } + } @Test void validateCar_year_ok() { assertTrue(CarValidator.validateCar(carForYear(2005))); } - // @Test - // void validateCar_price_null() { - // try { - // CarValidator.validateCar(carForPrice(null)); - // } catch (CarValidatorException e) { - // assertEquals(9006, e.getErrorCode()); - // } - // } SOMETHING NOT WORKING HERE + @Test + void validateCar_price_null() { + try { + CarValidator.validateCar(carForPrice(null)); + } catch (CarValidatorException e) { + assertEquals(9006, e.getErrorCode()); + } + } @Test void validateCar_price_is0() { From 0d20b2372f16a81c8f2ac084086beb73bdd6d906 Mon Sep 17 00:00:00 2001 From: MobR10 Date: Fri, 19 May 2023 09:47:01 +0300 Subject: [PATCH 3/4] fixed null exceptions --- .../ro/raffa/curs/validator/CarValidator.java | 7 +++--- .../curs/validator/CarValidatorTest.java | 24 +++---------------- 2 files changed, 7 insertions(+), 24 deletions(-) diff --git a/src/main/java/ro/raffa/curs/validator/CarValidator.java b/src/main/java/ro/raffa/curs/validator/CarValidator.java index ccd0b59..6c8e087 100644 --- a/src/main/java/ro/raffa/curs/validator/CarValidator.java +++ b/src/main/java/ro/raffa/curs/validator/CarValidator.java @@ -1,7 +1,8 @@ package ro.raffa.curs.validator; import java.math.BigDecimal; - +import java.sql.Time; +import java.time.LocalDate; import lombok.experimental.UtilityClass; import ro.raffa.curs.exception.CarValidatorException; @@ -42,13 +43,13 @@ private static void validateCarCurrency(String currency) throws CarValidatorExce } private static void validateCarPrice(BigDecimal price) { - if(price == null || price.equals(BigDecimal.valueOf(0))) { + if(price.equals(BigDecimal.valueOf(0))) { throw new CarValidatorException(9006, price.toString()); } } private static void validateCarYear(Integer year) { - if(year== 0 || year == null) { + if(year== 0) { throw new CarValidatorException(9007, year.toString()); } } diff --git a/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java b/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java index c2fbf88..6f118d4 100644 --- a/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java +++ b/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java @@ -133,30 +133,12 @@ void validateCar_year_is0() { assertEquals(9007, e.getErrorCode()); } } - - @Test - void validateCar_year_null() { - try { - CarValidator.validateCar(carForYear(null)); - } catch (CarValidatorException e) { - assertEquals(9007, e.getErrorCode()); - } - } - + @Test void validateCar_year_ok() { assertTrue(CarValidator.validateCar(carForYear(2005))); } - @Test - void validateCar_price_null() { - try { - CarValidator.validateCar(carForPrice(null)); - } catch (CarValidatorException e) { - assertEquals(9006, e.getErrorCode()); - } - } - @Test void validateCar_price_is0() { try { @@ -164,11 +146,11 @@ void validateCar_price_is0() { } catch (CarValidatorException e) { assertEquals(9006, e.getErrorCode()); } - } + } @Test void validateCar_price_ok() { - assertTrue(CarValidator.validateCar(carForPrice(BigDecimal.valueOf(25000)))); + assertTrue(CarValidator.validateCar(carForPrice(BigDecimal.valueOf(250000)))); } @Test From 55c270a53b10472e40551107b721820fc335612e Mon Sep 17 00:00:00 2001 From: MobR10 <100953132+MobR10@users.noreply.github.com> Date: Wed, 24 May 2023 11:55:24 +0300 Subject: [PATCH 4/4] fixed homework --- .../java/ro/raffa/curs/validator/CarValidator.java | 10 ++++++++-- .../ro/raffa/curs/validator/CarValidatorTest.java | 11 +++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/main/java/ro/raffa/curs/validator/CarValidator.java b/src/main/java/ro/raffa/curs/validator/CarValidator.java index 6c8e087..a5c1861 100644 --- a/src/main/java/ro/raffa/curs/validator/CarValidator.java +++ b/src/main/java/ro/raffa/curs/validator/CarValidator.java @@ -1,8 +1,10 @@ package ro.raffa.curs.validator; import java.math.BigDecimal; -import java.sql.Time; -import java.time.LocalDate; +import java.time.OffsetDateTime; +import java.time.YearMonth; + +import org.springframework.beans.factory.annotation.Autowired; import lombok.experimental.UtilityClass; import ro.raffa.curs.exception.CarValidatorException; @@ -10,6 +12,7 @@ @UtilityClass public class CarValidator { + public static Boolean validateCar(Car car) throws CarValidatorException { validateCarMaker(car.getMaker()); validateCarModel(car.getModel()); @@ -49,6 +52,9 @@ private static void validateCarPrice(BigDecimal price) { } private static void validateCarYear(Integer year) { + if(year > YearMonth.now().getYear()){ + throw new CarValidatorException(9012, year.toString()); + } if(year== 0) { throw new CarValidatorException(9007, year.toString()); } diff --git a/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java b/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java index 6f118d4..ab8cc78 100644 --- a/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java +++ b/src/test/java/ro/raffa/curs/validator/CarValidatorTest.java @@ -15,6 +15,8 @@ @SpringBootTest @ActiveProfiles("local") public class CarValidatorTest { + + @Test void validateCar_name_null() { try { @@ -133,6 +135,15 @@ void validateCar_year_is0() { assertEquals(9007, e.getErrorCode()); } } + + @Test + void validateCar_year_over_current_year() { + try { + CarValidator.validateCar(carForYear(2024)); + } catch (CarValidatorException e) { + assertEquals(9012, e.getErrorCode()); + } + } @Test void validateCar_year_ok() {