package com.bazaarvoice.ostrich;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class JsonHelperTest {
@Test
public void testToJson() {
Foo foo = foo(1, "Hello World");
assertEquals("{\"bar\":1,\"baz\":\"Hello World\"}", JsonHelper.toJson(foo));
}
@Test
public void testFromJson() {
Foo foo = JsonHelper.fromJson("{'bar':1, 'baz':'Hello World'}", Foo.class);
assertEquals(1, foo.bar);
assertEquals("Hello World", foo.baz);
}
@Test(expected = AssertionError.class)
public void testFromJsonWithExtraProperties() {
Foo foo = JsonHelper.fromJson("{'foo':1, 'bar':2, 'baz':'Hello World'}", Foo.class);
assertEquals(1, foo.bar);
assertEquals("Hello World", foo.baz);
}
@Test(expected = AssertionError.class)
public void testFromJsonWithMalformedJson() {
JsonHelper.fromJson("{", int.class);
}
@Test
public void testFromJsonAbleToReadToJson() {
Foo foo = foo(1, "Hello World");
Foo bar = JsonHelper.fromJson(JsonHelper.toJson(foo), Foo.class);
assertEquals(foo.bar, bar.bar);
assertEquals(foo.baz, bar.baz);
}
private static Foo foo(int bar, String baz) {
Foo foo = new Foo();
foo.bar = bar;
foo.baz = baz;
return foo;
}
private static class Foo {
@JsonProperty private int bar = 0;
@JsonProperty private String baz = null;
}
}