diff --git a/pom.xml b/pom.xml index 541b54d..06adbe6 100644 --- a/pom.xml +++ b/pom.xml @@ -12,4 +12,26 @@ 1.8 + + + org.springframework + 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 ea1a0a1..e89aa6f 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,8 +1,17 @@ package com.epam.edu.spring.core.template; +import com.epam.edu.spring.core.template.configuration.MainConfiguration; +import com.epam.edu.spring.core.template.repository.ItemRepository; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + public class SpringCoreTemplate { - public static void main(String[] args) { + public static void main(String[] args) throws Exception { + + AnnotationConfigApplicationContext context + = new AnnotationConfigApplicationContext(MainConfiguration.class); + + 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..96b9765 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,23 @@ 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.ColorFactory; +import org.springframework.context.annotation.*; + +@Lazy +@Configuration public class InitializerConfiguration { + + @Bean + @Scope("prototype") + public ColorFactory colorFactory() { + return new ColorFactory(); + } + + @Bean + @Scope("prototype") + public Color getColor() throws Exception { + return colorFactory().getObject(); + } + } 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..fea20e1 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,40 @@ package com.epam.edu.spring.core.template.configuration; +import com.epam.edu.spring.core.template.entity.Color; +import com.epam.edu.spring.core.template.repository.ItemRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.*; + + +@Configuration +@PropertySource("classpath:application.properties") +@ComponentScan(basePackages = "com.epam.edu.spring.core.template") +@Import({RepositoryConfiguration.class, InitializerConfiguration.class}) public class MainConfiguration { + + @Value("${item.repository.implementation}") + String implementation; + + @Autowired + private RepositoryConfiguration repositoryConfiguration; + + @Autowired + private InitializerConfiguration initializerConfiguration; + + @Bean + public ItemRepository repository() { + if (implementation.equals("array")) { + return repositoryConfiguration.arrayListItemRepository(); + } else if (implementation.equals("linked")) { + return repositoryConfiguration.linkedListItemRepository(); + } else { + return repositoryConfiguration.arrayListItemRepository(); + } + } + + @Bean + public Color getColor() throws Exception { + return initializerConfiguration.getColor(); + } } 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..4aac4bf 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,29 @@ 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 com.epam.edu.spring.core.template.repository.LinkedListItemRepository; +import org.springframework.context.annotation.*; + +import java.util.ArrayList; +import java.util.LinkedList; + + +@Configuration +@ComponentScan(basePackages = "com.epam.edu.spring.core.template.repository") public class RepositoryConfiguration { + + @Bean + @Scope("singleton") + public ItemRepository arrayListItemRepository() { + + return new ArrayListItemRepository(new ArrayList<>()); + } + + @Bean + @Scope("singleton") + 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 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..a33a7b3 --- /dev/null +++ b/src/main/java/com/epam/edu/spring/core/template/entity/ColorFactory.java @@ -0,0 +1,48 @@ +package com.epam.edu.spring.core.template.entity; + +import org.springframework.beans.factory.FactoryBean; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import java.util.Random; + + +@Component +public class ColorFactory implements FactoryBean { + + private int factoryId; + private int colorId; + + @Override + public Color getObject() throws Exception { + Random random = new Random(); + int randomNumber = random.ints(0, Color.values().length) + .limit(1) + .findFirst() + .getAsInt(); + + Color[] colors = Color.values(); + return colors[randomNumber]; + } + + @Override + public Class getObjectType() { + return Color.class; + } + + public int getFactoryId() { + return factoryId; + } + + public void setFactoryId(int factoryId) { + this.factoryId = factoryId; + } + + public int getColorId() { + return colorId; + } + + public void setColorId(int colorId) { + this.colorId = colorId; + } +} 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..4e02487 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 @@ -1,5 +1,7 @@ package com.epam.edu.spring.core.template.entity; +import java.util.Objects; + public class Item { private long id; @@ -45,4 +47,20 @@ public Color getColor() { public void setColor(Color color) { this.color = color; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Item item = (Item) o; + return id == item.id && + Double.compare(item.price, price) == 0 && + Objects.equals(name, item.name) && + color == item.color; + } + + @Override + public int hashCode() { + return Objects.hash(id, name, price, 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..9aa2f95 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 @@ -2,27 +2,57 @@ import com.epam.edu.spring.core.template.entity.Item; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +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.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; } 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..38c3d48 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 @@ -1,28 +1,56 @@ 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.LinkedList; +import java.util.ListIterator; +import java.util.Random; /** * Репозиторий, основанный на классе LinkedList. * initialSequence должен случайно генерироваться из диапазона от 1 до 100 */ +@Component 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; } void setInitialSequence(int val) { - //TODO + this.initialSequence = new Random().nextInt(1) + 100; + } + + long getInitialSequence() { + return this.initialSequence; } void setHolder() { - //TODO + this.holder = new LinkedList<>(); } } 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..da06296 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 @@ -2,19 +2,28 @@ import com.epam.edu.spring.core.template.entity.Item; import com.epam.edu.spring.core.template.validator.ItemValidator; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; public class SimpleItemService implements ItemService { - private ItemService itemService; - private ItemValidator itemValidator; + private final ItemService itemService; + + private final ItemValidator itemValidator; + + @Autowired + public SimpleItemService(ItemService itemService, ItemValidator itemValidator) { + this.itemService = itemService; + this.itemValidator = itemValidator; + } @Override public Item getById(long id) { - return null; + return itemService.getById(id); } @Override public boolean createItem(Item item) { - return false; + return itemValidator.isItemValid(item); } } 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..a2bab59 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 @@ -2,6 +2,8 @@ import com.epam.edu.spring.core.template.entity.Item; + + public class SimpleItemValidator implements ItemValidator { @Override diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 69c2e92..f219f99 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=array \ No newline at end of file diff --git a/src/test/java/com/epam/edu/spring/core/template/configuration/InitializerConfigurationTest.java b/src/test/java/com/epam/edu/spring/core/template/configuration/InitializerConfigurationTest.java new file mode 100644 index 0000000..690c2e4 --- /dev/null +++ b/src/test/java/com/epam/edu/spring/core/template/configuration/InitializerConfigurationTest.java @@ -0,0 +1,28 @@ +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.ColorFactory; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.IsInstanceOf.instanceOf; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = InitializerConfiguration.class) +public class InitializerConfigurationTest { + + @Autowired + private InitializerConfiguration configuration; + + @Test + public void testInitializerInstanceOf() throws Exception { + assertThat(configuration, instanceOf(InitializerConfiguration.class)); + assertThat(configuration.colorFactory(), instanceOf(ColorFactory.class)); + assertThat(configuration.getColor(), instanceOf(Color.class)); + } + +} \ No newline at end of file diff --git a/src/test/java/com/epam/edu/spring/core/template/configuration/MainConfigurationPropertyArrayTest.java b/src/test/java/com/epam/edu/spring/core/template/configuration/MainConfigurationPropertyArrayTest.java new file mode 100644 index 0000000..0053fbe --- /dev/null +++ b/src/test/java/com/epam/edu/spring/core/template/configuration/MainConfigurationPropertyArrayTest.java @@ -0,0 +1,37 @@ +package com.epam.edu.spring.core.template.configuration; + +import com.epam.edu.spring.core.template.entity.Color; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.IsInstanceOf.instanceOf; + +@RunWith(SpringJUnit4ClassRunner.class) +@TestPropertySource("classpath:applicationArray.properties") +@ContextConfiguration(classes = MainConfiguration.class) +public class MainConfigurationPropertyArrayTest { + + @Autowired + private MainConfiguration mainConfiguration; + + @Test + public void testPropertyMainConfiguration() { + Assert.assertEquals(mainConfiguration.implementation, "array"); + } + + @Test + public void testInstanceOfMainConfiguration() { + assertThat(mainConfiguration, instanceOf(MainConfiguration.class)); + } + + @Test + public void testInstanceOfGetColor() throws Exception { + assertThat(mainConfiguration.getColor(), instanceOf(Color.class)); + } +} \ No newline at end of file diff --git a/src/test/java/com/epam/edu/spring/core/template/configuration/MainConfigurationPropertyEmptyTest.java b/src/test/java/com/epam/edu/spring/core/template/configuration/MainConfigurationPropertyEmptyTest.java new file mode 100644 index 0000000..98d6679 --- /dev/null +++ b/src/test/java/com/epam/edu/spring/core/template/configuration/MainConfigurationPropertyEmptyTest.java @@ -0,0 +1,37 @@ +package com.epam.edu.spring.core.template.configuration; + +import com.epam.edu.spring.core.template.entity.Color; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.IsInstanceOf.instanceOf; + +@RunWith(SpringJUnit4ClassRunner.class) +@TestPropertySource("classpath:applicationEmpty.properties") +@ContextConfiguration(classes = MainConfiguration.class) +public class MainConfigurationPropertyEmptyTest { + + @Autowired + private MainConfiguration mainConfiguration; + + @Test + public void testPropertyMainConfiguration() { + Assert.assertEquals(mainConfiguration.implementation, ""); + } + + @Test + public void testInstanceOfMainConfiguration() { + assertThat(mainConfiguration, instanceOf(MainConfiguration.class)); + } + + @Test + public void testInstanceOfGetColor() throws Exception { + assertThat(mainConfiguration.getColor(), instanceOf(Color.class)); + } +} \ No newline at end of file diff --git a/src/test/java/com/epam/edu/spring/core/template/configuration/MainConfigurationPropertyLinkedTest.java b/src/test/java/com/epam/edu/spring/core/template/configuration/MainConfigurationPropertyLinkedTest.java new file mode 100644 index 0000000..08974c4 --- /dev/null +++ b/src/test/java/com/epam/edu/spring/core/template/configuration/MainConfigurationPropertyLinkedTest.java @@ -0,0 +1,37 @@ +package com.epam.edu.spring.core.template.configuration; + +import com.epam.edu.spring.core.template.entity.Color; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.IsInstanceOf.instanceOf; + +@RunWith(SpringJUnit4ClassRunner.class) +@TestPropertySource("classpath:applicationLinked.properties") +@ContextConfiguration(classes = MainConfiguration.class) +public class MainConfigurationPropertyLinkedTest { + + @Autowired + private MainConfiguration mainConfiguration; + + @Test + public void testPropertyMainConfiguration() { + Assert.assertEquals(mainConfiguration.implementation, "linked"); + } + + @Test + public void testInstanceOfMainConfiguration() { + assertThat(mainConfiguration, instanceOf(MainConfiguration.class)); + } + + @Test + public void testInstanceOfGetColor() throws Exception { + assertThat(mainConfiguration.getColor(), instanceOf(Color.class)); + } +} \ No newline at end of file diff --git a/src/test/java/com/epam/edu/spring/core/template/configuration/RepositoryConfigurationTest.java b/src/test/java/com/epam/edu/spring/core/template/configuration/RepositoryConfigurationTest.java new file mode 100644 index 0000000..056148b --- /dev/null +++ b/src/test/java/com/epam/edu/spring/core/template/configuration/RepositoryConfigurationTest.java @@ -0,0 +1,30 @@ +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.LinkedListItemRepository; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.IsInstanceOf.instanceOf; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = RepositoryConfiguration.class) +public class RepositoryConfigurationTest { + + @Autowired + private RepositoryConfiguration repositoryConfiguration; + + @Test + public void testInstanceOfArraylistRepository() { + assertThat(repositoryConfiguration.arrayListItemRepository(), instanceOf(ArrayListItemRepository.class)); + } + + @Test + public void testInstanceOfLinkedListRepository() { + assertThat(repositoryConfiguration.linkedListItemRepository(), instanceOf(LinkedListItemRepository.class)); + } +} \ 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..218130b --- /dev/null +++ b/src/test/java/com/epam/edu/spring/core/template/repository/ArrayListItemRepositoryTest.java @@ -0,0 +1,60 @@ +package com.epam.edu.spring.core.template.repository; + + +import com.epam.edu.spring.core.template.entity.ColorFactory; +import com.epam.edu.spring.core.template.entity.Item; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.IsEqual.equalTo; + + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = ArrayListItemRepository.class) +public class ArrayListItemRepositoryTest { + + @Autowired + private ArrayListItemRepository itemRepository; + + private static Item apple; + private static Item orange; + + @BeforeClass + public static void setUp() throws Exception { + apple = new Item(1, "apple", 1000, new ColorFactory().getObject()); + orange = new Item(2, "orange", 2000, new ColorFactory().getObject()); + } + + + public ArrayListItemRepositoryTest() throws Exception { + } + + @Test + public void testCreateItemArrayList() throws Exception { + + boolean createAppleBoolean = itemRepository.createItem(apple); + boolean createOrangeBoolean = itemRepository.createItem(orange); + boolean repeatCreateAppleBoolean= itemRepository.createItem(apple); + + assertThat(createAppleBoolean, equalTo(true)); + assertThat(createOrangeBoolean, equalTo(true)); + assertThat(repeatCreateAppleBoolean, equalTo(false)); + } + + @Test + public void testGetByIdArrayList() throws Exception { + + Item findApple = itemRepository.getById(1); + Item findOrange = itemRepository.getById(2); + Item notFind = itemRepository.getById(3); + + assertThat(apple, equalTo(findApple)); + assertThat(orange, equalTo(findOrange)); + assertThat(null, equalTo(notFind)); + } +} \ 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..0647a99 --- /dev/null +++ b/src/test/java/com/epam/edu/spring/core/template/repository/LinkedListItemRepositoryTest.java @@ -0,0 +1,63 @@ +package com.epam.edu.spring.core.template.repository; + +import com.epam.edu.spring.core.template.entity.ColorFactory; +import com.epam.edu.spring.core.template.entity.Item; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.IsEqual.equalTo; + + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = LinkedListItemRepository.class) +public class LinkedListItemRepositoryTest { + + @Autowired + private LinkedListItemRepository itemRepository; + + private static Item apple; + private static Item orange; + + @Before + public void setUp() throws Exception { + apple = new Item(1, "apple", 1000, new ColorFactory().getObject()); + orange = new Item(2, "orange", 2000, new ColorFactory().getObject()); + } + + public LinkedListItemRepositoryTest() throws Exception { + } + + @Test + public void testCreateItemLinkedList() throws Exception { + + boolean createAppleBoolean = itemRepository.createItem(apple); + boolean createOrangeBoolean = itemRepository.createItem(orange); + boolean repeatCreateAppleBoolean= itemRepository.createItem(apple); + + assertThat(createAppleBoolean, equalTo(true)); + assertThat(createOrangeBoolean, equalTo(true)); + assertThat(repeatCreateAppleBoolean, equalTo(false)); + } + + @Test + public void testGetByIdLinkedList() throws Exception { + + itemRepository.createItem(apple); + itemRepository.createItem(orange); + itemRepository.createItem(apple); + + Item findApple = itemRepository.getById(1); + Item findOrange = itemRepository.getById(2); + Item notFind = itemRepository.getById(3); + + assertThat(apple, equalTo(findApple)); + assertThat(orange, equalTo(findOrange)); + assertThat(null, equalTo(notFind)); + } +} \ No newline at end of file diff --git a/src/test/resources/applicationArray.properties b/src/test/resources/applicationArray.properties new file mode 100644 index 0000000..f219f99 --- /dev/null +++ b/src/test/resources/applicationArray.properties @@ -0,0 +1,2 @@ +initial.sequence=42 +item.repository.implementation=array \ No newline at end of file diff --git a/src/test/resources/applicationEmpty.properties b/src/test/resources/applicationEmpty.properties new file mode 100644 index 0000000..69c2e92 --- /dev/null +++ b/src/test/resources/applicationEmpty.properties @@ -0,0 +1,2 @@ +initial.sequence=42 +item.repository.implementation= \ No newline at end of file diff --git a/src/test/resources/applicationLinked.properties b/src/test/resources/applicationLinked.properties new file mode 100644 index 0000000..864c68f --- /dev/null +++ b/src/test/resources/applicationLinked.properties @@ -0,0 +1,2 @@ +initial.sequence=42 +item.repository.implementation=linked \ No newline at end of file