package org.mongodb.morphia;
import org.bson.types.ObjectId;
import org.junit.Assert;
import org.junit.Test;
import org.mongodb.morphia.annotations.AlsoLoad;
import org.mongodb.morphia.annotations.Embedded;
import org.mongodb.morphia.annotations.Entity;
import org.mongodb.morphia.annotations.Id;
import java.util.List;
import java.util.Set;
public class TestSingleToMultipleConversion extends TestBase {
@Test
public void testBasicType() throws Exception {
getDs().delete(getDs().find(HasSingleString.class));
getDs().save(new HasSingleString());
Assert.assertNotNull(getDs().find(HasSingleString.class).get());
Assert.assertEquals(1, getDs().find(HasSingleString.class).count());
final HasManyStringsArray hms = getDs().find(HasManyStringsArray.class).get();
Assert.assertNotNull(hms);
Assert.assertNotNull(hms.strings);
Assert.assertEquals(1, hms.strings.length);
final HasManyStringsList hms2 = getDs().find(HasManyStringsList.class).get();
Assert.assertNotNull(hms2);
Assert.assertNotNull(hms2.strings);
Assert.assertEquals(1, hms2.strings.size());
}
@Test
public void testEmbeddedType() throws Exception {
getDs().save(new HasEmbeddedStringy());
Assert.assertNotNull(getDs().find(HasEmbeddedStringy.class).get());
Assert.assertEquals(1, getDs().find(HasEmbeddedStringy.class).count());
final HasEmbeddedStringyArray has = getDs().find(HasEmbeddedStringyArray.class).get();
Assert.assertNotNull(has);
Assert.assertNotNull(has.hss);
Assert.assertEquals(1, has.hss.length);
final HasEmbeddedStringySet has2 = getDs().find(HasEmbeddedStringySet.class).get();
Assert.assertNotNull(has2);
Assert.assertNotNull(has2.hss);
Assert.assertEquals(1, has2.hss.size());
}
@Embedded
private static class HasString {
private String s = "foo";
}
@Entity(value = "B", noClassnameStored = true)
private static class HasEmbeddedStringy {
@Id
private ObjectId id;
private HasString hs = new HasString();
}
@Entity(value = "B", noClassnameStored = true)
private static class HasEmbeddedStringyArray {
@Id
private ObjectId id;
@AlsoLoad("hs")
private HasString[] hss;
}
@Entity(value = "B", noClassnameStored = true)
private static class HasEmbeddedStringySet {
@Id
private ObjectId id;
@AlsoLoad("hs")
private Set<HasString> hss;
}
@Entity(value = "A", noClassnameStored = true)
private static class HasSingleString {
@Id
private ObjectId id;
private String s = "foo";
}
@Entity(value = "A", noClassnameStored = true)
private static class HasManyStringsArray {
@Id
private ObjectId id;
@AlsoLoad("s")
private String[] strings;
}
@Entity(value = "A", noClassnameStored = true)
private static class HasManyStringsList {
@Id
private ObjectId id;
@AlsoLoad("s")
private List<String> strings;
}
}