@Test public void testComposedUberObject() throws Exception { final Schema uberModel = context.resolve(new AnnotatedType(UberObject.class)); assertNotNull(uberModel); // make sure child points at parent assertTrue(uberModel instanceof ComposedSchema); ComposedSchema cm = (ComposedSchema) uberModel; assertEquals(cm.getAnyOf().size(), 2); assertEquals(cm.getAnyOf().get(0).get$ref(), "#/components/schemas/UserObject"); // parent properties are filtered out of subclass when parent doesn't define subtypes assertNotNull(cm.getProperties()); assertEquals(cm.getProperties().size(), 3); final Schema interfaceModel = context.getDefinedModels().get("UserObject"); assertNotNull(interfaceModel); assertUserObjectPropertiesValid(interfaceModel.getProperties()); }
@Test public void testComposedChildBean() throws Exception { final Schema subModel = context.resolve(new AnnotatedType(Sub2Bean.class)); assertNotNull(subModel); // make sure child points at parent assertTrue(subModel instanceof ComposedSchema); ComposedSchema cm = (ComposedSchema) subModel; assertEquals(cm.getAllOf().get(0).get$ref(), "#/components/schemas/BaseBean2"); // make sure parent properties are filtered out of subclass assertSub1PropertiesValid(cm.getProperties()); final Schema baseModel = context.getDefinedModels().get("BaseBean2"); assertNotNull(baseModel); assertBase2PropertiesValid(baseModel.getProperties()); }
@Test public void testInheritedChildBean() throws Exception { final Schema subModel = context.resolve(new AnnotatedType(Sub1Bean.class)); assertNotNull(subModel); // make sure child points at parent assertTrue(subModel instanceof ComposedSchema); ComposedSchema cm = (ComposedSchema) subModel; assertEquals(cm.getAllOf().get(0).get$ref(), "#/components/schemas/BaseBean"); // make sure parent properties are filtered out of subclass assertSub1PropertiesValid(cm.getProperties()); final Schema baseModel = context.getDefinedModels().get("BaseBean"); assertNotNull(baseModel); assertBasePropertiesValid(baseModel.getProperties()); }
@Test public void testMultipleInheritedBean() throws Exception { final Schema baseModel = context.resolve(new AnnotatedType(MultipleBaseBean.class)); assertNotNull(baseModel); assertBasePropertiesValid(baseModel.getProperties()); final Schema sub1Model = context.getDefinedModels().get("MultipleSub1Bean"); assertNotNull(sub1Model); // make sure child points at parent assertTrue(sub1Model instanceof ComposedSchema); ComposedSchema cm1 = (ComposedSchema) sub1Model; assertEquals(cm1.getAllOf().get(0).get$ref(), "#/components/schemas/MultipleBaseBean"); // make sure parent properties are filtered out of subclass assertSub1PropertiesValid(cm1.getProperties()); final Schema sub2Model = context.getDefinedModels().get("MultipleSub2Bean"); assertNotNull(sub2Model); assertTrue(sub2Model instanceof ComposedSchema); ComposedSchema cm2 = (ComposedSchema) sub2Model; assertEquals(cm2.getAllOf().get(0).get$ref(), "#/components/schemas/MultipleBaseBean"); // make sure parent properties are filtered out of subclass assertSub2PropertiesValid(cm2.getProperties()); }
@Test public void testInheritedBean() throws Exception { final Schema baseModel = context.resolve(new AnnotatedType(BaseBean.class)); assertNotNull(baseModel); assertBasePropertiesValid(baseModel.getProperties()); assertEquals(baseModel.getDiscriminator().getPropertyName(), "type"); assertEquals(baseModel.getDiscriminator().getMapping().get("Sub1BeanMapped"), "#/components/schemas/Sub1Bean"); final Schema subModel = context.getDefinedModels().get("Sub1Bean"); assertNotNull(subModel); // make sure child points at parent assertTrue(subModel instanceof ComposedSchema); ComposedSchema cm = (ComposedSchema) subModel; assertEquals(cm.getAllOf().get(0).get$ref(), "#/components/schemas/BaseBean"); // make sure parent properties are filtered out of subclass assertSub1PropertiesValid(cm.getProperties()); }
@Test public void testMultipleInheritedChildBean() throws Exception { final Schema subModel = context.resolve(new AnnotatedType(MultipleSub1Bean.class)); assertNotNull(subModel); // make sure child points at parent assertTrue(subModel instanceof ComposedSchema); ComposedSchema cm = (ComposedSchema) subModel; assertEquals(cm.getAllOf().get(0).get$ref(), "#/components/schemas/MultipleBaseBean"); // make sure parent properties are filtered out of subclass assertSub1PropertiesValid(cm.getProperties()); final Schema baseModel = context.getDefinedModels().get("MultipleBaseBean"); assertNotNull(baseModel); assertBasePropertiesValid(baseModel.getProperties()); final Schema sub1Model = context.getDefinedModels().get("MultipleSub1Bean"); assertNotNull(sub1Model); // make sure child points at parent assertTrue(sub1Model instanceof ComposedSchema); ComposedSchema cm1 = (ComposedSchema) sub1Model; assertEquals(cm1.getAllOf().get(0).get$ref(), "#/components/schemas/MultipleBaseBean"); // make sure parent properties are filtered out of subclass assertSub1PropertiesValid(cm1.getProperties()); final Schema sub2Model = context.getDefinedModels().get("MultipleSub2Bean"); assertNotNull(sub2Model); assertTrue(sub2Model instanceof ComposedSchema); ComposedSchema cm2 = (ComposedSchema) sub2Model; assertEquals(cm2.getAllOf().get(0).get$ref(), "#/components/schemas/MultipleBaseBean"); // make sure parent properties are filtered out of subclass assertSub2PropertiesValid(cm2.getProperties()); }
@Test public void testHierarchy() throws Exception { final Schema baseModel = context.resolve(new AnnotatedType(BaseBean3.class)); assertNotNull(baseModel); assertBasePropertiesValid(baseModel.getProperties()); assertEquals(baseModel.getDiscriminator().getPropertyName(), "type"); assertEquals(baseModel.getDiscriminator().getMapping().get("ChildBean3Mapped"), "#/components/schemas/ChildBean3"); final Schema subModel = context.getDefinedModels().get("ChildBean3"); assertNotNull(subModel); // make sure child points at parent assertTrue(subModel instanceof ComposedSchema); ComposedSchema cm = (ComposedSchema) subModel; assertEquals(cm.getAllOf().get(0).get$ref(), "#/components/schemas/BaseBean3"); // make sure parent properties are filtered out of subclass assertSub1PropertiesValid(cm.getProperties()); // assert grandchild final Schema subSubModel = context.getDefinedModels().get("GrandChildBean3"); assertNotNull(subSubModel); // make sure child points at parent assertTrue(subSubModel instanceof ComposedSchema); cm = (ComposedSchema) subSubModel; assertEquals(cm.getAllOf().get(0).get$ref(), "#/components/schemas/ChildBean3"); // make sure parent properties are filtered out of subclass assertSub2PropertiesValid(cm.getProperties()); }