package org.mapfish.print.attribute;
import org.json.JSONObject;
import org.junit.Test;
import org.mapfish.print.AbstractMapfishSpringTest;
import org.mapfish.print.TestHttpClientFactory;
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.wrapper.json.PJsonObject;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.IOException;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
public class BooleanAttributeTest extends AbstractMapfishSpringTest {
private static final String BASE_DIR = "bool/";
@Autowired
private ConfigurationFactory configurationFactory;
@Autowired
private TestHttpClientFactory httpClientFactory;
@Autowired
private MapfishParser parser;
@Test
public void testParsableByValues() throws Exception {
final Configuration config = configurationFactory.getConfig(getFile(BASE_DIR + "config.yaml"));
PJsonObject requestData = loadJsonRequestData();
Template template = config.getTemplate("main");
Values values = new Values(requestData, template, this.parser, config.getDirectory(), httpClientFactory, config.getDirectory());
assertTrue(values.getBoolean("field1"));
assertFalse(values.getBoolean("field2"));
assertFalse(values.getBoolean("field3"));
JSONObject field2Config = AbstractAttributeTest.getClientConfig(template.getAttributes().get("field2"), template);
assertFalse(field2Config.has(ReflectiveAttribute.JSON_ATTRIBUTE_DEFAULT));
JSONObject field3Config = AbstractAttributeTest.getClientConfig(template.getAttributes().get("field3"), template);
assertTrue(field3Config.has(ReflectiveAttribute.JSON_ATTRIBUTE_DEFAULT));
assertFalse(field3Config.getBoolean(ReflectiveAttribute.JSON_ATTRIBUTE_DEFAULT));
}
private PJsonObject loadJsonRequestData() throws IOException {
return parseJSONObjectFromFile(BooleanAttributeTest.class, BASE_DIR + "requestData.json");
}
}