This is an automated email from the ASF dual-hosted git repository. gk pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/turbine-core.git
commit 8f3ed431e2f308b0a10468cfcef60abb74bc3fbe Author: Georg Kallidis <[email protected]> AuthorDate: Mon Dec 6 16:24:08 2021 +0100 request context for date time formatter and update path converter test --- conf/test/CompleteTurbineResources.properties | 7 +- .../localization/DateTimeFormatterServiceTest.java | 59 ++++++++++---- .../services/velocity/PathConverterTest.java | 95 ++++++++++++---------- 3 files changed, 101 insertions(+), 60 deletions(-) diff --git a/conf/test/CompleteTurbineResources.properties b/conf/test/CompleteTurbineResources.properties index 50db826..b5dd8d0 100644 --- a/conf/test/CompleteTurbineResources.properties +++ b/conf/test/CompleteTurbineResources.properties @@ -476,12 +476,14 @@ tool.request.l10n=org.apache.turbine.services.localization.LocalizationTool # This pull tool is to allow for easy formatting of Date object into Strings tool.request.dateFormatter=org.apache.turbine.services.pull.util.DateFormatter +# This pull tool is to allow for easy formatting of Datetime / TemporalAccessor object into Strings +# +tool.request.dateTimeFormatter=org.apache.turbine.services.pull.util.DateTimeFormatterTool # Use this tool if you need a place to store data that will persist between # requests. Any data stored using this tool will be stored in the session. tool.session.sessionData=org.apache.turbine.services.pull.util.SessionData - # These are intake tools. # tool.request.intake=org.apache.turbine.services.intake.IntakeTool @@ -491,9 +493,6 @@ tool.session.sessionData=org.apache.turbine.services.pull.util.SessionData # This pull tool can be used to provide skins to an application tool.global.ui = org.apache.turbine.services.pull.tools.UITool -# This pull tool is to allow for easy formatting of Datetime / TemporalAccessor object into Strings -tool.global.dateTimeFormatter=org.apache.turbine.services.pull.util.DateTimeFormatterTool - # # These properties apply to both the old UIManager and the newer UIService tool.ui.dir.skin = /turbine-skins/ tool.ui.dir.image = /turbine-images/ diff --git a/src/test/org/apache/turbine/services/localization/DateTimeFormatterServiceTest.java b/src/test/org/apache/turbine/services/localization/DateTimeFormatterServiceTest.java index 87970c4..8b915e4 100644 --- a/src/test/org/apache/turbine/services/localization/DateTimeFormatterServiceTest.java +++ b/src/test/org/apache/turbine/services/localization/DateTimeFormatterServiceTest.java @@ -1,10 +1,15 @@ package org.apache.turbine.services.localization; +import org.apache.fulcrum.parser.DefaultParameterParser; import org.apache.turbine.annotation.AnnotationProcessor; import org.apache.turbine.annotation.TurbineService; import org.apache.turbine.services.pull.PullService; import org.apache.turbine.services.pull.util.DateTimeFormatterTool; +import org.apache.turbine.services.rundata.RunDataService; +import org.apache.turbine.services.velocity.VelocityService; +import org.apache.turbine.test.BaseTestCase; +import org.apache.turbine.util.RunData; import org.apache.turbine.util.TurbineConfig; import org.apache.turbine.util.TurbineException; import org.apache.velocity.context.Context; @@ -12,10 +17,16 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.DynamicNode; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestFactory; import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestMethodOrder; +import javax.servlet.ServletConfig; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; @@ -30,13 +41,15 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.DynamicContainer.dynamicContainer; import static org.junit.jupiter.api.DynamicTest.dynamicTest; +import static org.mockito.Mockito.mock; /** * Test class for DateTimeFormatter. * */ @TestInstance(TestInstance.Lifecycle.PER_CLASS) -public class DateTimeFormatterServiceTest { +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class DateTimeFormatterServiceTest extends BaseTestCase { @TurbineService private DateTimeFormatterService df; @@ -47,9 +60,15 @@ public class DateTimeFormatterServiceTest { private PullService pullService; DateTimeFormatterTool dateTimeFormatterTool; + + @TurbineService + private VelocityService vs = null; + + @TurbineService + RunDataService runDataService = null; @BeforeAll - public void setup() throws TurbineException + public void setup() throws Exception { // required to initialize defaults tc = new TurbineConfig( @@ -60,33 +79,45 @@ public class DateTimeFormatterServiceTest { AnnotationProcessor.process(this); assertNotNull(pullService); - Context globalContext = pullService.getGlobalContext(); - assertNotNull(globalContext); + assertNotNull(vs); + } - dateTimeFormatterTool = (DateTimeFormatterTool) globalContext.get("dateTimeFormatter"); - assertNotNull(dateTimeFormatterTool); + private RunData getRunData() throws Exception + { + ServletConfig config = mock(ServletConfig.class); + HttpServletRequest request = getMockRequest(); + HttpServletResponse response = mock(HttpServletResponse.class); + RunData runData = runDataService.getRunData(request, response, config); + assertEquals(DefaultParameterParser.class, runData.getParameters() + .getClass(), "Verify we are using Fulcrum parameter parser"); + return runData; } @AfterAll public void tearDown() { + vs.shutdown(); tc.dispose(); } /* * Class under test for String format(Date, String) */ + @Order(1) @Test - void testTool() throws TurbineException + void testTool() throws Exception { - assertNotNull(pullService); - Context globalContext = pullService.getGlobalContext(); - assertNotNull(globalContext); + RunData rundata = getRunData(); + Context requestContext = vs.getContext(rundata); + assertNotNull(requestContext); + pullService.populateContext(requestContext, rundata); - DateTimeFormatterTool dateTimeFormatterTool = (DateTimeFormatterTool) globalContext.get("dateTimeFormatter"); + // taking from request context + dateTimeFormatterTool = (DateTimeFormatterTool) requestContext.get("dateTimeFormatter"); assertNotNull(dateTimeFormatterTool); } + @Order(2) @TestFactory Stream<DynamicNode> testDateTimeFormatterInstances() { // Stream of DateTimeFormatterInterface to check @@ -106,10 +137,10 @@ public class DateTimeFormatterServiceTest { dynamicTest("test formatDateStringEmptyString",() -> formatDateStringEmptyString(dtf)) )) ); - // Or returns a stream of dynamic tests instead of Dynamic nodes, - // but requires Function<DateTimeFormatterInterface, String> displayNameGenerator and + // Or return a stream of dynamic tests instead of Dynamic nodes, + // but this requires Function<DateTimeFormatterInterface, String> displayNameGenerator and // e.g. ThrowingConsumer<DateTimeFormatterInterface> testExecutor = dtf - //return DynamicTest.stream(inputStream, displayNameGenerator, testExecutor); + // return DynamicTest.stream(inputStream, displayNameGenerator, testExecutor); } void formatDateString(DateTimeFormatterInterface dateTime) diff --git a/src/test/org/apache/turbine/services/velocity/PathConverterTest.java b/src/test/org/apache/turbine/services/velocity/PathConverterTest.java index f608131..0320174 100644 --- a/src/test/org/apache/turbine/services/velocity/PathConverterTest.java +++ b/src/test/org/apache/turbine/services/velocity/PathConverterTest.java @@ -21,59 +21,66 @@ package org.apache.turbine.services.velocity; */ -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - import org.apache.commons.configuration2.Configuration; import org.apache.turbine.Turbine; -import org.apache.turbine.services.TurbineServices; +import org.apache.turbine.annotation.AnnotationProcessor; +import org.apache.turbine.annotation.TurbineService; import org.apache.turbine.test.BaseTestCase; import org.apache.turbine.util.TurbineConfig; import org.apache.velocity.app.VelocityEngine; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; + +import java.io.File; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; /** * Tests startup of the Velocity Service and translation of various * path patterns. * * @author <a href="[email protected]">Henning P. Schmiedehausen</a> - * @version $Id$ + * */ +@TestInstance(TestInstance.Lifecycle.PER_CLASS) public class PathConverterTest extends BaseTestCase { private static TurbineConfig tc = null; - private static VelocityService vs = null; - @BeforeClass - public static void setUp() throws Exception { + @TurbineService + private VelocityService vs = null; + + @BeforeAll + public void setUp() throws Exception { tc = new TurbineConfig(".", "/conf/test/TemplateService.properties"); tc.initialize(); - vs = (VelocityService) TurbineServices.getInstance().getService(VelocityService.SERVICE_NAME); + AnnotationProcessor.process(this); + //vs = (VelocityService) TurbineServices.getInstance().getService(VelocityService.SERVICE_NAME); + assertNotNull(vs); } - @AfterClass - public static void destroy() throws Exception { + @AfterAll + public void destroy() throws Exception { vs.shutdown(); tc.dispose(); } - @Test public void testService() + @Test + void testService() throws Exception { - // Can we start the service? - assertNotNull("Could not load Service!", vs); + assertNotNull(vs, "Could not load Service!"); } @Test - public void testPathTranslation() + void testPathTranslation() throws Exception { Configuration conf = vs.getConfiguration(); @@ -83,41 +90,45 @@ public class PathConverterTest String rootPath = Turbine.getRealPath(""); String test1 = (String) ve.getProperty("test1.resource.loader.path"); - assertNotNull("No Test1 Property found", test1); - assertEquals("Test1 Path translation failed", - String.join(File.separator, rootPath, "relative", "path"), test1); + assertNotNull( test1, "No Test1 Property found"); + assertEquals( String.join(File.separator, rootPath, "relative", "path"), test1, + "Test1 Path translation failed"); String test2 = (String) ve.getProperty("test2.resource.loader.path"); - assertNotNull("No Test2 Property found", test2); - assertEquals("Test2 Path translation failed", - String.join(File.separator, rootPath, "absolute", "path"), test2); + assertNotNull( test2, "No Test2 Property found"); + assertEquals(String.join(File.separator, rootPath, "absolute", "path"), test2, + "Test2 Path translation failed"); String test3 = (String) ve.getProperty("test3.resource.loader.path"); - assertNotNull("No Test3 Property found", test3); - assertEquals("Test3 Path translation failed", - rootPath +File.separator+"jar-file.jar!/", test3); + assertNotNull( test3, "No Test3 Property found"); + assertEquals( + rootPath +File.separator+"jar-file.jar!/", test3, + "Test3 Path translation failed"); String test4 = (String) ve.getProperty("test4.resource.loader.path"); - assertNotNull("No Test4 Property found", test4); - assertEquals("Test4 Path translation failed", rootPath - +File.separator+"jar-file.jar!/with/some/extensions" , test4); + assertNotNull( test4, "No Test4 Property found"); + assertEquals(rootPath +File.separator+"jar-file.jar!/with/some/extensions" , test4, + "Test4 Path translation failed"); String test5 = (String) ve.getProperty("test5.resource.loader.path"); - assertNotNull("No Test5 Property found", test5); - assertEquals("Test5 Path translation failed", rootPath - +File.separator+"jar-file.jar" , test5); + assertNotNull( test5,"No Test5 Property found"); + assertEquals(rootPath + +File.separator+"jar-file.jar" , test5, + "Test5 Path translation failed"); String test6 = (String) ve.getProperty("test6.resource.loader.path"); - assertNotNull("No Test6 Property found", test6); - assertEquals("Test6 Path translation failed", "jar:http://jar.on.website/" , test6); + assertNotNull(test6, "No Test6 Property found"); + assertEquals("jar:http://jar.on.website/" , test6, + "Test6 Path translation failed"); String test7 = (String) ve.getProperty("test7.resource.loader.path"); - assertNotNull("No Test7 Property found", test7); - assertEquals("Test7 Path translation failed", - String.join(File.separator, rootPath, "file", "system", "reference"), test7); + assertNotNull(test7, "No Test7 Property found"); + assertEquals(String.join(File.separator, rootPath, "file", "system", "reference"), test7, + "Test7 Path translation failed"); String test8 = (String) ve.getProperty("test8.resource.loader.path"); - assertNotNull("No Test8 Property found", test8); - assertEquals("Test8 Path translation failed", "http://reference.on.website/" , test8); + assertNotNull(test8, "No Test8 Property found"); + assertEquals("http://reference.on.website/", test8, + "Test8 Path translation failed"); } }
