| /******************************************************************************* |
| * Copyright (c) 2010-2014 SAP AG and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * SAP AG - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.skalli.testutil; |
| |
| import org.eclipse.skalli.commons.XMLUtils; |
| import org.eclipse.skalli.services.extension.DataMigration; |
| import org.junit.Assert; |
| import org.w3c.dom.Document; |
| |
| @SuppressWarnings("nls") |
| public class MigrationTestUtil extends XMLDiffUtil { |
| |
| /** |
| * Tests a {@link DataMigration} by applying the migration to a file and comparing it to a control file. |
| * |
| * <p> |
| * Naming conventions for the test data: |
| * <li>in the test fragment, use a folder called <code>/res/migrations/<MigrationClassName>/</code> |
| * <li>add an original file <code><filenamePrefix>.xml.before</code> |
| * <li>add the manually converted control file <code><filenamePrefix>.xml.after</code> |
| * As an example, have a look at the DataMigration11 test in the model.core bundle. |
| * </p> |
| * |
| * @param migration the data migration to execute. |
| * @param filenamePrefix the prefix of the <code><filenamePrefix>.xml.before</code> and |
| * <code><filenamePrefix>.xml.after</code> files. |
| */ |
| public static void testMigration(DataMigration migration, String filenamePrefix) throws Exception { |
| String pathPrefix = "/res/migrations/" + migration.getClass().getSimpleName() + "/" + filenamePrefix; |
| Class<?> migrationClass = migration.getClass(); |
| Document docBefore = XMLUtils.documentFromResource(migrationClass, pathPrefix + ".xml.before"); |
| migration.migrate(docBefore); |
| Document docAfter = XMLUtils.documentFromResource(migrationClass, pathPrefix + ".xml.after"); |
| |
| Assert.assertEquals(String.valueOf(migration.getFromVersion()), |
| docBefore.getDocumentElement().getAttribute("version")); |
| assertEquals(docBefore, docAfter); |
| } |
| } |