@Test public void take_now_if_date_in_the_future() throws Exception { db.prepareDbUnit(getClass(), "before.xml"); System2 system2 = mock(System2.class); when(system2.now()).thenReturn(0L); MigrationStep migration = new FeedIssuesLongDates(db.database(), mock(System2.class)); migration.execute(); int count = db.countSql("select count(*) from issues where " + "issue_creation_date_ms = 0"); assertThat(count).isEqualTo(1); }
@Test public void take_snapshot_date_if_in_the_past() throws Exception { db.prepareDbUnit(getClass(), "before.xml"); long snapshotTime = parseDate("2014-09-25").getTime(); MigrationStep migration = new FeedIssuesLongDates(db.database(), System2.INSTANCE); migration.execute(); int count = db.countSql( "select count(*) from issues where " + "issue_creation_date_ms=" + snapshotTime); assertThat(count).isEqualTo(1); }
@Test public void execute() throws Exception { db.prepareDbUnit(getClass(), "before.xml"); MigrationStep migration = new FeedIssuesLongDates(db.database(), System2.INSTANCE); migration.execute(); int count = db.countSql( "select count(*) from issues where " + "issue_creation_date_ms is not null " + "and issue_update_date_ms is not null " + "and issue_close_date_ms is not null"); assertThat(count).isEqualTo(2); }
@Test public void migrate_components_without_uuid() throws Exception { db.prepareDbUnit(getClass(), "migrate_components_without_uuid.xml"); migration.execute(); db.getSession().commit(); // Root project migrated Component root = mapper.selectComponentByKey("org.struts:struts"); assertThat(root.getUuid()).isNotNull(); assertThat(root.getProjectUuid()).isEqualTo(root.getUuid()); assertThat(root.getModuleUuid()).isNull(); assertThat(root.getModuleUuidPath()).isEmpty(); // Module with a snapshot having no islast=true Component module = mapper.selectComponentByKey("org.struts:struts-core"); assertThat(module.getUuid()).isNotNull(); assertThat(module.getProjectUuid()).isEqualTo(module.getUuid()); assertThat(module.getModuleUuid()).isNull(); assertThat(module.getModuleUuidPath()).isEmpty(); // File linked on a no more existing project Component file = mapper.selectComponentByKey("org.struts:struts-core:src/org/struts/RequestContext.java"); assertThat(file.getUuid()).isNotNull(); assertThat(file.getProjectUuid()).isEqualTo(file.getUuid()); assertThat(file.getModuleUuid()).isNull(); assertThat(file.getModuleUuidPath()).isEmpty(); }
@Test public void migrate_view() throws Exception { db.prepareDbUnit(getClass(), "migrate_view.xml"); migration.execute(); db.getSession().commit(); Component view = mapper.selectComponentByKey("view"); assertThat(view.getUuid()).isNotNull(); assertThat(view.getProjectUuid()).isEqualTo(view.getUuid()); assertThat(view.getModuleUuid()).isNull(); assertThat(view.getModuleUuidPath()).isEmpty(); Component subView = mapper.selectComponentByKey("subView"); assertThat(subView.getUuid()).isNotNull(); assertThat(subView.getProjectUuid()).isEqualTo(view.getUuid()); assertThat(subView.getModuleUuid()).isEqualTo(view.getUuid()); assertThat(subView.getModuleUuidPath()).isEqualTo(view.getUuid()); Component techProject = mapper.selectComponentByKey("vieworg.struts:struts"); assertThat(techProject.getUuid()).isNotNull(); assertThat(techProject.getProjectUuid()).isEqualTo(view.getUuid()); assertThat(techProject.getModuleUuid()).isEqualTo(subView.getUuid()); assertThat(techProject.getModuleUuidPath()).isEqualTo(view.getUuid() + "." + subView.getUuid()); }
@Test public void migrate_library() throws Exception { db.prepareDbUnit(getClass(), "migrate_library.xml"); migration.execute(); db.getSession().commit(); Component root = mapper.selectComponentByKey("org.hamcrest:hamcrest-library"); assertThat(root.getUuid()).isNotNull(); assertThat(root.getProjectUuid()).isEqualTo(root.getUuid()); assertThat(root.getModuleUuid()).isNull(); assertThat(root.getModuleUuidPath()).isEmpty(); }
@Test public void migrate_components() throws Exception { db.prepareDbUnit(getClass(), "migrate_components.xml"); migration.execute(); db.getSession().commit(); Component root = mapper.selectComponentByKey("org.struts:struts"); assertThat(root.getUuid()).isNotNull(); assertThat(root.getProjectUuid()).isEqualTo(root.getUuid()); assertThat(root.getModuleUuid()).isNull(); assertThat(root.getModuleUuidPath()).isEmpty(); Component module = mapper.selectComponentByKey("org.struts:struts-core"); assertThat(module.getUuid()).isNotNull(); assertThat(module.getProjectUuid()).isEqualTo(root.getUuid()); assertThat(module.getModuleUuid()).isEqualTo(root.getUuid()); assertThat(module.getModuleUuidPath()).isEqualTo(root.getUuid()); Component subModule = mapper.selectComponentByKey("org.struts:struts-db"); assertThat(subModule.getUuid()).isNotNull(); assertThat(subModule.getProjectUuid()).isEqualTo(root.getUuid()); assertThat(subModule.getModuleUuid()).isEqualTo(module.getUuid()); assertThat(subModule.getModuleUuidPath()).isEqualTo(root.getUuid() + "." + module.getUuid()); Component directory = mapper.selectComponentByKey("org.struts:struts-core:src/org/struts"); assertThat(directory.getUuid()).isNotNull(); assertThat(directory.getProjectUuid()).isEqualTo(root.getUuid()); assertThat(directory.getModuleUuid()).isEqualTo(subModule.getUuid()); assertThat(directory.getModuleUuidPath()) .isEqualTo(root.getUuid() + "." + module.getUuid() + "." + subModule.getUuid()); Component file = mapper.selectComponentByKey("org.struts:struts-core:src/org/struts/RequestContext.java"); assertThat(file.getUuid()).isNotNull(); assertThat(file.getProjectUuid()).isEqualTo(root.getUuid()); assertThat(file.getModuleUuid()).isEqualTo(subModule.getUuid()); assertThat(file.getModuleUuidPath()) .isEqualTo(root.getUuid() + "." + module.getUuid() + "." + subModule.getUuid()); // Verify that each generated uuid is unique assertThat( ImmutableSet.of( root.getUuid(), module.getUuid(), subModule.getUuid(), directory.getUuid(), file.getUuid())) .hasSize(5); }
@Test public void not_migrate_already_migrated_components() throws Exception { db.prepareDbUnit(getClass(), "not_migrate_already_migrated_components.xml"); migration.execute(); db.getSession().commit(); Component root = mapper.selectComponentByKey("org.struts:struts"); assertThat(root.getUuid()).isEqualTo("ABCD"); assertThat(root.getProjectUuid()).isEqualTo("ABCD"); assertThat(root.getModuleUuid()).isNull(); assertThat(root.getModuleUuidPath()).isEmpty(); Component module = mapper.selectComponentByKey("org.struts:struts-core"); assertThat(module.getUuid()).isEqualTo("BCDE"); assertThat(module.getProjectUuid()).isEqualTo("ABCD"); assertThat(module.getModuleUuid()).isEqualTo("ABCD"); assertThat(module.getModuleUuidPath()).isEqualTo("ABCD"); Component subModule = mapper.selectComponentByKey("org.struts:struts-db"); assertThat(subModule.getUuid()).isNotNull(); assertThat(subModule.getProjectUuid()).isEqualTo("ABCD"); assertThat(subModule.getModuleUuid()).isEqualTo("BCDE"); assertThat(subModule.getModuleUuidPath()).isEqualTo("ABCD.BCDE"); Component directory = mapper.selectComponentByKey("org.struts:struts-core:src/org/struts"); assertThat(directory.getUuid()).isNotNull(); assertThat(directory.getProjectUuid()).isEqualTo("ABCD"); assertThat(directory.getModuleUuid()).isEqualTo(subModule.getUuid()); assertThat(directory.getModuleUuidPath()).isEqualTo("ABCD.BCDE." + subModule.getUuid()); Component file = mapper.selectComponentByKey("org.struts:struts-core:src/org/struts/RequestContext.java"); assertThat(file.getUuid()).isNotNull(); assertThat(file.getProjectUuid()).isEqualTo("ABCD"); assertThat(file.getModuleUuid()).isEqualTo(subModule.getUuid()); assertThat(file.getModuleUuidPath()).isEqualTo("ABCD.BCDE." + subModule.getUuid()); Component removedFile = mapper.selectComponentByKey("org.struts:struts-core:src/org/struts/RequestContext2.java"); assertThat(removedFile.getUuid()).isEqualTo("DCBA"); assertThat(removedFile.getProjectUuid()).isEqualTo("ABCD"); assertThat(removedFile.getModuleUuid()).isEqualTo("BCDE"); assertThat(removedFile.getModuleUuidPath()).isEqualTo("ABCD.BCDE"); }
@Test public void migrate_developer() throws Exception { db.prepareDbUnit(getClass(), "migrate_developer.xml"); migration.execute(); db.getSession().commit(); Component dev = mapper.selectComponentByKey("DEV:[email protected]"); assertThat(dev.getUuid()).isNotNull(); assertThat(dev.getProjectUuid()).isEqualTo(dev.getUuid()); assertThat(dev.getModuleUuid()).isNull(); assertThat(dev.getModuleUuidPath()).isEmpty(); Component techDev = mapper.selectComponentByKey("DEV:[email protected]:org.struts:struts"); assertThat(techDev.getUuid()).isNotNull(); assertThat(techDev.getProjectUuid()).isEqualTo(dev.getUuid()); assertThat(techDev.getModuleUuid()).isEqualTo(dev.getUuid()); assertThat(techDev.getModuleUuidPath()).isEqualTo(dev.getUuid()); }
@Test public void not_fail_when_project_has_two_active_snapshots() throws Exception { db.prepareDbUnit(getClass(), "not_fail_when_project_has_two_active_snapshots.xml"); migration.execute(); db.getSession().commit(); // Root project migrated Component root = mapper.selectComponentByKey("org.struts:struts"); assertThat(root.getUuid()).isNotNull(); assertThat(root.getProjectUuid()).isEqualTo(root.getUuid()); assertThat(root.getModuleUuid()).isNull(); assertThat(root.getModuleUuidPath()).isEmpty(); // The module linked on second active snapshot should be migrated a standalone component Component module = mapper.selectComponentByKey("org.struts:struts-core"); assertThat(module.getUuid()).isNotNull(); assertThat(module.getProjectUuid()).isEqualTo(module.getUuid()); assertThat(module.getModuleUuid()).isNull(); assertThat(module.getModuleUuidPath()).isEmpty(); }
@Test public void not_fail_when_module_has_no_root_id() throws Exception { db.prepareDbUnit(getClass(), "not_fail_when_module_has_no_root_id.xml"); migration.execute(); db.getSession().commit(); // Root project migrated Component root = mapper.selectComponentByKey("org.struts:struts"); assertThat(root.getUuid()).isNotNull(); assertThat(root.getProjectUuid()).isEqualTo(root.getUuid()); assertThat(root.getModuleUuid()).isNull(); assertThat(root.getModuleUuidPath()).isEmpty(); // The module without uuid will be migrated as a standalone component Component module = mapper.selectComponentByKey("org.struts:struts-core"); assertThat(module.getUuid()).isNotNull(); assertThat(module.getProjectUuid()).isEqualTo(module.getUuid()); assertThat(module.getModuleUuid()).isNull(); assertThat(module.getModuleUuidPath()).isEmpty(); }
@Test public void migrate_disable_components() throws Exception { db.prepareDbUnit(getClass(), "migrate_disable_components.xml"); migration.execute(); db.getSession().commit(); Component root = mapper.selectComponentByKey("org.struts:struts"); assertThat(root.getUuid()).isNotNull(); Component module = mapper.selectComponentByKey("org.struts:struts-core"); assertThat(module.getUuid()).isNotNull(); assertThat(module.getProjectUuid()).isEqualTo(root.getUuid()); // Module and module path will always be null for removed components assertThat(module.getModuleUuid()).isNull(); assertThat(module.getModuleUuidPath()).isEmpty(); Component subModule = mapper.selectComponentByKey("org.struts:struts-db"); assertThat(subModule.getUuid()).isNotNull(); assertThat(subModule.getProjectUuid()).isEqualTo(root.getUuid()); // Module and module path will always be null for removed components assertThat(subModule.getModuleUuid()).isNull(); assertThat(subModule.getModuleUuidPath()).isEmpty(); Component directory = mapper.selectComponentByKey("org.struts:struts-core:src/org/struts"); assertThat(directory.getUuid()).isNotNull(); assertThat(directory.getProjectUuid()).isEqualTo(root.getUuid()); // Module and module path will always be null for removed components assertThat(directory.getModuleUuid()).isNull(); assertThat(directory.getModuleUuidPath()).isEmpty(); Component file = mapper.selectComponentByKey("org.struts:struts-core:src/org/struts/RequestContext.java"); assertThat(file.getUuid()).isNotNull(); assertThat(file.getProjectUuid()).isEqualTo(root.getUuid()); // Module and module path will always be null for removed components assertThat(file.getModuleUuid()).isNull(); assertThat(file.getModuleUuidPath()).isEmpty(); }
@Test public void migrate() throws Exception { db.prepareDbUnit(this.getClass(), "migrate.xml"); migration.execute(); db.assertDbUnit(this.getClass(), "migrate-result.xml", "file_sources"); }
@Test public void migrate_empty_db() throws Exception { migration.execute(); }