package org.mapfish.print.attribute; import com.google.common.collect.Lists; import org.junit.Test; import org.mapfish.print.AbstractMapfishSpringTest; import org.mapfish.print.TestHttpClientFactory; import org.mapfish.print.attribute.ScalebarAttribute.ScalebarAttributeValues; import org.mapfish.print.config.Configuration; import org.mapfish.print.config.ConfigurationFactory; import org.mapfish.print.config.Template; import org.mapfish.print.output.Values; import org.mapfish.print.parser.MapfishParser; import org.mapfish.print.processor.map.scalebar.Type; import org.mapfish.print.wrapper.json.PJsonObject; import org.springframework.beans.factory.annotation.Autowired; import java.awt.Dimension; import java.io.File; import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class ScalebarAttributeTest extends AbstractMapfishSpringTest { @Autowired private ConfigurationFactory configurationFactory; @Autowired private TestHttpClientFactory httpRequestFactory; @Test public void testValidate() { ScalebarAttribute attribute = new ScalebarAttribute(); List<Throwable> validationErrors = Lists.newArrayList(); Configuration configuration = new Configuration(); attribute.validate(validationErrors, configuration); // errors: width and height is not set assertEquals(2, validationErrors.size()); } @Test public void testCreateValue() throws Exception { ScalebarAttributeValues values = getValues(); assertEquals(new Dimension(300, 120), values.getSize()); } @Test public void testPostConstruct() throws Exception { ScalebarAttributeValues values = getValues(); values.postConstruct(); // passes.. ok } @Test(expected=IllegalArgumentException.class) public void testPostConstructInvalidColor() throws Exception { ScalebarAttributeValues values = getValues(); values.backgroundColor = "sun-yellow"; values.postConstruct(); } @Test(expected=IllegalArgumentException.class) public void testPostConstructInvalidUnit() throws Exception { ScalebarAttributeValues values = getValues(); values.unit = "light-years"; values.postConstruct(); } @Test(expected=IllegalArgumentException.class) public void testPostConstructInvalidIntervals() throws Exception { ScalebarAttributeValues values = getValues(); values.intervals = 0; values.postConstruct(); } @Test public void testAttributesFromJson() throws Exception { final File configFile = getFile(ScalebarAttributeTest.class, "scalebar/config.yaml"); final Configuration config = configurationFactory.getConfig(configFile); final Template template = config.getTemplate("main"); final PJsonObject pJsonObject = parseJSONObjectFromFile(ScalebarAttributeTest.class, "scalebar/requestData.json"); final Values values = new Values(pJsonObject, template, new MapfishParser(), getTaskDirectory(), this.httpRequestFactory, new File(".")); final ScalebarAttribute.ScalebarAttributeValues value = values.getObject("scalebar", ScalebarAttribute.ScalebarAttributeValues.class); assertEquals(Type.LINE.getLabel(), value.type); assertEquals("m", value.unit); assertTrue(value.geodetic); assertTrue(value.lockUnits); assertEquals("Liberation Sans", value.font); assertEquals("#cccccc", value.fontColor); } private ScalebarAttributeValues getValues() { ScalebarAttribute attribute = new ScalebarAttribute(); attribute.setWidth(300); attribute.setHeight(120); ScalebarAttributeValues values = attribute.createValue(null); return values; } }