From 27ba090256ba424a45ae33647c0d9dcacdbb5000 Mon Sep 17 00:00:00 2001 From: Pavel Ogorodnikov Date: Sun, 4 Oct 2020 15:41:47 +0400 Subject: [PATCH 1/2] test1 --- pom.xml | 7 ++++ .../core/template/SpringCoreTemplate.java | 21 +++++++++++- .../InitializerConfiguration.java | 12 +++++++ .../configuration/MainConfiguration.java | 5 +++ .../RepositoryConfiguration.java | 13 ++++++++ .../spring/core/template/entity/Color.java | 7 +++- .../core/template/entity/ColorFactory.java | 23 +++++++++++++ .../edu/spring/core/template/entity/Item.java | 10 ++++++ .../repository/ArrayListItemRepository.java | 32 +++++++++++++++++-- .../repository/LinkedListItemRepository.java | 29 ++++++++++++++--- 10 files changed, 150 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/epam/edu/spring/core/template/entity/ColorFactory.java diff --git a/pom.xml b/pom.xml index 541b54d..9ae107a 100644 --- a/pom.xml +++ b/pom.xml @@ -11,5 +11,12 @@ 1.8 1.8 + + + org.springframework + spring-context + 5.2.1.RELEASE + + diff --git a/src/main/java/com/epam/edu/spring/core/template/SpringCoreTemplate.java b/src/main/java/com/epam/edu/spring/core/template/SpringCoreTemplate.java index ea1a0a1..978c65c 100644 --- a/src/main/java/com/epam/edu/spring/core/template/SpringCoreTemplate.java +++ b/src/main/java/com/epam/edu/spring/core/template/SpringCoreTemplate.java @@ -1,9 +1,28 @@ package com.epam.edu.spring.core.template; +import com.epam.edu.spring.core.template.configuration.MainConfiguration; +import com.epam.edu.spring.core.template.entity.Color; +import com.epam.edu.spring.core.template.entity.Item; +import com.epam.edu.spring.core.template.repository.ArrayListItemRepository; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + public class SpringCoreTemplate { public static void main(String[] args) { + System.out.println("hello word"); - } + AnnotationConfigApplicationContext context + = new AnnotationConfigApplicationContext(MainConfiguration.class); + + ArrayListItemRepository a = (ArrayListItemRepository) context.getBean("arrayListItemRepository"); + Item item = new Item(1, "Pasha", 20000000, Color.GREEN); + a.createItem(item); + Item pasha = a.getById(1); + System.out.println(pasha); + context.close(); + + // System.out.println(context); + + } } diff --git a/src/main/java/com/epam/edu/spring/core/template/configuration/InitializerConfiguration.java b/src/main/java/com/epam/edu/spring/core/template/configuration/InitializerConfiguration.java index 444cc01..137cc50 100644 --- a/src/main/java/com/epam/edu/spring/core/template/configuration/InitializerConfiguration.java +++ b/src/main/java/com/epam/edu/spring/core/template/configuration/InitializerConfiguration.java @@ -1,4 +1,16 @@ package com.epam.edu.spring.core.template.configuration; + +import com.epam.edu.spring.core.template.entity.ColorFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; + +@Configuration public class InitializerConfiguration { + @Bean + @Scope("prototype") + public ColorFactory colorFactory() { + return new ColorFactory(); + } } diff --git a/src/main/java/com/epam/edu/spring/core/template/configuration/MainConfiguration.java b/src/main/java/com/epam/edu/spring/core/template/configuration/MainConfiguration.java index f1b7446..45bc357 100644 --- a/src/main/java/com/epam/edu/spring/core/template/configuration/MainConfiguration.java +++ b/src/main/java/com/epam/edu/spring/core/template/configuration/MainConfiguration.java @@ -1,4 +1,9 @@ package com.epam.edu.spring.core.template.configuration; +import org.springframework.context.annotation.Import; + +@Import({RepositoryConfiguration.class, InitializerConfiguration.class}) public class MainConfiguration { + + } diff --git a/src/main/java/com/epam/edu/spring/core/template/configuration/RepositoryConfiguration.java b/src/main/java/com/epam/edu/spring/core/template/configuration/RepositoryConfiguration.java index 40fb52c..08cbcee 100644 --- a/src/main/java/com/epam/edu/spring/core/template/configuration/RepositoryConfiguration.java +++ b/src/main/java/com/epam/edu/spring/core/template/configuration/RepositoryConfiguration.java @@ -1,4 +1,17 @@ package com.epam.edu.spring.core.template.configuration; +import com.epam.edu.spring.core.template.repository.ArrayListItemRepository; +import com.epam.edu.spring.core.template.repository.ItemRepository; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.ArrayList; + +@Configuration public class RepositoryConfiguration { + + @Bean + public ItemRepository arrayListItemRepository() { + return new ArrayListItemRepository(new ArrayList<>()); + } } diff --git a/src/main/java/com/epam/edu/spring/core/template/entity/Color.java b/src/main/java/com/epam/edu/spring/core/template/entity/Color.java index f5fe91d..f8356e2 100644 --- a/src/main/java/com/epam/edu/spring/core/template/entity/Color.java +++ b/src/main/java/com/epam/edu/spring/core/template/entity/Color.java @@ -1,5 +1,10 @@ package com.epam.edu.spring.core.template.entity; public enum Color { - + RED, + BLUE, + GREEN, + BROWN, + YELLOW, + PINK } diff --git a/src/main/java/com/epam/edu/spring/core/template/entity/ColorFactory.java b/src/main/java/com/epam/edu/spring/core/template/entity/ColorFactory.java new file mode 100644 index 0000000..87c4957 --- /dev/null +++ b/src/main/java/com/epam/edu/spring/core/template/entity/ColorFactory.java @@ -0,0 +1,23 @@ +package com.epam.edu.spring.core.template.entity; + +import org.springframework.beans.factory.FactoryBean; +import org.springframework.stereotype.Component; + +@Component +public class ColorFactory implements FactoryBean { + + @Override + public Color getObject() throws Exception { + return null; + } + + @Override + public Class getObjectType() { + return null; + } + + @Override + public boolean isSingleton() { + return false; + } +} diff --git a/src/main/java/com/epam/edu/spring/core/template/entity/Item.java b/src/main/java/com/epam/edu/spring/core/template/entity/Item.java index d07b653..246b5f0 100644 --- a/src/main/java/com/epam/edu/spring/core/template/entity/Item.java +++ b/src/main/java/com/epam/edu/spring/core/template/entity/Item.java @@ -45,4 +45,14 @@ public Color getColor() { public void setColor(Color color) { this.color = color; } + + @Override + public String toString() { + return "Item{" + + "id=" + id + + ", name='" + name + '\'' + + ", price=" + price + + ", color=" + color + + '}'; + } } diff --git a/src/main/java/com/epam/edu/spring/core/template/repository/ArrayListItemRepository.java b/src/main/java/com/epam/edu/spring/core/template/repository/ArrayListItemRepository.java index edcb085..6fda371 100644 --- a/src/main/java/com/epam/edu/spring/core/template/repository/ArrayListItemRepository.java +++ b/src/main/java/com/epam/edu/spring/core/template/repository/ArrayListItemRepository.java @@ -1,28 +1,54 @@ package com.epam.edu.spring.core.template.repository; import com.epam.edu.spring.core.template.entity.Item; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; /** * Репозиторий, основанный на классе ArrayList. * initialSequence должен браться из application.properties */ +@Component public class ArrayListItemRepository extends AbstractRepository implements ItemRepository { + // private final ArrayList listItem; + + @Autowired + public ArrayListItemRepository(ArrayList listItem) { + this.holder = listItem; + } + @Override public Item getById(long id) { + for (Item item : holder) { + if (item.getId() == id) { + return item; + } + } return null; } @Override public boolean createItem(Item item) { - return false; + for (Item itemInList : holder) { + if (itemInList.equals(item)) { + return false; + } + } + holder.add(item); + return true; } void setInitialSequence(int val) { - //TODO + this.initialSequence=val; + } + long getInitialSequence() { + return this.initialSequence; } void setHolder() { - //TODO + this.holder = new ArrayList<>(); } } diff --git a/src/main/java/com/epam/edu/spring/core/template/repository/LinkedListItemRepository.java b/src/main/java/com/epam/edu/spring/core/template/repository/LinkedListItemRepository.java index aa000f8..5acd647 100644 --- a/src/main/java/com/epam/edu/spring/core/template/repository/LinkedListItemRepository.java +++ b/src/main/java/com/epam/edu/spring/core/template/repository/LinkedListItemRepository.java @@ -2,27 +2,48 @@ import com.epam.edu.spring.core.template.entity.Item; +import java.util.LinkedList; +import java.util.Random; + /** * Репозиторий, основанный на классе LinkedList. * initialSequence должен случайно генерироваться из диапазона от 1 до 100 */ public class LinkedListItemRepository extends AbstractRepository implements ItemRepository { + private final LinkedList listItem; + + public LinkedListItemRepository(LinkedList listItem) { + this.listItem = listItem; + } @Override public Item getById(long id) { + for (Item item : listItem) { + if (item.getId() == id) { + return item; + } + } return null; } @Override public boolean createItem(Item item) { - return false; + for (Item itemInList : listItem) { + if (itemInList.equals(item)) { + return false; + } + } + listItem.add(item); + return true; + } + long getInitialSequence() { + return this.initialSequence; } - void setInitialSequence(int val) { - //TODO + this.initialSequence=new Random().nextInt(1) + 100; } void setHolder() { - //TODO + this.holder = new LinkedList<>(); } } From 8bb4ca4e70de1046e5e83da4e1a8f213cbbb7d65 Mon Sep 17 00:00:00 2001 From: Pavel Ogorodnikov Date: Wed, 4 Nov 2020 21:50:43 +0400 Subject: [PATCH 2/2] =?UTF-8?q?=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 13 +++++++ .../core/template/SpringCoreTemplate.java | 16 +++++--- .../InitializerConfiguration.java | 4 ++ .../configuration/MainConfiguration.java | 34 ++++++++++++++++ .../RepositoryConfiguration.java | 7 ++++ .../spring/core/template/entity/Color.java | 4 +- .../core/template/entity/ColorFactory.java | 13 +++++-- .../repository/AbstractRepository.java | 5 +++ .../repository/ArrayListItemRepository.java | 13 +++---- .../repository/LinkedListItemRepository.java | 23 ++++++----- .../template/service/SimpleItemService.java | 21 +++++++++- .../validator/SimpleItemValidator.java | 4 +- src/main/resources/application.properties | 2 +- .../configuration/MainConfigurationTest.java | 39 +++++++++++++++++++ .../ArrayListItemRepositoryTest.java | 36 +++++++++++++++++ .../LinkedListItemRepositoryTest.java | 35 +++++++++++++++++ .../validator/SimpleItemValidatorTest.java | 18 +++++++++ src/test/resources/testAplication.properties | 2 + 18 files changed, 257 insertions(+), 32 deletions(-) create mode 100644 src/test/java/com/epam/edu/spring/core/template/configuration/MainConfigurationTest.java create mode 100644 src/test/java/com/epam/edu/spring/core/template/repository/ArrayListItemRepositoryTest.java create mode 100644 src/test/java/com/epam/edu/spring/core/template/repository/LinkedListItemRepositoryTest.java create mode 100644 src/test/java/com/epam/edu/spring/core/template/validator/SimpleItemValidatorTest.java create mode 100644 src/test/resources/testAplication.properties diff --git a/pom.xml b/pom.xml index 9ae107a..c5bac14 100644 --- a/pom.xml +++ b/pom.xml @@ -17,6 +17,19 @@ spring-context 5.2.1.RELEASE + + org.springframework + spring-test + 5.2.1.RELEASE + test + + + + junit + junit + 4.12 + test + diff --git a/src/main/java/com/epam/edu/spring/core/template/SpringCoreTemplate.java b/src/main/java/com/epam/edu/spring/core/template/SpringCoreTemplate.java index 978c65c..59ccf69 100644 --- a/src/main/java/com/epam/edu/spring/core/template/SpringCoreTemplate.java +++ b/src/main/java/com/epam/edu/spring/core/template/SpringCoreTemplate.java @@ -4,8 +4,11 @@ import com.epam.edu.spring.core.template.entity.Color; import com.epam.edu.spring.core.template.entity.Item; import com.epam.edu.spring.core.template.repository.ArrayListItemRepository; +import com.epam.edu.spring.core.template.repository.LinkedListItemRepository; +import org.springframework.beans.factory.BeanFactory; import org.springframework.context.annotation.AnnotationConfigApplicationContext; + public class SpringCoreTemplate { public static void main(String[] args) { @@ -14,15 +17,18 @@ public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfiguration.class); - ArrayListItemRepository a = (ArrayListItemRepository) context.getBean("arrayListItemRepository"); + //ArrayListItemRepository a = (ArrayListItemRepository) context.getBean("itemRepository"); + LinkedListItemRepository l = (LinkedListItemRepository) context.getBean("itemRepository"); + Item item = new Item(1, "Pasha", 20000000, Color.GREEN); - a.createItem(item); - Item pasha = a.getById(1); + l.createItem(item); + Item pasha = l.getById(1); + System.out.println(pasha); - context.close(); + Item item2 = new Item(2, "Masha", 10000000, Color.YELLOW); - // System.out.println(context); + context.close(); } } diff --git a/src/main/java/com/epam/edu/spring/core/template/configuration/InitializerConfiguration.java b/src/main/java/com/epam/edu/spring/core/template/configuration/InitializerConfiguration.java index 137cc50..2f04270 100644 --- a/src/main/java/com/epam/edu/spring/core/template/configuration/InitializerConfiguration.java +++ b/src/main/java/com/epam/edu/spring/core/template/configuration/InitializerConfiguration.java @@ -4,13 +4,17 @@ import com.epam.edu.spring.core.template.entity.ColorFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Scope; @Configuration public class InitializerConfiguration { + @Bean + @Lazy @Scope("prototype") public ColorFactory colorFactory() { return new ColorFactory(); } + } diff --git a/src/main/java/com/epam/edu/spring/core/template/configuration/MainConfiguration.java b/src/main/java/com/epam/edu/spring/core/template/configuration/MainConfiguration.java index 45bc357..36fbc9a 100644 --- a/src/main/java/com/epam/edu/spring/core/template/configuration/MainConfiguration.java +++ b/src/main/java/com/epam/edu/spring/core/template/configuration/MainConfiguration.java @@ -1,9 +1,43 @@ package com.epam.edu.spring.core.template.configuration; +import com.epam.edu.spring.core.template.repository.ItemRepository; +import com.epam.edu.spring.core.template.service.ItemService; +import com.epam.edu.spring.core.template.service.SimpleItemService; +import com.epam.edu.spring.core.template.validator.ItemValidator; +import com.epam.edu.spring.core.template.validator.SimpleItemValidator; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.PropertySource; +@PropertySource("application.properties") @Import({RepositoryConfiguration.class, InitializerConfiguration.class}) public class MainConfiguration { + @Value("${item.repository.implementation}") + String implementation; + @Autowired + RepositoryConfiguration repositoryConfiguration; + @Autowired + InitializerConfiguration initializerConfiguration; + + @Bean + public ItemRepository itemRepository() { + if (implementation.equals("linked")) { + return repositoryConfiguration.linkedListItemRepository(); + } + return repositoryConfiguration.arrayListItemRepository(); + } + + @Bean + public ItemValidator itemValidator(){ + return new SimpleItemValidator(); + } + + @Bean + public ItemService itemService(){ + return new SimpleItemService(itemRepository(), itemValidator()); + } } diff --git a/src/main/java/com/epam/edu/spring/core/template/configuration/RepositoryConfiguration.java b/src/main/java/com/epam/edu/spring/core/template/configuration/RepositoryConfiguration.java index 08cbcee..6f5f163 100644 --- a/src/main/java/com/epam/edu/spring/core/template/configuration/RepositoryConfiguration.java +++ b/src/main/java/com/epam/edu/spring/core/template/configuration/RepositoryConfiguration.java @@ -2,10 +2,12 @@ import com.epam.edu.spring.core.template.repository.ArrayListItemRepository; import com.epam.edu.spring.core.template.repository.ItemRepository; +import com.epam.edu.spring.core.template.repository.LinkedListItemRepository; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.ArrayList; +import java.util.LinkedList; @Configuration public class RepositoryConfiguration { @@ -14,4 +16,9 @@ public class RepositoryConfiguration { public ItemRepository arrayListItemRepository() { return new ArrayListItemRepository(new ArrayList<>()); } + @Bean + public ItemRepository linkedListItemRepository() { + return new LinkedListItemRepository(new LinkedList<>()); + } + } diff --git a/src/main/java/com/epam/edu/spring/core/template/entity/Color.java b/src/main/java/com/epam/edu/spring/core/template/entity/Color.java index f8356e2..d8100ec 100644 --- a/src/main/java/com/epam/edu/spring/core/template/entity/Color.java +++ b/src/main/java/com/epam/edu/spring/core/template/entity/Color.java @@ -6,5 +6,7 @@ public enum Color { GREEN, BROWN, YELLOW, - PINK + PINK; + + } diff --git a/src/main/java/com/epam/edu/spring/core/template/entity/ColorFactory.java b/src/main/java/com/epam/edu/spring/core/template/entity/ColorFactory.java index 87c4957..5044b1d 100644 --- a/src/main/java/com/epam/edu/spring/core/template/entity/ColorFactory.java +++ b/src/main/java/com/epam/edu/spring/core/template/entity/ColorFactory.java @@ -1,23 +1,28 @@ package com.epam.edu.spring.core.template.entity; import org.springframework.beans.factory.FactoryBean; -import org.springframework.stereotype.Component; +import java.util.Random; + -@Component public class ColorFactory implements FactoryBean { @Override public Color getObject() throws Exception { - return null; + return Color.values()[new Random().nextInt(Color.values().length)]; } @Override public Class getObjectType() { - return null; + return ColorFactory.class; } @Override public boolean isSingleton() { return false; } + + public Color getColor(){ + return Color.values()[new Random().nextInt(Color.values().length)]; + } + } diff --git a/src/main/java/com/epam/edu/spring/core/template/repository/AbstractRepository.java b/src/main/java/com/epam/edu/spring/core/template/repository/AbstractRepository.java index 494e526..d2107c7 100644 --- a/src/main/java/com/epam/edu/spring/core/template/repository/AbstractRepository.java +++ b/src/main/java/com/epam/edu/spring/core/template/repository/AbstractRepository.java @@ -7,6 +7,7 @@ * ID сущности генерируется, исходя из initialSequence * @param */ + public abstract class AbstractRepository { protected long initialSequence = 0; @@ -15,6 +16,10 @@ public abstract class AbstractRepository { abstract void setInitialSequence(int val); + public long getInitialSequence() { + return initialSequence; + } + abstract void setHolder(); } diff --git a/src/main/java/com/epam/edu/spring/core/template/repository/ArrayListItemRepository.java b/src/main/java/com/epam/edu/spring/core/template/repository/ArrayListItemRepository.java index 6fda371..d9e896d 100644 --- a/src/main/java/com/epam/edu/spring/core/template/repository/ArrayListItemRepository.java +++ b/src/main/java/com/epam/edu/spring/core/template/repository/ArrayListItemRepository.java @@ -1,8 +1,7 @@ package com.epam.edu.spring.core.template.repository; import com.epam.edu.spring.core.template.entity.Item; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; +import org.springframework.beans.factory.annotation.Value; import java.util.ArrayList; @@ -10,12 +9,12 @@ * Репозиторий, основанный на классе ArrayList. * initialSequence должен браться из application.properties */ -@Component public class ArrayListItemRepository extends AbstractRepository implements ItemRepository { // private final ArrayList listItem; + @Value("${initial.sequence}") + public long initialSequence; - @Autowired public ArrayListItemRepository(ArrayList listItem) { this.holder = listItem; } @@ -33,7 +32,7 @@ public Item getById(long id) { @Override public boolean createItem(Item item) { for (Item itemInList : holder) { - if (itemInList.equals(item)) { + if (itemInList.getId() == item.getId()) { return false; } } @@ -44,9 +43,7 @@ public boolean createItem(Item item) { void setInitialSequence(int val) { this.initialSequence=val; } - long getInitialSequence() { - return this.initialSequence; - } + void setHolder() { this.holder = new ArrayList<>(); diff --git a/src/main/java/com/epam/edu/spring/core/template/repository/LinkedListItemRepository.java b/src/main/java/com/epam/edu/spring/core/template/repository/LinkedListItemRepository.java index 5acd647..7c9b8ff 100644 --- a/src/main/java/com/epam/edu/spring/core/template/repository/LinkedListItemRepository.java +++ b/src/main/java/com/epam/edu/spring/core/template/repository/LinkedListItemRepository.java @@ -10,15 +10,15 @@ * initialSequence должен случайно генерироваться из диапазона от 1 до 100 */ public class LinkedListItemRepository extends AbstractRepository implements ItemRepository { - private final LinkedList listItem; + long initialSequence = new Random().nextInt(100); public LinkedListItemRepository(LinkedList listItem) { - this.listItem = listItem; + this.holder = listItem; } @Override public Item getById(long id) { - for (Item item : listItem) { + for (Item item : holder) { if (item.getId() == id) { return item; } @@ -28,19 +28,22 @@ public Item getById(long id) { @Override public boolean createItem(Item item) { - for (Item itemInList : listItem) { - if (itemInList.equals(item)) { + for (Item itemInList : holder) { + if (itemInList.getId() == item.getId()) { return false; } } - listItem.add(item); + holder.add(item); return true; } - long getInitialSequence() { - return this.initialSequence; - } + void setInitialSequence(int val) { - this.initialSequence=new Random().nextInt(1) + 100; + this.initialSequence = val; + } + + @Override + public long getInitialSequence() { + return initialSequence; } void setHolder() { diff --git a/src/main/java/com/epam/edu/spring/core/template/service/SimpleItemService.java b/src/main/java/com/epam/edu/spring/core/template/service/SimpleItemService.java index cb83f39..6a47c74 100644 --- a/src/main/java/com/epam/edu/spring/core/template/service/SimpleItemService.java +++ b/src/main/java/com/epam/edu/spring/core/template/service/SimpleItemService.java @@ -1,20 +1,37 @@ package com.epam.edu.spring.core.template.service; import com.epam.edu.spring.core.template.entity.Item; +import com.epam.edu.spring.core.template.repository.ItemRepository; import com.epam.edu.spring.core.template.validator.ItemValidator; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class SimpleItemService implements ItemService { - private ItemService itemService; private ItemValidator itemValidator; + private ItemRepository repository; + + @Autowired + public SimpleItemService(ItemRepository repository, ItemValidator validator){ + this.repository=repository; + this.itemValidator=validator; + } + + @Autowired + public void setItemValidator(ItemValidator itemValidator) { + this.itemValidator = itemValidator; + } @Override public Item getById(long id) { - return null; + return repository.getById(id); } @Override public boolean createItem(Item item) { + if (itemValidator.isItemValid(item)) + return repository.createItem(item); return false; } } diff --git a/src/main/java/com/epam/edu/spring/core/template/validator/SimpleItemValidator.java b/src/main/java/com/epam/edu/spring/core/template/validator/SimpleItemValidator.java index 003600b..df55d42 100644 --- a/src/main/java/com/epam/edu/spring/core/template/validator/SimpleItemValidator.java +++ b/src/main/java/com/epam/edu/spring/core/template/validator/SimpleItemValidator.java @@ -4,8 +4,10 @@ public class SimpleItemValidator implements ItemValidator { + //допустим нельзя создовать имена с пробелами + // и price имеет ограничения в 5 000 000 @Override public boolean isItemValid(Item item) { - return false; + return !item.getName().contains(" ") && !(item.getPrice() > 50000000); } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 69c2e92..864c68f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,2 +1,2 @@ initial.sequence=42 -item.repository.implementation= \ No newline at end of file +item.repository.implementation=linked \ No newline at end of file diff --git a/src/test/java/com/epam/edu/spring/core/template/configuration/MainConfigurationTest.java b/src/test/java/com/epam/edu/spring/core/template/configuration/MainConfigurationTest.java new file mode 100644 index 0000000..af21d33 --- /dev/null +++ b/src/test/java/com/epam/edu/spring/core/template/configuration/MainConfigurationTest.java @@ -0,0 +1,39 @@ +package com.epam.edu.spring.core.template.configuration; + +import com.epam.edu.spring.core.template.entity.Color; +import com.epam.edu.spring.core.template.entity.Item; +import com.epam.edu.spring.core.template.repository.LinkedListItemRepository; +import com.epam.edu.spring.core.template.service.SimpleItemService; +import junit.framework.TestCase; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.test.context.ContextConfiguration; + + + + +@ContextConfiguration(classes = MainConfiguration.class) +public class MainConfigurationTest extends TestCase { + AnnotationConfigApplicationContext context + = new AnnotationConfigApplicationContext(MainConfiguration.class); + + public void testItemRepository() { + LinkedListItemRepository l = (LinkedListItemRepository) context.getBean("itemRepository"); + assertTrue(l.getInitialSequence()>0 && l.getInitialSequence()<100); + } + + public void testItemService(){ + SimpleItemService s = (SimpleItemService) context.getBean("itemService"); + Item item1 = new Item(1, "Pasha", 20000000, Color.GREEN); + Item item2 = new Item(2, "Masha", 10000000, Color.BLUE); + Item item3 = new Item(3, "Dasha", 5000000, Color.YELLOW); + Item item4 = new Item(1, "Pasha", 20000000, Color.GREEN); + assertTrue(s.createItem(item1)); + assertTrue(s.createItem(item2)); + assertTrue(s.createItem(item3)); + assertFalse(s.createItem(item4)); + assertEquals(s.getById(2), item2); + assertEquals(s.getById(4), null); + System.out.println(s.getById(1)); + + } +} \ No newline at end of file diff --git a/src/test/java/com/epam/edu/spring/core/template/repository/ArrayListItemRepositoryTest.java b/src/test/java/com/epam/edu/spring/core/template/repository/ArrayListItemRepositoryTest.java new file mode 100644 index 0000000..4302c20 --- /dev/null +++ b/src/test/java/com/epam/edu/spring/core/template/repository/ArrayListItemRepositoryTest.java @@ -0,0 +1,36 @@ +package com.epam.edu.spring.core.template.repository; + +import com.epam.edu.spring.core.template.entity.Color; +import com.epam.edu.spring.core.template.entity.Item; +import junit.framework.TestCase; +import org.junit.Before; + +import java.util.ArrayList; + + +public class ArrayListItemRepositoryTest extends TestCase { + + ArrayListItemRepository l = new ArrayListItemRepository(new ArrayList<>()); + Item item = new Item(1, "Pasha", 20000000, Color.GREEN); + Item item2 = new Item(2, "Masha", 10000000, Color.YELLOW); + + @Before + public void setUp(){ + l.createItem(item); + l.createItem(item2); + } + + + public void testGetById() { + assertEquals(l.getById(1).getName(), "Pasha"); + assertEquals(l.getById(2).getColor(), Color.YELLOW); + } + + public void testCreateItem() { + Item item3 = new Item(2, "Sasha", 5000, Color.BLUE); + assertFalse(l.createItem(item3)); + + Item item4 = new Item(3, "Sasha", 5000, Color.BLUE); + assertTrue(l.createItem(item4)); + } +} \ No newline at end of file diff --git a/src/test/java/com/epam/edu/spring/core/template/repository/LinkedListItemRepositoryTest.java b/src/test/java/com/epam/edu/spring/core/template/repository/LinkedListItemRepositoryTest.java new file mode 100644 index 0000000..3d96da1 --- /dev/null +++ b/src/test/java/com/epam/edu/spring/core/template/repository/LinkedListItemRepositoryTest.java @@ -0,0 +1,35 @@ +package com.epam.edu.spring.core.template.repository; + +import com.epam.edu.spring.core.template.entity.Color; +import com.epam.edu.spring.core.template.entity.Item; +import junit.framework.TestCase; +import org.junit.Before; + +import java.util.LinkedList; + +public class LinkedListItemRepositoryTest extends TestCase { + + LinkedListItemRepository l = new LinkedListItemRepository(new LinkedList<>()); + Item item = new Item(1, "Pasha", 20000000, Color.GREEN); + Item item2 = new Item(2, "Masha", 10000000, Color.YELLOW); + + @Before + public void setUp(){ + l.createItem(item); + l.createItem(item2); + } + + + public void testGetById() { + assertEquals(l.getById(1).getName(), "Pasha"); + assertEquals(l.getById(2).getColor(), Color.YELLOW); + } + + public void testCreateItem() { + Item item3 = new Item(2, "Sasha", 5000, Color.BLUE); + assertFalse(l.createItem(item3)); + + Item item4 = new Item(3, "Sasha", 5000, Color.BLUE); + assertTrue(l.createItem(item4)); + } +} \ No newline at end of file diff --git a/src/test/java/com/epam/edu/spring/core/template/validator/SimpleItemValidatorTest.java b/src/test/java/com/epam/edu/spring/core/template/validator/SimpleItemValidatorTest.java new file mode 100644 index 0000000..17c029e --- /dev/null +++ b/src/test/java/com/epam/edu/spring/core/template/validator/SimpleItemValidatorTest.java @@ -0,0 +1,18 @@ +package com.epam.edu.spring.core.template.validator; + +import com.epam.edu.spring.core.template.entity.Color; +import com.epam.edu.spring.core.template.entity.Item; +import junit.framework.TestCase; + +public class SimpleItemValidatorTest extends TestCase { + + public void testIsItemValid() { + SimpleItemValidator s = new SimpleItemValidator(); + Item item = new Item(1, "Pasha", 20000000, Color.GREEN); + assertTrue(s.isItemValid(item)); + Item item2 = new Item(1, "Pasha", 60000000, Color.GREEN); + assertFalse(s.isItemValid(item2)); + Item item3 = new Item(1, "Pasha Ogorodnikov", 20000000, Color.GREEN); + assertFalse(s.isItemValid(item3)); + } +} \ No newline at end of file diff --git a/src/test/resources/testAplication.properties b/src/test/resources/testAplication.properties new file mode 100644 index 0000000..864c68f --- /dev/null +++ b/src/test/resources/testAplication.properties @@ -0,0 +1,2 @@ +initial.sequence=42 +item.repository.implementation=linked \ No newline at end of file