@Test
public void testToJson() {

    final ForcedRoot.JsonKeys keys = ForcedRoot.keys();
    final String path = "/correct/path";
    final String primaryType = "primaryType";
    final List<String> mixinTypes = Collections.singletonList("mixinType");
    final ForcedRoot emptyRoot = new ForcedRoot();
    assertEquals("empty root toJson should be empty",
            JsonValue.EMPTY_JSON_OBJECT, emptyRoot.toJson());
    final ForcedRoot pathRoot = new ForcedRoot().withPath(path);
    assertEquals("path root toJson should have path",
            key(keys.path(), path).get(), pathRoot.toJson());
    final ForcedRoot primaryTypeRoot = new ForcedRoot().withPrimaryType(primaryType);
    assertEquals("primaryType root toJson should have primaryType",
            key(keys.primaryType(), primaryType).get(), primaryTypeRoot.toJson());
    final ForcedRoot mixinTypeRoot = new ForcedRoot().withMixinTypes(mixinTypes.get(0));
    assertEquals("mixinTypes root toJson should have mixinTypes",
            key(keys.mixinTypes(), mixinTypes).get(), mixinTypeRoot.toJson());
}