public void GivenPageTypeUpdationDisabled_SynchronizePageTypes_OnlyAddsExistingPageTypesToResolver()
        {
            MockRepository            fakes = new MockRepository();
            List <PageTypeDefinition> allPageTypeDefinitions = new List <PageTypeDefinition>
            {
                new PageTypeDefinition(),
                new PageTypeDefinition()
            };
            List <PageTypeDefinition> nonExistingPageTypesDefinitions = new List <PageTypeDefinition> {
                allPageTypeDefinitions[0]
            };
            PageTypeBuilderConfiguration configuration = fakes.Stub <PageTypeBuilderConfiguration>();

            configuration.Stub(config => config.DisablePageTypeUpdation).Return(true);
            configuration.Replay();
            IPageTypeDefinitionLocator pageTypeDefinitionLocator = CreatePageTypeDefinitionLocatorStub(allPageTypeDefinitions);
            PageTypeSynchronizer       pageTypeSynchronizer      = GetPageTypePartiallyMockedSynchronizer(pageTypeDefinitionLocator, configuration);

            pageTypeSynchronizer.Stub(synchronizer => synchronizer.GetNonExistingPageTypes(allPageTypeDefinitions)).Return(nonExistingPageTypesDefinitions);
            pageTypeSynchronizer.Replay();

            pageTypeSynchronizer.SynchronizePageTypes();

            pageTypeSynchronizer.AssertWasCalled(synchronizer => synchronizer.AddPageTypesToResolver(Arg <List <PageTypeDefinition> > .Matches(list => list.Count == 1)));
        }
        public void GivenPageTypeUpdationDisabled_SynchronizePageTypes_DoesNotUpdatePageTypePropertyDefinitions()
        {
            MockRepository fakes = new MockRepository();
            PageTypeBuilderConfiguration configuration = fakes.Stub <PageTypeBuilderConfiguration>();

            configuration.Stub(config => config.DisablePageTypeUpdation).Return(true);
            configuration.Replay();
            IPageTypeDefinitionLocator pageTypeDefinitionLocator = CreatePageTypeDefinitionLocatorStub(new List <PageTypeDefinition>());
            PageTypeSynchronizer       pageTypeSynchronizer      = GetPageTypePartiallyMockedSynchronizer(pageTypeDefinitionLocator, configuration);

            pageTypeSynchronizer.Stub(synchronizer =>
                                      synchronizer.GetNonExistingPageTypes(Arg <List <PageTypeDefinition> > .Is.Anything)).Return(new List <PageTypeDefinition>());

            pageTypeSynchronizer.SynchronizePageTypes();

            pageTypeSynchronizer.AssertWasNotCalled(synchronizer => synchronizer.UpdatePageTypePropertyDefinitions(Arg <List <PageTypeDefinition> > .Is.Anything));
        }
        private PageTypeSynchronizer GetPageTypePartiallyMockedSynchronizer(IPageTypeDefinitionLocator definitionLocator, PageTypeBuilderConfiguration configuration)
        {
            MockRepository       fakes = new MockRepository();
            PageTypeSynchronizer pageTypeSynchronizer = PageTypeSynchronizerFactory.PartialMock(fakes, definitionLocator, configuration);

            pageTypeSynchronizer.Stub(synchronizer => synchronizer.UpdateTabDefinitions());
            pageTypeSynchronizer.Stub(synchronizer => synchronizer.ValidatePageTypeDefinitions(Arg <List <PageTypeDefinition> > .Is.Anything));
            pageTypeSynchronizer.Stub(synchronizer => synchronizer.CreateNonExistingPageTypes(Arg <List <PageTypeDefinition> > .Is.Anything));
            pageTypeSynchronizer.Stub(synchronizer => synchronizer.UpdatePageTypes(Arg <List <PageTypeDefinition> > .Is.Anything));
            pageTypeSynchronizer.Stub(synchronizer => synchronizer.UpdatePageTypePropertyDefinitions(Arg <List <PageTypeDefinition> > .Is.Anything));
            pageTypeSynchronizer.Stub(synchronizer => synchronizer.AddPageTypesToResolver(Arg <List <PageTypeDefinition> > .Is.Anything));
            pageTypeSynchronizer.Replay();

            return(pageTypeSynchronizer);
        }