PageRenderTime 44ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/testsuite/server-technical-testsuite/src/test/java/org/marvelution/jji/data/access/model/upgrade/To_9_NewIssueLinkingIT.java

https://bitbucket.org/marvelution/jira-jenkins-integration
Java | 170 lines | 125 code | 27 blank | 18 comment | 0 complexity | 6942da82b0a2d4fe5c13c683a27c34ef MD5 | raw file
  1. /*
  2. * Copyright (c) 2012-present Marvelution Holding B.V.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package org.marvelution.jji.data.access.model.upgrade;
  17. import java.net.*;
  18. import java.util.concurrent.*;
  19. import javax.inject.Inject;
  20. import javax.inject.Singleton;
  21. import org.marvelution.jji.data.access.*;
  22. import org.marvelution.jji.data.access.api.*;
  23. import org.marvelution.jji.data.access.model.v2.*;
  24. import org.marvelution.jji.model.*;
  25. import org.marvelution.jji.synctoken.utils.*;
  26. import org.marvelution.jji.test.data.*;
  27. import org.marvelution.testing.*;
  28. import org.marvelution.testing.inject.*;
  29. import com.atlassian.activeobjects.external.*;
  30. import com.google.inject.Module;
  31. import com.google.inject.*;
  32. import net.java.ao.*;
  33. import net.java.ao.test.jdbc.*;
  34. import org.junit.jupiter.api.*;
  35. import org.junit.jupiter.api.extension.*;
  36. import static org.marvelution.jji.data.access.model.v2.BuildEntity.DELETED;
  37. import static org.marvelution.jji.data.access.model.v2.BuildEntity.DURATION;
  38. import static org.marvelution.jji.data.access.model.v2.BuildEntity.*;
  39. import static org.marvelution.jji.data.access.model.v2.IssueLinkEntity.*;
  40. import static org.marvelution.jji.data.access.model.v2.JobEntity.*;
  41. import static org.marvelution.jji.data.access.model.v2.SiteEntity.*;
  42. import static org.marvelution.jji.model.SiteType.*;
  43. import static org.assertj.core.api.Assertions.*;
  44. /**
  45. * @author Mark Rekveld
  46. */
  47. @ExtendWith({ ActiveObjectsExtension.class, InjectorExtension.class })
  48. @Data(To_9_NewIssueLinkingIT.SetupTestData.class)
  49. public class To_9_NewIssueLinkingIT
  50. extends TestSupport
  51. implements Module
  52. {
  53. private final ActiveObjectsExtension.EntityManagerContext entityManagerContext;
  54. @Inject
  55. private ActiveObjects activeObjects;
  56. @Inject
  57. private SiteDAO siteDAO;
  58. @Inject
  59. private JobDAO jobDAO;
  60. @Inject
  61. private BuildDAO buildDAO;
  62. @Inject
  63. private IssueToBuildDAO issueToBuildDAO;
  64. @Inject
  65. private To_9_NewIssueLinking underTest;
  66. public To_9_NewIssueLinkingIT(ActiveObjectsExtension.EntityManagerContext entityManagerContext)
  67. {
  68. this.entityManagerContext = entityManagerContext;
  69. }
  70. @Override
  71. public void configure(Binder binder)
  72. {
  73. binder.install(new DataAccessModule(entityManagerContext));
  74. binder.bind(To_9_NewIssueLinking.class).in(Singleton.class);
  75. }
  76. @Test
  77. void testUpgrade()
  78. {
  79. underTest.upgrade(ModelVersion.valueOf("8"), activeObjects);
  80. Job job1 = jobDAO.get("job-1");
  81. Job job2 = jobDAO.get("job-2");
  82. Build build1 = buildDAO.get("build-1");
  83. Build build2 = buildDAO.get("build-2");
  84. Build build3 = buildDAO.get("build-3");
  85. assertThat(issueToBuildDAO.getIssueLinks(job1)).hasSize(3)
  86. .contains(new IssueReference().setIssueKey("OP-1").setProjectKey("OP"),
  87. new IssueReference().setIssueKey("PR-1").setProjectKey("PR"),
  88. new IssueReference().setIssueKey("PR-2").setProjectKey("PR"));
  89. assertThat(issueToBuildDAO.getIssueLinks(build1)).hasSize(2)
  90. .contains(new IssueReference().setIssueKey("PR-1").setProjectKey("PR"),
  91. new IssueReference().setIssueKey("PR-2").setProjectKey("PR"));
  92. assertThat(issueToBuildDAO.getIssueLinks(build2)).hasSize(1).contains(new IssueReference().setIssueKey("OP-1").setProjectKey("OP"));
  93. assertThat(issueToBuildDAO.getIssueLinks(job2)).hasSize(2)
  94. .contains(new IssueReference().setIssueKey("PR-1").setProjectKey("PR"),
  95. new IssueReference().setIssueKey("OP-2").setProjectKey("OP"));
  96. assertThat(issueToBuildDAO.getIssueLinks(build3)).hasSize(2)
  97. .contains(new IssueReference().setIssueKey("PR-1").setProjectKey("PR"),
  98. new IssueReference().setIssueKey("OP-2").setProjectKey("OP"));
  99. assertThat(issueToBuildDAO.getJobsForIssue("PR-1", false)).hasSize(2).contains(job1, job2);
  100. assertThat(issueToBuildDAO.getBuildsForIssue("PR-1", 10, false)).hasSize(2).containsSequence(build3, build1);
  101. }
  102. public static class SetupTestData
  103. implements DatabaseUpdater
  104. {
  105. @Override
  106. public void update(EntityManager entityManager)
  107. throws Exception
  108. {
  109. entityManager.migrate(BuildEntity.class, ChangeSetEntity.class, IssueLinkEntity.class, JobEntity.class, SiteEntity.class,
  110. TestResultsEntity.class, LinkStatisticsEntity.class);
  111. entityManager.create(SiteEntity.class, new DBParam("ID", "site-1"), new DBParam(SiteEntity.NAME, "Jenkins"),
  112. new DBParam(SITE_TYPE, JENKINS), new DBParam(RPC_URL, URI.create("http://localhost:8080/")),
  113. new DBParam(AUTO_LINK_NEW_JOBS, true), new DBParam(JENKINS_PLUGIN_INSTALLED, true),
  114. new DBParam(SHARED_SECRET, SharedSecretGenerator.generate()));
  115. entityManager.create(JobEntity.class, new DBParam("ID", "job-1"), new DBParam(SITE_ID, "site-1"),
  116. new DBParam(JobEntity.NAME, "job-1"), new DBParam(LAST_BUILD, 1), new DBParam(LINKED, true));
  117. entityManager.create(JobEntity.class, new DBParam("ID", "job-2"), new DBParam(SITE_ID, "site-1"),
  118. new DBParam(JobEntity.NAME, "job-2"), new DBParam(LAST_BUILD, 1), new DBParam(LINKED, true));
  119. entityManager.create(BuildEntity.class, new DBParam("ID", "build-1"), new DBParam(JOB_ID, "job-1"),
  120. new DBParam(BUILD_NUMBER, 1), new DBParam(DELETED, false),
  121. new DBParam(DURATION, TimeUnit.MINUTES.toMillis(1)),
  122. new DBParam(TIME_STAMP, System.currentTimeMillis() - 86400), new DBParam(RESULT, Result.SUCCESS));
  123. entityManager.create(BuildEntity.class, new DBParam("ID", "build-2"), new DBParam(JOB_ID, "job-1"),
  124. new DBParam(BUILD_NUMBER, 2), new DBParam(DELETED, false),
  125. new DBParam(DURATION, TimeUnit.MINUTES.toMillis(1)), new DBParam(TIME_STAMP, System.currentTimeMillis()),
  126. new DBParam(RESULT, Result.SUCCESS));
  127. entityManager.create(BuildEntity.class, new DBParam("ID", "build-3"), new DBParam(JOB_ID, "job-2"),
  128. new DBParam(BUILD_NUMBER, 1), new DBParam(DELETED, false),
  129. new DBParam(DURATION, TimeUnit.MINUTES.toMillis(1)), new DBParam(TIME_STAMP, System.currentTimeMillis()),
  130. new DBParam(RESULT, Result.SUCCESS));
  131. entityManager.create(IssueLinkEntity.class, new DBParam("ID", "link-1"), new DBParam(BUILD_ID, "build-1"),
  132. new DBParam(ISSUE_KEY, "PR-1"), new DBParam(PROJECT_KEY, "PR"));
  133. entityManager.create(IssueLinkEntity.class, new DBParam("ID", "link-2"), new DBParam(BUILD_ID, "build-1"),
  134. new DBParam(ISSUE_KEY, "PR-2"));
  135. entityManager.create(IssueLinkEntity.class, new DBParam("ID", "link-3"), new DBParam(BUILD_ID, "build-2"),
  136. new DBParam(ISSUE_KEY, "OP-1"));
  137. entityManager.create(IssueLinkEntity.class, new DBParam("ID", "link-4"), new DBParam(BUILD_ID, "build-3"),
  138. new DBParam(ISSUE_KEY, "PR-1"), new DBParam(PROJECT_KEY, "PR"));
  139. entityManager.create(IssueLinkEntity.class, new DBParam("ID", "link-5"), new DBParam(BUILD_ID, "build-3"),
  140. new DBParam(ISSUE_KEY, "OP-2"));
  141. }
  142. }
  143. }