/testsuite/server-technical-testsuite/src/test/java/org/marvelution/jji/data/access/model/upgrade/To_9_NewIssueLinkingIT.java
Java | 170 lines | 125 code | 27 blank | 18 comment | 0 complexity | 6942da82b0a2d4fe5c13c683a27c34ef MD5 | raw file
- /*
- * Copyright (c) 2012-present Marvelution Holding B.V.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.marvelution.jji.data.access.model.upgrade;
- import java.net.*;
- import java.util.concurrent.*;
- import javax.inject.Inject;
- import javax.inject.Singleton;
- import org.marvelution.jji.data.access.*;
- import org.marvelution.jji.data.access.api.*;
- import org.marvelution.jji.data.access.model.v2.*;
- import org.marvelution.jji.model.*;
- import org.marvelution.jji.synctoken.utils.*;
- import org.marvelution.jji.test.data.*;
- import org.marvelution.testing.*;
- import org.marvelution.testing.inject.*;
- import com.atlassian.activeobjects.external.*;
- import com.google.inject.Module;
- import com.google.inject.*;
- import net.java.ao.*;
- import net.java.ao.test.jdbc.*;
- import org.junit.jupiter.api.*;
- import org.junit.jupiter.api.extension.*;
- import static org.marvelution.jji.data.access.model.v2.BuildEntity.DELETED;
- import static org.marvelution.jji.data.access.model.v2.BuildEntity.DURATION;
- import static org.marvelution.jji.data.access.model.v2.BuildEntity.*;
- import static org.marvelution.jji.data.access.model.v2.IssueLinkEntity.*;
- import static org.marvelution.jji.data.access.model.v2.JobEntity.*;
- import static org.marvelution.jji.data.access.model.v2.SiteEntity.*;
- import static org.marvelution.jji.model.SiteType.*;
- import static org.assertj.core.api.Assertions.*;
- /**
- * @author Mark Rekveld
- */
- @ExtendWith({ ActiveObjectsExtension.class, InjectorExtension.class })
- @Data(To_9_NewIssueLinkingIT.SetupTestData.class)
- public class To_9_NewIssueLinkingIT
- extends TestSupport
- implements Module
- {
- private final ActiveObjectsExtension.EntityManagerContext entityManagerContext;
- @Inject
- private ActiveObjects activeObjects;
- @Inject
- private SiteDAO siteDAO;
- @Inject
- private JobDAO jobDAO;
- @Inject
- private BuildDAO buildDAO;
- @Inject
- private IssueToBuildDAO issueToBuildDAO;
- @Inject
- private To_9_NewIssueLinking underTest;
- public To_9_NewIssueLinkingIT(ActiveObjectsExtension.EntityManagerContext entityManagerContext)
- {
- this.entityManagerContext = entityManagerContext;
- }
- @Override
- public void configure(Binder binder)
- {
- binder.install(new DataAccessModule(entityManagerContext));
- binder.bind(To_9_NewIssueLinking.class).in(Singleton.class);
- }
- @Test
- void testUpgrade()
- {
- underTest.upgrade(ModelVersion.valueOf("8"), activeObjects);
- Job job1 = jobDAO.get("job-1");
- Job job2 = jobDAO.get("job-2");
- Build build1 = buildDAO.get("build-1");
- Build build2 = buildDAO.get("build-2");
- Build build3 = buildDAO.get("build-3");
- assertThat(issueToBuildDAO.getIssueLinks(job1)).hasSize(3)
- .contains(new IssueReference().setIssueKey("OP-1").setProjectKey("OP"),
- new IssueReference().setIssueKey("PR-1").setProjectKey("PR"),
- new IssueReference().setIssueKey("PR-2").setProjectKey("PR"));
- assertThat(issueToBuildDAO.getIssueLinks(build1)).hasSize(2)
- .contains(new IssueReference().setIssueKey("PR-1").setProjectKey("PR"),
- new IssueReference().setIssueKey("PR-2").setProjectKey("PR"));
- assertThat(issueToBuildDAO.getIssueLinks(build2)).hasSize(1).contains(new IssueReference().setIssueKey("OP-1").setProjectKey("OP"));
- assertThat(issueToBuildDAO.getIssueLinks(job2)).hasSize(2)
- .contains(new IssueReference().setIssueKey("PR-1").setProjectKey("PR"),
- new IssueReference().setIssueKey("OP-2").setProjectKey("OP"));
- assertThat(issueToBuildDAO.getIssueLinks(build3)).hasSize(2)
- .contains(new IssueReference().setIssueKey("PR-1").setProjectKey("PR"),
- new IssueReference().setIssueKey("OP-2").setProjectKey("OP"));
- assertThat(issueToBuildDAO.getJobsForIssue("PR-1", false)).hasSize(2).contains(job1, job2);
- assertThat(issueToBuildDAO.getBuildsForIssue("PR-1", 10, false)).hasSize(2).containsSequence(build3, build1);
- }
- public static class SetupTestData
- implements DatabaseUpdater
- {
- @Override
- public void update(EntityManager entityManager)
- throws Exception
- {
- entityManager.migrate(BuildEntity.class, ChangeSetEntity.class, IssueLinkEntity.class, JobEntity.class, SiteEntity.class,
- TestResultsEntity.class, LinkStatisticsEntity.class);
- entityManager.create(SiteEntity.class, new DBParam("ID", "site-1"), new DBParam(SiteEntity.NAME, "Jenkins"),
- new DBParam(SITE_TYPE, JENKINS), new DBParam(RPC_URL, URI.create("http://localhost:8080/")),
- new DBParam(AUTO_LINK_NEW_JOBS, true), new DBParam(JENKINS_PLUGIN_INSTALLED, true),
- new DBParam(SHARED_SECRET, SharedSecretGenerator.generate()));
- entityManager.create(JobEntity.class, new DBParam("ID", "job-1"), new DBParam(SITE_ID, "site-1"),
- new DBParam(JobEntity.NAME, "job-1"), new DBParam(LAST_BUILD, 1), new DBParam(LINKED, true));
- entityManager.create(JobEntity.class, new DBParam("ID", "job-2"), new DBParam(SITE_ID, "site-1"),
- new DBParam(JobEntity.NAME, "job-2"), new DBParam(LAST_BUILD, 1), new DBParam(LINKED, true));
- entityManager.create(BuildEntity.class, new DBParam("ID", "build-1"), new DBParam(JOB_ID, "job-1"),
- new DBParam(BUILD_NUMBER, 1), new DBParam(DELETED, false),
- new DBParam(DURATION, TimeUnit.MINUTES.toMillis(1)),
- new DBParam(TIME_STAMP, System.currentTimeMillis() - 86400), new DBParam(RESULT, Result.SUCCESS));
- entityManager.create(BuildEntity.class, new DBParam("ID", "build-2"), new DBParam(JOB_ID, "job-1"),
- new DBParam(BUILD_NUMBER, 2), new DBParam(DELETED, false),
- new DBParam(DURATION, TimeUnit.MINUTES.toMillis(1)), new DBParam(TIME_STAMP, System.currentTimeMillis()),
- new DBParam(RESULT, Result.SUCCESS));
- entityManager.create(BuildEntity.class, new DBParam("ID", "build-3"), new DBParam(JOB_ID, "job-2"),
- new DBParam(BUILD_NUMBER, 1), new DBParam(DELETED, false),
- new DBParam(DURATION, TimeUnit.MINUTES.toMillis(1)), new DBParam(TIME_STAMP, System.currentTimeMillis()),
- new DBParam(RESULT, Result.SUCCESS));
- entityManager.create(IssueLinkEntity.class, new DBParam("ID", "link-1"), new DBParam(BUILD_ID, "build-1"),
- new DBParam(ISSUE_KEY, "PR-1"), new DBParam(PROJECT_KEY, "PR"));
- entityManager.create(IssueLinkEntity.class, new DBParam("ID", "link-2"), new DBParam(BUILD_ID, "build-1"),
- new DBParam(ISSUE_KEY, "PR-2"));
- entityManager.create(IssueLinkEntity.class, new DBParam("ID", "link-3"), new DBParam(BUILD_ID, "build-2"),
- new DBParam(ISSUE_KEY, "OP-1"));
- entityManager.create(IssueLinkEntity.class, new DBParam("ID", "link-4"), new DBParam(BUILD_ID, "build-3"),
- new DBParam(ISSUE_KEY, "PR-1"), new DBParam(PROJECT_KEY, "PR"));
- entityManager.create(IssueLinkEntity.class, new DBParam("ID", "link-5"), new DBParam(BUILD_ID, "build-3"),
- new DBParam(ISSUE_KEY, "OP-2"));
- }
- }
- }