/*
* SonarQube
* Copyright (C) 2009-2017 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.server.platform.db.migration.version.v61;
import java.sql.SQLException;
import java.sql.Types;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.sonar.db.CoreDbTester;
import static java.lang.String.valueOf;
public class AddErrorColumnsToCeActivityTest {
private static final String TABLE = "CE_ACTIVITY";
@Rule
public CoreDbTester db = CoreDbTester.createForSchema(AddErrorColumnsToCeActivityTest.class, "old_ce_activity.sql");
@Rule
public ExpectedException expectedException = ExpectedException.none();
private AddErrorColumnsToCeActivity underTest = new AddErrorColumnsToCeActivity(db.database());
@Test
public void migration_adds_column_to_empty_table() throws SQLException {
underTest.execute();
verifyAddedColumns();
}
@Test
public void migration_adds_columns_to_populated_table() throws SQLException {
for (int i = 0; i < 9; i++) {
db.executeInsert(
TABLE,
"uuid", valueOf(i),
"task_type", "PROJECT",
"component_uuid", valueOf(i + 20),
"analysis_uuid", valueOf(i + 30),
"status", "ok",
"is_last", "true",
"is_last_key", "aa",
"submitted_at", valueOf(84654),
"created_at", valueOf(9512),
"updated_at", valueOf(45120));
}
underTest.execute();
verifyAddedColumns();
}
@Test
public void migration_is_not_reentrant() throws SQLException {
underTest.execute();
expectedException.expect(IllegalStateException.class);
expectedException.expectMessage("Fail to execute ");
underTest.execute();
}
private void verifyAddedColumns() {
db.assertColumnDefinition(TABLE, "error_message", Types.VARCHAR, 1000, true);
db.assertColumnDefinition(TABLE, "error_stacktrace", Types.CLOB, null, true);
}
}