### Question:
MongoDbPageTemplateConverter implements HydratingModelConverter<PageTemplate, MongoDbPageTemplate> { @Override public MongoDbPageTemplate convert(PageTemplate source) { MongoDbPageTemplate converted = source instanceof MongoDbPageTemplate ? ((MongoDbPageTemplate) source) : new MongoDbPageTemplate(); updateProperties(source, converted); if (source.getSubPageTemplates() != null) { List<PageTemplate> subPages = Lists.newArrayList(); for (PageTemplate sub : source.getSubPageTemplates()) { subPages.add(convert(sub)); } converted.setSubPageTemplates(subPages); } if (source.getPageTemplateRegions() != null) { List<PageTemplateRegion> convertedRegions = Lists.newArrayList(); for (PageTemplateRegion region : source.getPageTemplateRegions()) { convertedRegions.add(convert(region)); } converted.setPageTemplateRegions(convertedRegions); } return converted; }  @Override void hydrate(MongoDbPageTemplate dehydrated); @Override Class<PageTemplate> getSourceType(); @Override MongoDbPageTemplate convert(PageTemplate source); void setPageLayoutRepository(PageLayoutRepository pageLayoutRepository); PageLayoutRepository getPageLayoutRepository();  }### Answer:
@Test public void convert_Not_InstanceOf(){ PageTemplate pageTemplate = new PageTemplateImpl(); pageTemplate.setPageLayout(new PageLayoutImpl()); MongoDbPageTemplate subPage = new MongoDbPageTemplate(); subPage.setPageLayout(new PageLayoutImpl()); ArrayList<PageTemplate> subPages = new ArrayList<PageTemplate>(); subPages.add(subPage); pageTemplate.setSubPageTemplates(subPages); PageTemplateRegion region = createNewPageTemplateRegion(); ArrayList<PageTemplateRegion> regions = new ArrayList<PageTemplateRegion>(); regions.add(region); pageTemplate.setPageTemplateRegions(regions); MongoDbPageTemplate converted = pageTemplateConverter.convert(pageTemplate); assertNotNull(converted.getId()); assertNotNull(converted.getPageTemplateRegions()); assertNotNull(converted.getSubPageTemplates()); }
@Test public void convert_PageTemplateWidgets_Null(){ PageTemplate pageTemplate = new PageTemplateImpl(); pageTemplate.setPageLayout(new PageLayoutImpl()); PageTemplateRegion pageTemplateRegion = new PageTemplateRegionImpl(); pageTemplate.setPageTemplateRegions(Arrays.asList(pageTemplateRegion)); MongoDbPageTemplate converted = pageTemplateConverter.convert(pageTemplate); assertNotNull(converted.getId()); }
@Test public void convert_Valid_Null_WidgetID(){ PageTemplate source = new PageTemplateImpl(); PageTemplateRegion pageTemplateRegion = new PageTemplateRegionImpl(); source.setPageTemplateRegions(Arrays.asList(pageTemplateRegion)); PageTemplateWidget pageTemplateWidget = new PageTemplateWidgetImpl(); pageTemplateRegion.setPageTemplateWidgets(Arrays.asList(pageTemplateWidget)); source.setPageLayout(new PageLayoutImpl()); MongoDbPageTemplate converted = pageTemplateConverter.convert(source); assertTrue(converted instanceof MongoDbPageTemplate); }