From 0c1ef3ab4f352445df3c1ebf87fe9eac2f78df41 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Thu, 12 Jan 2017 14:59:11 +0300 Subject: tests refactoring --- juick-www/build.gradle | 4 + .../www/configuration/WebAppConfiguration.java | 50 ------------ .../www/configuration/WwwAppConfiguration.java | 50 ++++++++++++ .../juick/www/configuration/WwwInitializer.java | 2 +- .../src/test/java/com/juick/www/WebAppTests.java | 90 ++++++++++++++++++++++ 5 files changed, 145 insertions(+), 51 deletions(-) delete mode 100644 juick-www/src/main/java/com/juick/www/configuration/WebAppConfiguration.java create mode 100644 juick-www/src/main/java/com/juick/www/configuration/WwwAppConfiguration.java create mode 100644 juick-www/src/test/java/com/juick/www/WebAppTests.java (limited to 'juick-www') diff --git a/juick-www/build.gradle b/juick-www/build.gradle index 8d081515..26cf61da 100644 --- a/juick-www/build.gradle +++ b/juick-www/build.gradle @@ -30,6 +30,10 @@ dependencies { compile 'com.mitchellbosecke:pebble-spring4:2.3.0' providedCompile 'javax.servlet:javax.servlet-api:3.1.0' providedRuntime 'mysql:mysql-connector-java:5.1.40' + + testCompile project(path: ':juick-server', configuration: 'testArtifacts') + testCompile ('net.sourceforge.htmlunit:htmlunit:2.24') + } compileFrontend.dependsOn 'npmInstall' diff --git a/juick-www/src/main/java/com/juick/www/configuration/WebAppConfiguration.java b/juick-www/src/main/java/com/juick/www/configuration/WebAppConfiguration.java deleted file mode 100644 index cd681190..00000000 --- a/juick-www/src/main/java/com/juick/www/configuration/WebAppConfiguration.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.juick.www.configuration; - -import com.juick.service.TagService; -import com.juick.service.UserService; -import com.juick.www.HelpService; -import com.juick.www.controllers.PageTemplates; -import com.juick.www.WebApp; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.cache.guava.GuavaCacheManager; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; -import org.springframework.core.env.Environment; - -import javax.annotation.Resource; -import javax.inject.Inject; - -/** - * Created by aalexeev on 11/22/16. - */ -@Configuration -@PropertySource("classpath:juick.conf") -@EnableCaching -public class WebAppConfiguration { - @Resource - private Environment env; - @Inject - private UserService userService; - @Inject - private TagService tagService; - - @Bean - public WebApp webApp() { - return new WebApp(env, templates(), userService, tagService); - } - @Bean - public PageTemplates templates() { - return new PageTemplates(); - } - @Bean - public GuavaCacheManager cacheManager() { - return new GuavaCacheManager("help"); - } - - @Bean - public HelpService helpService() { - return new HelpService("help"); - } - -} diff --git a/juick-www/src/main/java/com/juick/www/configuration/WwwAppConfiguration.java b/juick-www/src/main/java/com/juick/www/configuration/WwwAppConfiguration.java new file mode 100644 index 00000000..7ffefb1d --- /dev/null +++ b/juick-www/src/main/java/com/juick/www/configuration/WwwAppConfiguration.java @@ -0,0 +1,50 @@ +package com.juick.www.configuration; + +import com.juick.service.TagService; +import com.juick.service.UserService; +import com.juick.www.HelpService; +import com.juick.www.controllers.PageTemplates; +import com.juick.www.WebApp; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.cache.guava.GuavaCacheManager; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; + +import javax.annotation.Resource; +import javax.inject.Inject; + +/** + * Created by aalexeev on 11/22/16. + */ +@Configuration +@PropertySource("classpath:juick.conf") +@EnableCaching +public class WwwAppConfiguration { + @Resource + private Environment env; + @Inject + private UserService userService; + @Inject + private TagService tagService; + + @Bean + public WebApp webApp() { + return new WebApp(env, templates(), userService, tagService); + } + @Bean + public PageTemplates templates() { + return new PageTemplates(); + } + @Bean + public GuavaCacheManager cacheManager() { + return new GuavaCacheManager("help"); + } + + @Bean + public HelpService helpService() { + return new HelpService("help"); + } + +} diff --git a/juick-www/src/main/java/com/juick/www/configuration/WwwInitializer.java b/juick-www/src/main/java/com/juick/www/configuration/WwwInitializer.java index cd5429c2..0e185447 100644 --- a/juick-www/src/main/java/com/juick/www/configuration/WwwInitializer.java +++ b/juick-www/src/main/java/com/juick/www/configuration/WwwInitializer.java @@ -18,7 +18,7 @@ public class WwwInitializer extends AbstractAnnotationConfigDispatcherServletIni @Override protected Class[] getRootConfigClasses() { return new Class[]{ - WebAppConfiguration.class, + WwwAppConfiguration.class, DataConfiguration.class, SearchConfiguration.class }; diff --git a/juick-www/src/test/java/com/juick/www/WebAppTests.java b/juick-www/src/test/java/com/juick/www/WebAppTests.java new file mode 100644 index 00000000..b4fa14bb --- /dev/null +++ b/juick-www/src/test/java/com/juick/www/WebAppTests.java @@ -0,0 +1,90 @@ +package com.juick.www; + +import com.gargoylesoftware.htmlunit.WebClient; +import com.gargoylesoftware.htmlunit.html.HtmlPage; +import com.juick.Message; +import com.juick.User; +import com.juick.configuration.MockDataConfiguration; +import com.juick.service.MessagesService; +import com.juick.service.UserService; +import com.juick.tests.util.MockUtils; +import com.juick.www.configuration.WwwAppConfiguration; +import com.juick.www.configuration.WwwServletConfiguration; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.htmlunit.MockMvcWebClientBuilder; +import org.springframework.web.context.WebApplicationContext; + +import javax.inject.Inject; +import java.util.Collections; +import java.util.Optional; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.*; +import static org.mockito.Mockito.when; + +/** + * Created by vitalyster on 12.01.2017. + */ +@RunWith(SpringJUnit4ClassRunner.class) +@WebAppConfiguration +@ContextConfiguration +public class WebAppTests { + @Configuration + @Import(value = {WwwServletConfiguration.class, WwwAppConfiguration.class, MockDataConfiguration.class}) + static class Config {} + + @Inject + private WebApplicationContext wac; + @Inject + private WebApp webApp; + + private WebClient webClient; + + @Inject + UserService userService; + @Inject + MessagesService messagesService; + + @Before + public void setup() { + webClient = MockMvcWebClientBuilder.webAppContextSetup(this.wac).build(); + } + + @Test + public void postWithoutTagsShouldNotHaveAsteriskInTitle() throws Exception { + String ugnichName = "ugnich"; + String ugnichPassword = "MyPassw0rd!"; + String msgText = "Привет, я - Угнич"; + String hash = "12345678"; + + User user = MockUtils.mockUser(1, ugnichName, ugnichPassword); + Message msg = MockUtils.mockMessage(1, user, msgText); + + when(userService.getUIDbyName(ugnichName)) + .thenReturn(1); + when(userService.getUserByName(ugnichName)) + .thenReturn(user); + when(userService.getUserByUID(1)) + .thenReturn(Optional.of(user)); + when(userService.getFullyUserByName(ugnichName)) + .thenReturn(user); + when(messagesService.getMyFeed(1, 0)) + .thenReturn(Collections.singletonList(1)); + when(messagesService.getMessages(Collections.singletonList(1))) + .thenReturn(Collections.singletonList(msg)); + when(userService.getUIDbyHash(hash)) + .thenReturn(1); + when(messagesService.getMessageAuthor(1)).thenReturn(user); + when(messagesService.canViewThread(1, 0)).thenReturn(true); + when(messagesService.getMessage(1)).thenReturn(msg); + HtmlPage threadPage = webClient.getPage("http://localhost:8080/ugnich/1"); + assertThat(threadPage.getTitleText(), equalTo("ugnich:")); + } +} -- cgit v1.2.3