assertThat(desc.getJoinCondition(), is(sources(b, "id")));
List<ModelProperty> props = desc.getProperties();
assertThat(props.size(), is(3));
ModelProperty id = props.get(0);
assertThat(id.getName(), is("id"));
assertThat(id.getType().getKind(), is(PropertyTypeKind.LONG));
assertThat(id.getFrom(), is(source(a, "id")));
assertThat(id.getJoined(), is(source(b, "id")));
ModelProperty hoge = props.get(1);
assertThat(hoge.getName(), is("hoge"));
assertThat(hoge.getType().getKind(), is(PropertyTypeKind.STRING));
assertThat(hoge.getFrom(), is(source(a, "hoge")));
assertThat(hoge.getJoined(), is(nullValue()));
ModelProperty bar = props.get(2);
assertThat(bar.getName(), is("bar"));
assertThat(bar.getType().getKind(), is(PropertyTypeKind.STRING));
assertThat(bar.getFrom(), is(nullValue()));
assertThat(bar.getJoined(), is(source(b, "foo")));
}