@Test public void testCanMapAPackageContainingAVersionedAbstractBaseClass() { Morphia morphia = getMorphia().mapPackage("xyz.morphia.entities.version"); Collection<MappedClass> mappedClasses = morphia.getMapper().getMappedClasses(); assertThat(mappedClasses.size(), is(2)); List<Class<?>> list = new ArrayList<Class<?>>(); for (MappedClass mappedClass : mappedClasses) { list.add(mappedClass.getClazz()); } assertTrue(list.contains(VersionedChildEntity.class)); assertTrue(list.contains(AbstractVersionedBase.class)); }
@Test public void testCanMapAnEntityWithAnAbstractVersionedParent() { Morphia morphia = getMorphia().map(VersionedChildEntity.class); Collection<MappedClass> mappedClasses = morphia.getMapper().getMappedClasses(); assertThat(mappedClasses.size(), is(2)); List<Class<?>> list = new ArrayList<Class<?>>(); for (MappedClass mappedClass : mappedClasses) { list.add(mappedClass.getClazz()); } assertTrue(list.contains(VersionedChildEntity.class)); assertTrue(list.contains(AbstractVersionedBase.class)); }
@Test public void shouldOnlyMapEntitiesInTheGivenPackage() { // when final Morphia morphia = new Morphia(); morphia.mapPackage("xyz.morphia.testmappackage"); // then Collection<MappedClass> mappedClasses = morphia.getMapper().getMappedClasses(); assertThat(mappedClasses.size(), is(1)); assertEquals(mappedClasses.iterator().next().getClazz(), SimpleEntity.class); }
@Test public void testBasicMappingWithCachedClasses() { getMorphia().getMapper().getOptions().setCacheClassLookups(true); try { performBasicMappingTest(); final DefaultCreator objectFactory = (DefaultCreator) getMorphia().getMapper().getOptions().getObjectFactory(); assertTrue(objectFactory.getClassNameCache().containsKey(Hotel.class.getName())); assertTrue(objectFactory.getClassNameCache().containsKey(TravelAgency.class.getName())); } finally { getMorphia().getMapper().getOptions().setCacheClassLookups(false); } }
@Test public void testBasicMapping() { performBasicMappingTest(); final DefaultCreator objectFactory = (DefaultCreator) getMorphia().getMapper().getOptions().getObjectFactory(); assertTrue(objectFactory.getClassNameCache().isEmpty()); }
@Test public void mapperTest() { getMorphia().map(Employee.class); for (boolean nulls : new boolean[]{true, false}) { for (boolean empties : new boolean[]{true, false}) { getMorphia().getMapper().getOptions().setStoreNulls(nulls); getMorphia().getMapper().getOptions().setStoreEmpties(empties); empties(); } } }
@Test public final void convertersFoundFromSubClass() { getMorphia().map(SubClass.class); Assert.assertTrue("Converters annotated in super class are not present.", getMorphia().getMapper().getConverters().isRegistered(SquareConverter.class)); Assert.assertTrue("Converters annotated in sub class are not present.", getMorphia().getMapper().getConverters().isRegistered(TriangleConverter.class)); }
@Test public void subTypes() { getMorphia().map(NestedImpl.class, AnotherNested.class); Mapper mapper = getMorphia().getMapper(); List<MappedClass> subTypes = mapper.getSubTypes(mapper.getMappedClass(Nested.class)); Assert.assertTrue(subTypes.contains(mapper.getMappedClass(NestedImpl.class))); Assert.assertTrue(subTypes.contains(mapper.getMappedClass(AnotherNested.class))); }
@Test(expected = MappingException.class) public void weightsOnNonTextIndex() { MongoCollection<Document> indexes = getDatabase().getCollection("indexes"); MappedClass mappedClass = getMorphia().getMapper().getMappedClass(IndexedClass.class); IndexBuilder index = new IndexBuilder() .fields(new FieldBuilder() .value("name") .weight(10)); indexHelper.createIndex(indexes, mappedClass, index, false); }
@Test public void testParamEntity() throws Exception { final MappedClass mc = getMorphia().getMapper().getMappedClass(A.class); assertNotNull(mc); assertEquals(1, mc.getAnnotations(Indexes.class).size()); getDs().ensureIndexes(A.class); final DBCollection coll = getDs().getCollection(A.class); assertEquals("indexes found: coll.getIndexInfo()" + coll.getIndexInfo(), 3, coll.getIndexInfo().size()); }
@Test public void testConversionInList() { final FooConverter fc = new FooConverter(); getMorphia().getMapper().getConverters().addConverter(fc); final E1 e = new E1(); e.foo.add(new Foo("bar")); getDs().save(e); Assert.assertTrue(fc.didConversion()); }
@Test public void testInheritedFieldIndex() throws Exception { getMorphia().map(Circle.class) .map(Shape.class); getMorphia().getMapper() .getMappedClass(Circle.class); getDs().ensureIndexes(); final DBCollection coll = getDs().getCollection(Circle.class); assertEquals(4, coll.getIndexInfo() .size()); }
@Test public void textPartialFilters() { MongoCollection<Document> collection = getDatabase().getCollection("indexes"); MappedClass mappedClass = getMorphia().getMapper().getMappedClass(IndexedClass.class); Text text = new TextBuilder() .value(4) .options(new IndexOptionsBuilder() .partialFilter("{ name : { $gt : 13 } }")); indexHelper.createIndex(collection, mappedClass, indexHelper.convert(text, "text"), false); findPartialIndex(BasicDBObject.parse(text.options().partialFilter())); }
@Test public void indexPartialFilters() { MongoCollection<Document> collection = getDatabase().getCollection("indexes"); MappedClass mappedClass = getMorphia().getMapper().getMappedClass(IndexedClass.class); Index index = new IndexBuilder() .fields(new FieldBuilder().value("text")) .options(new IndexOptionsBuilder() .partialFilter("{ name : { $gt : 13 } }")); indexHelper.createIndex(collection, mappedClass, index, false); findPartialIndex(BasicDBObject.parse(index.options().partialFilter())); } @Test
@Test public void dottedPath() { getMorphia().map(ParentType.class, EmbeddedType.class); Mapper mapper = getMorphia().getMapper(); PathTarget pathTarget = new PathTarget(mapper, ParentType.class, "embedded.number"); Assert.assertEquals("embedded.number", pathTarget.translatedPath()); Assert.assertEquals(mapper.getMappedClass(EmbeddedType.class).getMappedFieldByJavaField("number"), pathTarget.getTarget()); }
@Test public void idFieldMapping() { final MappedField field = new MappedField(getField(TestEntity.class, "id"), TestEntity.class, getMorphia().getMapper()); Assert.assertTrue(field.isSingleValue()); Assert.assertTrue(ObjectId.class == field.getType()); Assert.assertEquals("id", field.getJavaFieldName()); Assert.assertEquals("_id", field.getNameToStore()); }
@Test public void testFinalFieldNotPersisted() { getMorphia().getMapper().getOptions().setIgnoreFinals(true); getMorphia().map(ContainsFinalField.class); final Key<ContainsFinalField> savedKey = getDs().save(new ContainsFinalField("blah")); final ContainsFinalField loaded = getDs().get(ContainsFinalField.class, savedKey.getId()); assertNotNull(loaded); assertNotNull(loaded.name); assertEquals("foo", loaded.name); }
@Test public void simpleResolution() { getMorphia().map(ParentType.class, EmbeddedType.class); Mapper mapper = getMorphia().getMapper(); MappedClass mappedClass = mapper.getMappedClass(ParentType.class); PathTarget pathTarget = new PathTarget(mapper, mappedClass, "name"); Assert.assertEquals("n", pathTarget.translatedPath()); Assert.assertEquals(mappedClass.getMappedFieldByJavaField("name"), pathTarget.getTarget()); pathTarget = new PathTarget(mapper, mappedClass, "n"); Assert.assertEquals("n", pathTarget.translatedPath()); Assert.assertEquals(mappedClass.getMappedField("n"), pathTarget.getTarget()); }
@Test public void arrays() { getMorphia().map(EntityWithListsAndArrays.class, EmbeddedType.class, Student.class); Mapper mapper = getMorphia().getMapper(); MappedClass mappedClass = mapper.getMappedClass(EntityWithListsAndArrays.class); PathTarget pathTarget = new PathTarget(mapper, mappedClass, "listEmbeddedType.1.number"); Assert.assertEquals("listEmbeddedType.1.number", pathTarget.translatedPath()); Assert.assertEquals(mapper.getMappedClass(EmbeddedType.class).getMappedFieldByJavaField("number"), pathTarget.getTarget()); assertEquals("listEmbeddedType.$", new PathTarget(mapper, mappedClass, "listEmbeddedType.$").translatedPath()); assertEquals("listEmbeddedType.1", new PathTarget(mapper, mappedClass, "listEmbeddedType.1").translatedPath()); }
@Test public void collectionFieldMapping() { final MappedField field = new MappedField(getField(TestEntity.class, "listOfString"), TestEntity.class, getMorphia().getMapper()); Assert.assertFalse(field.isSingleValue()); Assert.assertTrue(field.isMultipleValues()); Assert.assertFalse(field.isArray()); Assert.assertTrue(List.class == field.getType()); Assert.assertTrue(String.class == field.getSubType()); Assert.assertEquals("listOfString", field.getJavaFieldName()); Assert.assertEquals("listOfString", field.getNameToStore()); }