package com.globant.katari.jsmodule.domain; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import java.util.Arrays; import java.util.List; import org.junit.Test; import com.globant.katari.jsmodule.domain.DependenciesFinder; import com.globant.katari.jsmodule.domain.DependenciesResolver; /** Integration test cases for {@link DependenciesResolver} using non-mocked * {@link DependenciesFinder} instances and dep.js files which can be found in * src/test/resources/com/globant/igexpnasion/smp/jslib/testfile. * * @author ivan.bedecarats@globant.com */ public class DependenciesResolverIntegrationTest { /** * The dependencies involved in this test case are the following: * <ul> * <li> * /com/globant/katari/jsmodule/testfile/calendar.js = [ * /com/globant/katari/jsmodule/testfile/jquery.js, * /com/globant/katari/jsmodule/testfile/jquery-ui.js * ] * </li> * <li> * /com/globant/katari/jsmodule/testfile/jquery.js = [] * </li> * <li> * /com/globant/katari/jsmodule/testfile/jquery-ui.js = [ * /com/globant/katari/jsmodule/testfile/ui.js * ] * </li> * <li> * /com/globant/katari/jsmodule/testfile/ui.js = [] * </li> * </ul> */ @Test public void resolve_singleDependency() throws Exception { DependenciesFinder finder = new DependenciesFinder(true); DependenciesResolver resolver = new DependenciesResolver(finder); List<String> files = Arrays.asList( "/com/globant/katari/jsmodule/testfile/calendar.js"); List<String> foundDependencies = resolver.resolve(files); List<String> expectedResult = Arrays.asList( "/com/globant/katari/jsmodule/testfile/jquery.js", "/com/globant/katari/jsmodule/testfile/ui.js", "/com/globant/katari/jsmodule/testfile/jquery-ui.js", "/com/globant/katari/jsmodule/testfile/calendar.js"); assertThat(foundDependencies, is(expectedResult)); } /** * The dependencies involved in this test case are the following: * <ul> * <li> * /com/globant/katari/jsmodule/testfile/calendar.js = [ * /com/globant/katari/jsmodule/testfile/jquery.js, * /com/globant/katari/jsmodule/testfile/jquery-ui.js * ] * </li> * <li> * /com/globant/katari/jsmodule/testfile/jquery.js = [] * </li> * <li> * /com/globant/katari/jsmodule/testfile/jquery-ui.js = [ * /com/globant/katari/jsmodule/testfile/ui.js * ] * </li> * <li> * /com/globant/katari/jsmodule/testfile/ui.js = [] * </li> * <li> * /com/globant/katari/jsmodule/testfile/colorPicker.js = [ * /com/globant/katari/jsmodule/testfile/jquery.js, * /com/globant/katari/jsmodule/testfile/color.js, * /com/globant/katari/jsmodule/testfile/picker.js * ] * </li> * <li> * /com/globant/katari/jsmodule/testfile/color.js = [] * </li> * <li> * /com/globant/katari/jsmodule/testfile/picker.js = [] * </li> * </ul> * Please take note that if a .js doesn't have any dependency files then * there will be no .dep.js file assossiated to it. */ @Test public void resolve_MultipleDependency() throws Exception { DependenciesFinder finder = new DependenciesFinder(true); DependenciesResolver resolver = new DependenciesResolver(finder); List<String> files = Arrays.asList( "/com/globant/katari/jsmodule/testfile/calendar.js", "/com/globant/katari/jsmodule/testfile/colorPicker.js"); List<String> foundDependencies = resolver.resolve(files); List<String> expectedResult = Arrays.asList( "/com/globant/katari/jsmodule/testfile/jquery.js", "/com/globant/katari/jsmodule/testfile/ui.js", "/com/globant/katari/jsmodule/testfile/jquery-ui.js", "/com/globant/katari/jsmodule/testfile/calendar.js", "/com/globant/katari/jsmodule/testfile/color.js", "/com/globant/katari/jsmodule/testfile/picker.js", "/com/globant/katari/jsmodule/testfile/colorPicker.js"); assertThat(foundDependencies, is(expectedResult)); } /** * The dependencies involved in this test case are the following: * <ul> * <li> * /com/globant/katari/jsmodule/testfile/calendar.js = [ * /com/globant/katari/jsmodule/testfile/jquery.js, * /com/globant/katari/jsmodule/testfile/jquery-ui.js * ] * </li> * <li> * /com/globant/katari/jsmodule/testfile/jquery.js = [] * </li> * <li> * /com/globant/katari/jsmodule/testfile/jquery-ui.js = [ * /com/globant/katari/jsmodule/testfile/ui.js * ] * </li> * <li> * /com/globant/katari/jsmodule/testfile/ui.js = [] * </li> * <li> * /com/globant/katari/jsmodule/testfile/complex.js = [ * /com/globant/katari/jsmodule/testfile/button.js, * /com/globant/katari/jsmodule/testfile/picker.js, * /com/globant/katari/jsmodule/testfile/ui.js * ] * </li> * <li> * /com/globant/katari/jsmodule/testfile/button.js = [ * /com/globant/katari/jsmodule/testfile/submit.js * ] * </li> * <li> * /com/globant/katari/jsmodule/testfile/submit.js = [] * </li> * <li> * /com/globant/katari/jsmodule/testfile/picker.js = [] * </li> * </ul> * Please take note that if a .js doesn't have any dependency files then * there will be no .dep.js file assossiated to it. */ @Test public void resolve_ComplexDependency() throws Exception { DependenciesFinder finder = new DependenciesFinder(true); DependenciesResolver resolver = new DependenciesResolver(finder); List<String> files = Arrays.asList( "/com/globant/katari/jsmodule/testfile/calendar.js", "/com/globant/katari/jsmodule/testfile/complex.js"); List<String> foundDependencies = resolver.resolve(files); List<String> expectedResult = Arrays.asList( "/com/globant/katari/jsmodule/testfile/jquery.js", "/com/globant/katari/jsmodule/testfile/ui.js", "/com/globant/katari/jsmodule/testfile/jquery-ui.js", "/com/globant/katari/jsmodule/testfile/calendar.js", "/com/globant/katari/jsmodule/testfile/submit.js", "/com/globant/katari/jsmodule/testfile/button.js", "/com/globant/katari/jsmodule/testfile/picker.js", "/com/globant/katari/jsmodule/testfile/complex.js"); assertThat(foundDependencies, is(expectedResult)); } /** * The dependencies involved in this test case are the following: * <ul> * <li> * /com/globant/katari/jsmodule/testfile/event.js = [ * /com/globant/katari/jsmodule/testfile/action.js * ] * </li> * <li> * /com/globant/katari/jsmodule/testfile/action.js = [ * /com/globant/katari/jsmodule/testfile/event.js * ] * </li> * </ul> */ @Test (expected = RuntimeException.class) public void resolve_singleCircularDependency() { DependenciesFinder finder = new DependenciesFinder(true); DependenciesResolver resolver = new DependenciesResolver(finder); List<String> files = Arrays.asList( "/com/globant/katari/jsmodule/testfile/event.js"); resolver.resolve(files); } /** * The dependencies involved in this test case are the following: * <ul> * <li> * /com/globant/katari/jsmodule/testfile/post.js = [ * /com/globant/katari/jsmodule/testfile/comment.js * ] * </li> * <li> * /com/globant/katari/jsmodule/testfile/comment.js = [ * /com/globant/katari/jsmodule/testfile/share.js, * /com/globant/katari/jsmodule/testfile/like.js * ] * </li> * <li> * /com/globant/katari/jsmodule/testfile/like.js = [ * /com/globant/katari/jsmodule/testfile/post.js * ] * </li> * <li> * /com/globant/katari/jsmodule/testfile/share.js = [ * /com/globant/katari/jsmodule/testfile/link.js, * /com/globant/katari/jsmodule/testfile/post.js * ] * </li> * <li> * /com/globant/katari/jsmodule/testfile/link.js = [] * </li> * </ul> * Please take note that if a .js doesn't have any dependency files then * there will be no .dep.js file assossiated to it. */ @Test (expected = RuntimeException.class) public void resolve_complexCircularDependency() { DependenciesFinder finder = new DependenciesFinder(true); DependenciesResolver resolver = new DependenciesResolver(finder); List<String> files = Arrays.asList( "/com/globant/katari/jsmodule/testfile/post.js"); resolver.resolve(files); } }