PageRenderTime 42ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 1ms

/atlassian-plugins-webresource/src/test/java/com/atlassian/plugin/webresource/integration/content/TestContentInclusionAfterExclusions.java

https://bitbucket.org/atlassian/atlassian-plugins-webresource
Java | 263 lines | 223 code | 25 blank | 15 comment | 0 complexity | ceb3883df16f3069a7c9c68074e2e78d MD5 | raw file
  1. package com.atlassian.plugin.webresource.integration.content;
  2. import com.atlassian.plugin.webresource.integration.TestCase;
  3. import com.atlassian.plugin.webresource.integration.fixtures.BroadFeatures;
  4. import org.junit.Before;
  5. import org.junit.Test;
  6. import org.junit.runner.RunWith;
  7. import org.junit.runners.Parameterized;
  8. import java.util.ArrayList;
  9. import java.util.Collection;
  10. import java.util.List;
  11. import java.util.stream.Collectors;
  12. import static com.google.common.collect.Lists.newArrayList;
  13. import static java.util.Arrays.asList;
  14. import static org.hamcrest.MatcherAssert.assertThat;
  15. import static org.hamcrest.Matchers.anyOf;
  16. import static org.hamcrest.Matchers.containsString;
  17. import static org.hamcrest.Matchers.not;
  18. import static org.hamcrest.Matchers.stringContainsInOrder;
  19. import static org.mockito.Mockito.doReturn;
  20. @RunWith(Parameterized.class)
  21. public class TestContentInclusionAfterExclusions extends TestCase {
  22. private final boolean contextBatchingEnabled;
  23. private final boolean webresourceBatchingEnabled;
  24. private List<String> urls;
  25. public TestContentInclusionAfterExclusions(final boolean contextBatchingEnabled, final boolean webresourceBatchingEnabled) {
  26. this.contextBatchingEnabled = contextBatchingEnabled;
  27. this.webresourceBatchingEnabled = webresourceBatchingEnabled;
  28. }
  29. @Parameterized.Parameters(name = "context-batching: {0}, webresource-batching: {1}")
  30. public static Collection<Object[]> configure() {
  31. return asList(new Object[][]{
  32. {
  33. true,
  34. true
  35. },
  36. {
  37. true,
  38. false
  39. },
  40. {
  41. false,
  42. true
  43. },
  44. {
  45. false,
  46. false
  47. }
  48. });
  49. }
  50. /**
  51. *
  52. */
  53. @Before
  54. public void setUp() throws Exception {
  55. BroadFeatures.configure(
  56. wr.configure(config -> {
  57. doReturn(contextBatchingEnabled).when(config).isContextBatchingEnabled();
  58. doReturn(webresourceBatchingEnabled).when(config).isWebResourceBatchingEnabled();
  59. doReturn(false).when(config).isSuperBatchingEnabled();
  60. doReturn(false).when(config).isPerformanceTrackingEnabled();
  61. })
  62. );
  63. urls = new ArrayList<>();
  64. }
  65. @Test
  66. public void given_context0Nexcluded_when_context1Nrequested_then_shouldOnlyServeContentFrom1N() {
  67. // given
  68. wr.excludeContext("0N");
  69. // when
  70. wr.requireContext("1N");
  71. urls.addAll(wr.paths());
  72. final String content = getAllContentInOrder(urls);
  73. // then
  74. assertThat(content, stringContainsInOrder(newArrayList(
  75. "content of feature-10.js",
  76. "content of feature-11.js",
  77. "content of feature-12.js",
  78. "content of feature-13.js",
  79. "content of feature-14.js",
  80. "content of feature-15.js",
  81. "content of feature-16.js",
  82. "content of feature-17.js",
  83. "content of feature-18.js",
  84. "content of feature-19.js"
  85. )));
  86. assertThat(content, not(anyOf(
  87. containsString("content of feature-00.js"),
  88. containsString("content of feature-01.js"),
  89. containsString("content of feature-02.js"),
  90. containsString("content of feature-03.js"),
  91. containsString("content of feature-04.js"),
  92. containsString("content of feature-05.js"),
  93. containsString("content of feature-06.js"),
  94. containsString("content of feature-07.js"),
  95. containsString("content of feature-08.js"),
  96. containsString("content of feature-09.js")
  97. )));
  98. }
  99. @Test
  100. public void given_webResourcesFrom0Nexcluded_when_context1Nrequested_then_shouldOnlyServeContentFrom1N() {
  101. // given
  102. wr.exclude(
  103. "plugin.key:feature-00",
  104. "plugin.key:feature-01",
  105. "plugin.key:feature-02",
  106. "plugin.key:feature-03",
  107. "plugin.key:feature-04",
  108. "plugin.key:feature-05",
  109. "plugin.key:feature-06",
  110. "plugin.key:feature-07",
  111. "plugin.key:feature-08",
  112. "plugin.key:feature-09"
  113. );
  114. // when
  115. wr.requireContext("1N");
  116. urls.addAll(wr.paths());
  117. final String content = getAllContentInOrder(urls);
  118. // then
  119. assertThat(content, stringContainsInOrder(newArrayList(
  120. "content of feature-10.js",
  121. "content of feature-11.js",
  122. "content of feature-12.js",
  123. "content of feature-13.js",
  124. "content of feature-14.js",
  125. "content of feature-15.js",
  126. "content of feature-16.js",
  127. "content of feature-17.js",
  128. "content of feature-18.js",
  129. "content of feature-19.js"
  130. )));
  131. assertThat(content, not(anyOf(
  132. containsString("content of feature-00.js"),
  133. containsString("content of feature-01.js"),
  134. containsString("content of feature-02.js"),
  135. containsString("content of feature-03.js"),
  136. containsString("content of feature-04.js"),
  137. containsString("content of feature-05.js"),
  138. containsString("content of feature-06.js"),
  139. containsString("content of feature-07.js"),
  140. containsString("content of feature-08.js"),
  141. containsString("content of feature-09.js")
  142. )));
  143. }
  144. @Test
  145. public void given_webResourcesFrom1Nexcluded_when_context2Nrequested_then_shouldOnlyServeContentFrom2N() {
  146. // given
  147. wr.exclude(
  148. "plugin.key:feature-10",
  149. "plugin.key:feature-11",
  150. "plugin.key:feature-12",
  151. "plugin.key:feature-13",
  152. "plugin.key:feature-14",
  153. "plugin.key:feature-15",
  154. "plugin.key:feature-16",
  155. "plugin.key:feature-17",
  156. "plugin.key:feature-18",
  157. "plugin.key:feature-19"
  158. );
  159. // when
  160. wr.requireContext("2N");
  161. urls.addAll(wr.paths());
  162. final String content = getAllContentInOrder(urls);
  163. // then
  164. assertThat(content, stringContainsInOrder(newArrayList(
  165. "content of feature-20.js",
  166. "content of feature-21.js",
  167. "content of feature-22.js",
  168. "content of feature-23.js",
  169. "content of feature-24.js",
  170. "content of feature-25.js",
  171. "content of feature-26.js",
  172. "content of feature-27.js",
  173. "content of feature-28.js",
  174. "content of feature-29.js"
  175. )));
  176. assertThat(content, not(anyOf(
  177. containsString("content of feature-00.js"),
  178. containsString("content of feature-01.js"),
  179. containsString("content of feature-02.js"),
  180. containsString("content of feature-03.js"),
  181. containsString("content of feature-04.js"),
  182. containsString("content of feature-05.js"),
  183. containsString("content of feature-06.js"),
  184. containsString("content of feature-07.js"),
  185. containsString("content of feature-08.js"),
  186. containsString("content of feature-09.js")
  187. )));
  188. }
  189. @Test
  190. public void given_webResourcesFrom1NrequestedAlready_when_context2Nrequested_then_shouldOnlyServeContentFrom2N() {
  191. // given
  192. wr.requireResource("plugin.key:feature-10");
  193. wr.requireResource("plugin.key:feature-11");
  194. wr.requireResource("plugin.key:feature-12");
  195. wr.requireResource("plugin.key:feature-13");
  196. wr.requireResource("plugin.key:feature-14");
  197. wr.requireResource("plugin.key:feature-15");
  198. wr.requireResource("plugin.key:feature-16");
  199. wr.requireResource("plugin.key:feature-17");
  200. wr.requireResource("plugin.key:feature-18");
  201. wr.requireResource("plugin.key:feature-19");
  202. wr.paths();
  203. // when
  204. wr.requireContext("2N");
  205. urls.addAll(wr.paths());
  206. final String content = getAllContentInOrder(urls);
  207. // then
  208. assertThat(content, stringContainsInOrder(newArrayList(
  209. "content of feature-20.js",
  210. "content of feature-21.js",
  211. "content of feature-22.js",
  212. "content of feature-23.js",
  213. "content of feature-24.js",
  214. "content of feature-25.js",
  215. "content of feature-26.js",
  216. "content of feature-27.js",
  217. "content of feature-28.js",
  218. "content of feature-29.js"
  219. )));
  220. assertThat(content, not(anyOf(
  221. containsString("content of feature-00.js"),
  222. containsString("content of feature-01.js"),
  223. containsString("content of feature-02.js"),
  224. containsString("content of feature-03.js"),
  225. containsString("content of feature-04.js"),
  226. containsString("content of feature-05.js"),
  227. containsString("content of feature-06.js"),
  228. containsString("content of feature-07.js"),
  229. containsString("content of feature-08.js"),
  230. containsString("content of feature-09.js")
  231. )));
  232. }
  233. private String getAllContentInOrder(final List<String> urls) {
  234. return urls.stream()
  235. .map(wr::getContent)
  236. .collect(Collectors.joining("\n"));
  237. }
  238. }