From 88a899a283a15b022ba93915ff95e6c8d660e682 Mon Sep 17 00:00:00 2001 From: Cristian Rosu Date: Mon, 1 Jun 2020 23:32:38 +0300 Subject: [PATCH 1/4] BAEL-4070: Injecting List or Arrays from a Spring properties file --- .../lists/ListsPropertiesIntegrationTest.java | 88 +++++++++++++++++++ .../SpringListPropertiesApplication.java | 10 +++ .../src/test/resources/lists.properties | 6 ++ 3 files changed, 104 insertions(+) create mode 100644 spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesIntegrationTest.java create mode 100644 spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/SpringListPropertiesApplication.java create mode 100644 spring-boot-modules/spring-boot-properties/src/test/resources/lists.properties diff --git a/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesIntegrationTest.java b/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesIntegrationTest.java new file mode 100644 index 0000000000..4047e1ea95 --- /dev/null +++ b/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesIntegrationTest.java @@ -0,0 +1,88 @@ +package com.baeldung.properties.lists; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.env.Environment; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = {SpringListPropertiesApplication.class}) +public class ListsPropertiesIntegrationTest { + + @Value("${arrayOfStrings}") + private String[] arrayOfStrings; + + @Value("${arrayOfStrings}") + private List unexpectedListOfStrings; + + @Value("#{'${arrayOfStrings}'.split(',')}") + private List listOfStrings; + + @Value("#{${listOfStrings}}") + private List listOfStringsV2; + + @Value("#{'${listOfStringsWithCustomDelimiter}'.split(';')}") + private List listOfStringsWithCustomDelimiter; + + @Value("#{'${listOfBooleans}'.split(',')}") + private List listOfBooleans; + + @Value("#{'${listOfIntegers}'.split(',')}") + private List listOfIntegers; + + @Value("#{'${listOfCharacters}'.split(',')}") + private List listOfCharacters; + + @Autowired + private Environment environment; + + @Test + public void givenContextIsInitialized_ThenInjectedArrayContainsExpectedValues() { + assertEquals(arrayOfStrings, new String[] {"Baeldung", "dot", "com"}); + } + + @Test + public void givenContextIsInitialized_ThenInjectedListContainsUnexpectedValues() { + assertEquals(unexpectedListOfStrings, Collections.singletonList("Baeldung,dot,com")); + } + + @Test + public void givenContextIsInitialized_ThenInjectedListContainsExpectedValues() { + assertEquals(listOfStrings, Arrays.asList("Baeldung", "dot", "com")); + } + + @Test + public void givenContextIsInitialized_ThenInjectedListV2ContainsExpectedValues() { + assertEquals(listOfStringsV2, Arrays.asList("Baeldung", "dot", "com")); + } + + @Test + public void givenContextIsInitialized_ThenInjectedListWithCustomDelimiterContainsExpectedValues() { + assertEquals(listOfStringsWithCustomDelimiter, Arrays.asList("Baeldung", "dot", "com")); + } + + @Test + public void givenContextIsInitialized_ThenInjectedListOfBasicTypesContainsExpectedValues() { + assertEquals(listOfBooleans, Arrays.asList(false, false, true)); + assertEquals(listOfIntegers, Arrays.asList(1, 2, 3, 4)); + assertEquals(listOfCharacters, Arrays.asList('a', 'b', 'c')); + } + + @Test + public void givenContextIsInitialized_WhenReadingFromEnvironment_ThenPropertiesHaveExpectedValues() { + String[] arrayOfStrings = environment.getProperty("arrayOfStrings", String[].class); + List listOfStrings = (List)environment.getProperty("arrayOfStrings", List.class); + + assertEquals(arrayOfStrings, new String[] {"Baeldung", "dot", "com"}); + assertEquals(listOfStrings, Arrays.asList("Baeldung", "dot", "com")); + } +} diff --git a/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/SpringListPropertiesApplication.java b/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/SpringListPropertiesApplication.java new file mode 100644 index 0000000000..8a66079201 --- /dev/null +++ b/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/SpringListPropertiesApplication.java @@ -0,0 +1,10 @@ +package com.baeldung.properties.lists; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +@Configuration +@PropertySource(value = "lists.properties") +public class SpringListPropertiesApplication { + +} diff --git a/spring-boot-modules/spring-boot-properties/src/test/resources/lists.properties b/spring-boot-modules/spring-boot-properties/src/test/resources/lists.properties new file mode 100644 index 0000000000..cc54d699a7 --- /dev/null +++ b/spring-boot-modules/spring-boot-properties/src/test/resources/lists.properties @@ -0,0 +1,6 @@ +arrayOfStrings=Baeldung,dot,com +listOfStrings={'Baeldung','dot','com'} +listOfStringsWithCustomDelimiter=Baeldung;dot;com +listOfBooleans=false,false,true +listOfIntegers=1,2,3,4 +listOfCharacters=a,b,c \ No newline at end of file From dd5e1190fa445295e61b46d35f9fdf5f9b8e56ce Mon Sep 17 00:00:00 2001 From: Cristian Rosu Date: Tue, 2 Jun 2020 22:53:54 +0300 Subject: [PATCH 2/4] BAEL-4070: updated test names to match Baeldung's guidelines + makred test as Unit Test instead of Integration Test --- ...ionTest.java => ListsPropertiesUnitTest.java} | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) rename spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/{ListsPropertiesIntegrationTest.java => ListsPropertiesUnitTest.java} (79%) diff --git a/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesIntegrationTest.java b/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesUnitTest.java similarity index 79% rename from spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesIntegrationTest.java rename to spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesUnitTest.java index 4047e1ea95..8c1835a0a9 100644 --- a/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesIntegrationTest.java +++ b/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesUnitTest.java @@ -16,7 +16,7 @@ import static org.junit.Assert.assertEquals; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {SpringListPropertiesApplication.class}) -public class ListsPropertiesIntegrationTest { +public class ListsPropertiesUnitTest { @Value("${arrayOfStrings}") private String[] arrayOfStrings; @@ -46,39 +46,39 @@ public class ListsPropertiesIntegrationTest { private Environment environment; @Test - public void givenContextIsInitialized_ThenInjectedArrayContainsExpectedValues() { + public void whenContextIsInitialized_ThenInjectedArrayContainsExpectedValues() { assertEquals(arrayOfStrings, new String[] {"Baeldung", "dot", "com"}); } @Test - public void givenContextIsInitialized_ThenInjectedListContainsUnexpectedValues() { + public void whenContextIsInitialized_ThenInjectedListContainsUnexpectedValues() { assertEquals(unexpectedListOfStrings, Collections.singletonList("Baeldung,dot,com")); } @Test - public void givenContextIsInitialized_ThenInjectedListContainsExpectedValues() { + public void whenContextIsInitialized_ThenInjectedListContainsExpectedValues() { assertEquals(listOfStrings, Arrays.asList("Baeldung", "dot", "com")); } @Test - public void givenContextIsInitialized_ThenInjectedListV2ContainsExpectedValues() { + public void whenContextIsInitialized_ThenInjectedListV2ContainsExpectedValues() { assertEquals(listOfStringsV2, Arrays.asList("Baeldung", "dot", "com")); } @Test - public void givenContextIsInitialized_ThenInjectedListWithCustomDelimiterContainsExpectedValues() { + public void whenContextIsInitialized_ThenInjectedListWithCustomDelimiterContainsExpectedValues() { assertEquals(listOfStringsWithCustomDelimiter, Arrays.asList("Baeldung", "dot", "com")); } @Test - public void givenContextIsInitialized_ThenInjectedListOfBasicTypesContainsExpectedValues() { + public void whenContextIsInitialized_ThenInjectedListOfBasicTypesContainsExpectedValues() { assertEquals(listOfBooleans, Arrays.asList(false, false, true)); assertEquals(listOfIntegers, Arrays.asList(1, 2, 3, 4)); assertEquals(listOfCharacters, Arrays.asList('a', 'b', 'c')); } @Test - public void givenContextIsInitialized_WhenReadingFromEnvironment_ThenPropertiesHaveExpectedValues() { + public void WhenReadingFromSpringEnvironment_ThenPropertiesHaveExpectedValues() { String[] arrayOfStrings = environment.getProperty("arrayOfStrings", String[].class); List listOfStrings = (List)environment.getProperty("arrayOfStrings", List.class); From bc2c23ae9e229be2ba0c05d2784a6a86aea50c52 Mon Sep 17 00:00:00 2001 From: Cristian Rosu Date: Thu, 4 Jun 2020 12:18:03 +0300 Subject: [PATCH 3/4] BAEL-4070: removed unnecessary curly brace, fixed test name --- .../baeldung/properties/lists/ListsPropertiesUnitTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesUnitTest.java b/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesUnitTest.java index 8c1835a0a9..80cb8e9ea0 100644 --- a/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesUnitTest.java +++ b/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesUnitTest.java @@ -15,7 +15,7 @@ import java.util.List; import static org.junit.Assert.assertEquals; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = {SpringListPropertiesApplication.class}) +@ContextConfiguration(classes = SpringListPropertiesApplication.class) public class ListsPropertiesUnitTest { @Value("${arrayOfStrings}") @@ -78,7 +78,7 @@ public class ListsPropertiesUnitTest { } @Test - public void WhenReadingFromSpringEnvironment_ThenPropertiesHaveExpectedValues() { + public void whenReadingFromSpringEnvironment_ThenPropertiesHaveExpectedValues() { String[] arrayOfStrings = environment.getProperty("arrayOfStrings", String[].class); List listOfStrings = (List)environment.getProperty("arrayOfStrings", List.class); From c098ffa7e940490889261bf9e4918848ea12f92f Mon Sep 17 00:00:00 2001 From: Cristian Rosu Date: Mon, 8 Jun 2020 15:01:46 +0300 Subject: [PATCH 4/4] BAEL-4070: updated test names and parameter ordering + moved code to spring-boot-properties-2 --- .../lists/ListsPropertiesUnitTest.java | 34 +++++++++---------- .../SpringListPropertiesApplication.java | 0 .../src/test/resources/lists.properties | 0 3 files changed, 17 insertions(+), 17 deletions(-) rename spring-boot-modules/{spring-boot-properties => spring-boot-properties-2}/src/test/java/com/baeldung/properties/lists/ListsPropertiesUnitTest.java (61%) rename spring-boot-modules/{spring-boot-properties => spring-boot-properties-2}/src/test/java/com/baeldung/properties/lists/SpringListPropertiesApplication.java (100%) rename spring-boot-modules/{spring-boot-properties => spring-boot-properties-2}/src/test/resources/lists.properties (100%) diff --git a/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesUnitTest.java b/spring-boot-modules/spring-boot-properties-2/src/test/java/com/baeldung/properties/lists/ListsPropertiesUnitTest.java similarity index 61% rename from spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesUnitTest.java rename to spring-boot-modules/spring-boot-properties-2/src/test/java/com/baeldung/properties/lists/ListsPropertiesUnitTest.java index 80cb8e9ea0..60ba4cc108 100644 --- a/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/ListsPropertiesUnitTest.java +++ b/spring-boot-modules/spring-boot-properties-2/src/test/java/com/baeldung/properties/lists/ListsPropertiesUnitTest.java @@ -46,43 +46,43 @@ public class ListsPropertiesUnitTest { private Environment environment; @Test - public void whenContextIsInitialized_ThenInjectedArrayContainsExpectedValues() { - assertEquals(arrayOfStrings, new String[] {"Baeldung", "dot", "com"}); + public void whenContextIsInitialized_thenInjectedArrayContainsExpectedValues() { + assertEquals(new String[] {"Baeldung", "dot", "com"}, arrayOfStrings); } @Test - public void whenContextIsInitialized_ThenInjectedListContainsUnexpectedValues() { - assertEquals(unexpectedListOfStrings, Collections.singletonList("Baeldung,dot,com")); + public void whenContextIsInitialized_thenInjectedListContainsUnexpectedValues() { + assertEquals(Collections.singletonList("Baeldung,dot,com"), unexpectedListOfStrings); } @Test - public void whenContextIsInitialized_ThenInjectedListContainsExpectedValues() { - assertEquals(listOfStrings, Arrays.asList("Baeldung", "dot", "com")); + public void whenContextIsInitialized_thenInjectedListContainsExpectedValues() { + assertEquals(Arrays.asList("Baeldung", "dot", "com"), listOfStrings); } @Test - public void whenContextIsInitialized_ThenInjectedListV2ContainsExpectedValues() { - assertEquals(listOfStringsV2, Arrays.asList("Baeldung", "dot", "com")); + public void whenContextIsInitialized_thenInjectedListV2ContainsExpectedValues() { + assertEquals(Arrays.asList("Baeldung", "dot", "com"), listOfStringsV2); } @Test - public void whenContextIsInitialized_ThenInjectedListWithCustomDelimiterContainsExpectedValues() { - assertEquals(listOfStringsWithCustomDelimiter, Arrays.asList("Baeldung", "dot", "com")); + public void whenContextIsInitialized_thenInjectedListWithCustomDelimiterContainsExpectedValues() { + assertEquals(Arrays.asList("Baeldung", "dot", "com"), listOfStringsWithCustomDelimiter); } @Test - public void whenContextIsInitialized_ThenInjectedListOfBasicTypesContainsExpectedValues() { - assertEquals(listOfBooleans, Arrays.asList(false, false, true)); - assertEquals(listOfIntegers, Arrays.asList(1, 2, 3, 4)); - assertEquals(listOfCharacters, Arrays.asList('a', 'b', 'c')); + public void whenContextIsInitialized_thenInjectedListOfBasicTypesContainsExpectedValues() { + assertEquals(Arrays.asList(false, false, true), listOfBooleans); + assertEquals(Arrays.asList(1, 2, 3, 4), listOfIntegers); + assertEquals(Arrays.asList('a', 'b', 'c'), listOfCharacters); } @Test - public void whenReadingFromSpringEnvironment_ThenPropertiesHaveExpectedValues() { + public void whenReadingFromSpringEnvironment_thenPropertiesHaveExpectedValues() { String[] arrayOfStrings = environment.getProperty("arrayOfStrings", String[].class); List listOfStrings = (List)environment.getProperty("arrayOfStrings", List.class); - assertEquals(arrayOfStrings, new String[] {"Baeldung", "dot", "com"}); - assertEquals(listOfStrings, Arrays.asList("Baeldung", "dot", "com")); + assertEquals(new String[] {"Baeldung", "dot", "com"}, arrayOfStrings); + assertEquals(Arrays.asList("Baeldung", "dot", "com"), listOfStrings); } } diff --git a/spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/SpringListPropertiesApplication.java b/spring-boot-modules/spring-boot-properties-2/src/test/java/com/baeldung/properties/lists/SpringListPropertiesApplication.java similarity index 100% rename from spring-boot-modules/spring-boot-properties/src/test/java/com/baeldung/properties/lists/SpringListPropertiesApplication.java rename to spring-boot-modules/spring-boot-properties-2/src/test/java/com/baeldung/properties/lists/SpringListPropertiesApplication.java diff --git a/spring-boot-modules/spring-boot-properties/src/test/resources/lists.properties b/spring-boot-modules/spring-boot-properties-2/src/test/resources/lists.properties similarity index 100% rename from spring-boot-modules/spring-boot-properties/src/test/resources/lists.properties rename to spring-boot-modules/spring-boot-properties-2/src/test/resources/lists.properties