*/
package org.sonar.db.component;
+import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
+import org.sonar.db.dialect.MySql;
import org.sonar.test.DbTests;
import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.db.component.ComponentTesting.newProjectDto;
/**
- * On H2, the index on PROJECTS.KEE is unique. In order to simulate the MySQL behaviour where the index is not unique, we need to create a schema where there's no unique index on PROJECTS.KEE
+ * On H2, the index on PROJECTS.KEE is unique. In order to simulate the MySQL behaviour we drop the index on DB other
+ * than MySQL.
*/
@Category(DbTests.class)
public class ComponentDaoWithDuplicatedKeysTest {
static final String PROJECT_KEY = "PROJECT_KEY";
@Rule
- public DbTester db = DbTester.createForSchema(System2.INSTANCE, ComponentDaoWithDuplicatedKeysTest.class, "schema.sql");
+ public DbTester db = DbTester.create(System2.INSTANCE);
DbClient dbClient = db.getDbClient();
ComponentDao underTest = new ComponentDao();
+ @Before
+ public void setUp() throws Exception {
+ if (!MySql.ID.equals(db.getDbClient().getDatabase().getDialect().getId())) {
+ db.executeUpdateSql("drop index if exists PROJECTS_KEE");
+ }
+ }
+
@Test
public void select_components_having_same_key() {
insertProject(newProjectDto().setKey(PROJECT_KEY));
+++ /dev/null
-CREATE TABLE "PROJECTS" (
- "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "KEE" VARCHAR(400),
- "ROOT_ID" INTEGER,
- "UUID" VARCHAR(50),
- "PROJECT_UUID" VARCHAR(50),
- "MODULE_UUID" VARCHAR(50),
- "MODULE_UUID_PATH" VARCHAR(4000),
- "NAME" VARCHAR(256),
- "DESCRIPTION" VARCHAR(2000),
- "ENABLED" BOOLEAN NOT NULL DEFAULT TRUE,
- "SCOPE" VARCHAR(3),
- "QUALIFIER" VARCHAR(10),
- "DEPRECATED_KEE" VARCHAR(400),
- "PATH" VARCHAR(2000),
- "LANGUAGE" VARCHAR(20),
- "COPY_RESOURCE_ID" INTEGER,
- "LONG_NAME" VARCHAR(256),
- "PERSON_ID" INTEGER,
- "CREATED_AT" TIMESTAMP,
- "AUTHORIZATION_UPDATED_AT" BIGINT
-);
-
-CREATE INDEX "PROJECTS_KEE" ON "PROJECTS" ("KEE");
-
-CREATE INDEX "PROJECTS_ROOT_ID" ON "PROJECTS" ("ROOT_ID");
-
-CREATE UNIQUE INDEX "PROJECTS_UUID" ON "PROJECTS" ("UUID");
-
-CREATE INDEX "PROJECTS_PROJECT_UUID" ON "PROJECTS" ("PROJECT_UUID");
-
-CREATE INDEX "PROJECTS_MODULE_UUID" ON "PROJECTS" ("MODULE_UUID");
-
-CREATE INDEX "PROJECTS_QUALIFIER" ON "PROJECTS" ("QUALIFIER");