package com.urbanairship.api.push.model.audience.location; import com.urbanairship.api.common.parse.APIParsingException; import com.urbanairship.api.push.model.audience.Selector; import com.urbanairship.api.push.model.audience.SelectorType; import com.urbanairship.api.push.model.audience.ValueSelector; import com.urbanairship.api.push.parse.PushObjectMapper; import org.codehaus.jackson.map.ObjectMapper; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; public class SegmentDefinitionDeserializerTest { private static final ObjectMapper mapper = PushObjectMapper.getInstance(); @Test public void testSimpleSegmentDefinition() throws Exception { String json = "{" + " \"display_name\" : \"My Segment\"," + " \"criteria\" : {" + " \"tag\" : \"foo\"" + " }" + "}"; SegmentDefinition def = mapper.readValue(json, SegmentDefinition.class); assertEquals("My Segment", def.getDisplayName()); Selector s = def.getCriteria(); assertNotNull(s); assertEquals(SelectorType.TAG, s.getType()); assertEquals("foo", ((ValueSelector) s).getValue()); } @Test(expected = APIParsingException.class) public void testBadCriteria() throws Exception { String json = "{" + " \"display_name\" : \"My Segment\"," + " \"criteria\" : {" + " \"snarf\" : \"foo\"" + " }" + "}"; mapper.readValue(json, SegmentDefinition.class); } @Test(expected = NullPointerException.class) public void testMissingCriteria() throws Exception { String json = "{" + " \"display_name\" : \"My Segment\"" + " }" + "}"; mapper.readValue(json, SegmentDefinition.class); } }