package org.mapfish.print.attribute; import com.google.common.collect.Lists; import org.json.JSONException; import org.json.JSONObject; import org.json.JSONWriter; import org.junit.Test; import org.mapfish.print.config.Configuration; import org.mapfish.print.config.Template; import org.mockito.Mockito; import java.io.StringWriter; import java.util.List; import static org.junit.Assert.assertTrue; import static org.mapfish.print.attribute.ReflectiveAttribute.JSON_ATTRIBUTE_TYPE; import static org.mapfish.print.attribute.ReflectiveAttribute.JSON_NAME; /** * Common base class for testing attributes. */ public abstract class AbstractAttributeTest { @Test public void testPrintClientConfig() throws Exception { final Attribute attribute = createAttribute(); Template template = Mockito.mock(Template.class); JSONObject capabilities = getClientConfig(attribute, template); assertTrue("Missing " + JSON_NAME + " in: \n" + capabilities.toString(2), capabilities.has(JSON_NAME)); assertTrue("Missing " + JSON_ATTRIBUTE_TYPE + " in: \n" + capabilities.toString(2), capabilities.has(JSON_ATTRIBUTE_TYPE)); } public static JSONObject getClientConfig(Attribute attribute, Template template) throws JSONException { final StringWriter jsonOutput = new StringWriter(); JSONWriter json = new JSONWriter(jsonOutput); json.object(); attribute.printClientConfig(json, template); json.endObject(); return new JSONObject(jsonOutput.toString()); } @Test public void testValidate() throws Exception { List<Throwable> errors = Lists.newArrayList(); Configuration configuration = new Configuration(); createAttribute().validate(errors, configuration); assertTrue(errors.toString(), errors.isEmpty()); } protected abstract Attribute createAttribute(); }