package org.springframework.roo.project.packaging;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.net.URL;
import org.apache.commons.lang3.StringUtils;
import org.junit.Before;
import org.junit.Test;
/**
* Convenient superclass for writing tests of concrete {@link PackagingProvider}
* implementations.
*
* @author Andrew Swan
* @since 1.2.0
*/
public abstract class PackagingProviderTestCase<T extends AbstractPackagingProvider> {
// Fixture
private T provider;
/**
* Subclasses must return an instance of the provider being tested
*
* @return a non-<code>null</code> instance
*/
protected abstract T getProvider();
@Before
public void setUp() throws Exception {
this.provider = getProvider();
}
@Test
public void testIdIsNotBlank() {
assertTrue(StringUtils.isNotBlank(provider.getId()));
}
@Test
public void testTemplateExists() {
// Set up
final String pomTemplate = provider.getPomTemplate();
// Invoke
final URL pomTemplateUrl = provider.getClass().getResource(pomTemplate);
// Check
assertNotNull("Can't find POM template '" + pomTemplate + "'", pomTemplateUrl);
}
}