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 Constructor_SetsTabDefinitionUpdaterPropertyToInstanceOfTabDefinitionUpdater()
        {
            PageTypeSynchronizer synchronizer = CreatePageTypeSynchronizer();

            Assert.NotNull(synchronizer.TabDefinitionUpdater);
            Assert.Equal <Type>(typeof(TabDefinitionUpdater), synchronizer.TabDefinitionUpdater.GetType());
        }
Пример #3
0
        public void GivenPageTypeDefinition_AddPageTypesToResolver_AddsToResolver()
        {
            List <PageTypeDefinition> definitions = new List <PageTypeDefinition>();
            PageTypeDefinition        definition  = new PageTypeDefinition
            {
                Type      = typeof(string),
                Attribute = new PageTypeAttribute()
            };

            definitions.Add(definition);
            IPageType pageType = new NativePageType();

            pageType.ID = 1;
            MockRepository   fakes           = new MockRepository();
            IPageTypeLocator pageTypeLocator = fakes.Stub <IPageTypeLocator>();

            pageTypeLocator.Stub(locator => locator.GetExistingPageType(definition)).Return(pageType);
            pageTypeLocator.Replay();
            PageTypeResolver     resolver     = new PageTypeResolver();
            PageTypeSynchronizer synchronizer = PageTypeSynchronizerFactory.Create(resolver, pageTypeLocator);

            synchronizer.AddPageTypesToResolver(definitions);

            Assert.Equal <Type>(definition.Type, resolver.GetPageTypeType(pageType.ID));
        }
Пример #4
0
        public void GivenPageType_UpdatePageTypePropertyDefinitions_CallsPageTypePropertyUpdaterUpdatePageTypePropertyDefinitions()
        {
            PageTypeDefinition definition = new PageTypeDefinition();

            MockRepository          fakes                   = new MockRepository();
            PageTypeUpdater         pageTypeUpdater         = PageTypeUpdaterFactory.Stub(fakes);
            IPageType               pageType                = new NativePageType();
            PageTypePropertyUpdater pageTypePropertyUpdater = PageTypePropertyUpdaterFactory.Stub(fakes);

            pageTypePropertyUpdater.Stub(updater => updater.UpdatePageTypePropertyDefinitions(pageType, definition));
            pageTypePropertyUpdater.Replay();
            IPageTypeLocator pageTypeLocator = fakes.Stub <IPageTypeLocator>();

            pageTypeLocator.Stub(locator => locator.GetExistingPageType(definition)).Return(pageType);
            pageTypeLocator.Replay();
            List <PageTypeDefinition> definitions = new List <PageTypeDefinition> {
                definition
            };
            PageTypeSynchronizer synchronizer =
                PageTypeSynchronizerFactory.Create(pageTypePropertyUpdater, pageTypeLocator);

            synchronizer.PageTypeUpdater = pageTypeUpdater;
            synchronizer.UpdatePageTypePropertyDefinitions(definitions);

            pageTypePropertyUpdater.AssertWasCalled(updater => updater.UpdatePageTypePropertyDefinitions(pageType, definition));
        }
        public void Constructor_SetsPageTypeDefinitionValidatorPropertyToInstanceOfPageTypeDefinitionValidator()
        {
            PageTypeSynchronizer synchronizer = CreatePageTypeSynchronizer();

            Assert.NotNull(synchronizer.PageTypeDefinitionValidator);
            Assert.Equal <Type>(typeof(PageTypeDefinitionValidator), synchronizer.PageTypeDefinitionValidator.GetType());
        }
        public void Constructor_SetsPageTypeResolverPropertyToInstanceOfPageTypeResolver()
        {
            PageTypeSynchronizer synchronizer = CreatePageTypeSynchronizer();

            Assert.NotNull(synchronizer.PageTypeResolver);
            Assert.Equal <Type>(typeof(PageTypeResolver), synchronizer.PageTypeResolver.GetType());
            Assert.Equal <PageTypeResolver>(PageTypeResolver.Instance, synchronizer.PageTypeResolver);
        }
        public void SynchronizePageTypes_CallsPageTypeDefinitionLocatorGetPageTypeDefinitions()
        {
            List <PageTypeDefinition>  pageTypeDefinitions       = new List <PageTypeDefinition>();
            IPageTypeDefinitionLocator pageTypeDefinitionLocator = CreatePageTypeDefinitionLocatorStub(pageTypeDefinitions);
            PageTypeSynchronizer       pageTypeSynchronizer      = GetPageTypePartiallyMockedSynchronizer(pageTypeDefinitionLocator);

            pageTypeSynchronizer.SynchronizePageTypes();

            pageTypeDefinitionLocator.AssertWasCalled(locator => locator.GetPageTypeDefinitions(), options => options.Repeat.AtLeastOnce());
        }
        public void SynchronizePageTypes_UpdatesPageTypePropertyDefinitionsForPageTypes()
        {
            List <PageTypeDefinition>  pageTypeDefinitions       = new List <PageTypeDefinition>();
            IPageTypeDefinitionLocator pageTypeDefinitionLocator = CreatePageTypeDefinitionLocatorStub(pageTypeDefinitions);
            PageTypeSynchronizer       pageTypeSynchronizer      = GetPageTypePartiallyMockedSynchronizer(pageTypeDefinitionLocator);

            pageTypeSynchronizer.SynchronizePageTypes();

            pageTypeSynchronizer.AssertWasCalled(synchronizer => synchronizer.UpdatePageTypePropertyDefinitions(pageTypeDefinitions));
        }
        public void SynchronizePageTypes_CreatesNonExistingPageTypes()
        {
            List <PageTypeDefinition>  pageTypeDefinitions       = new List <PageTypeDefinition>();
            IPageTypeDefinitionLocator pageTypeDefinitionLocator = CreatePageTypeDefinitionLocatorStub(pageTypeDefinitions);
            PageTypeSynchronizer       pageTypeSynchronizer      = GetPageTypePartiallyMockedSynchronizer(pageTypeDefinitionLocator);

            pageTypeSynchronizer.SynchronizePageTypes();

            pageTypeSynchronizer.AssertWasCalled(synchronizer => synchronizer.CreateNonExistingPageTypes(pageTypeDefinitions));
        }
        public void SynchronizePageTypes_AddsPageTypesToResolver()
        {
            List <PageTypeDefinition>  pageTypeDefinitions       = new List <PageTypeDefinition>();
            IPageTypeDefinitionLocator pageTypeDefinitionLocator = CreatePageTypeDefinitionLocatorStub(pageTypeDefinitions);
            PageTypeSynchronizer       pageTypeSynchronizer      = GetPageTypePartiallyMockedSynchronizer(pageTypeDefinitionLocator);

            pageTypeSynchronizer.SynchronizePageTypes();

            pageTypeSynchronizer.AssertWasCalled(synchronizer => synchronizer.AddPageTypesToResolver(pageTypeDefinitions));
        }
        public void GivenDefinition_ValidatePageTypeDefinitions_CallsValidatorsValidatePageTypeDefinitionsMethod()
        {
            List <PageTypeDefinition>   definitions         = new List <PageTypeDefinition>();
            PageTypeSynchronizer        synchronizer        = CreateSynchronizer();
            MockRepository              fakes               = new MockRepository();
            PageTypeDefinitionValidator definitionValidator = fakes.Stub <PageTypeDefinitionValidator>((PageDefinitionTypeMapper)null);

            definitionValidator.Stub(validator => validator.ValidatePageTypeDefinitions(definitions));
            definitionValidator.Replay();
            synchronizer.PageTypeDefinitionValidator = definitionValidator;

            synchronizer.ValidatePageTypeDefinitions(definitions);

            definitionValidator.AssertWasCalled(validator => validator.ValidatePageTypeDefinitions(definitions));
        }
        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);
        }
Пример #13
0
        public void Initialize(InitializationEngine context)
        {
            var containerBuilder    = new ContainerBuilder();
            var defaultBootstrapper = new DefaultBootstrapper();

            defaultBootstrapper.Configure(containerBuilder);
            var container = containerBuilder.Build();

            PageTypeSynchronizer synchronizer = container.Resolve <PageTypeSynchronizer>();

            synchronizer.SynchronizePageTypes();

            DataFactory.Instance.LoadedPage            += DataFactory_LoadedPage;
            DataFactory.Instance.LoadedChildren        += DataFactory_LoadedChildren;
            DataFactory.Instance.LoadedDefaultPageData += DataFactory_LoadedPage;
        }
        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));
        }
Пример #15
0
        public void GivenPageType_UpdatePageTypes_CallsPageTypeUpdaterUpdatePageType()
        {
            PageTypeSynchronizer synchronizer    = PageTypeSynchronizerFactory.Create();
            MockRepository       fakes           = new MockRepository();
            PageTypeUpdater      pageTypeUpdater = PageTypeUpdaterFactory.Stub(fakes);
            PageTypeDefinition   definition      = new PageTypeDefinition();

            pageTypeUpdater.Stub(updater => updater.UpdatePageType(definition));
            pageTypeUpdater.Replay();
            synchronizer.PageTypeUpdater = pageTypeUpdater;
            List <PageTypeDefinition> definitions = new List <PageTypeDefinition> {
                definition
            };

            synchronizer.UpdatePageTypes(definitions);

            pageTypeUpdater.AssertWasCalled(updater => updater.UpdatePageType(definition));
        }
Пример #16
0
        public void GivenExistingPageTypeFound_CreateNonExistingPageTypes_PageTypeUpdaterCreateNewPageTypeNotCalled()
        {
            MockRepository            fakes           = new MockRepository();
            PageTypeUpdater           pageTypeUpdater = PageTypeUpdaterFactory.Stub(fakes);
            PageTypeDefinition        definition      = new PageTypeDefinition();
            List <PageTypeDefinition> definitions     = new List <PageTypeDefinition>();

            definitions.Add(definition);
            pageTypeUpdater.Replay();
            IPageTypeLocator pageTypeLocator = fakes.Stub <IPageTypeLocator>();

            pageTypeLocator.Stub(locator => locator.GetExistingPageType(definition)).Return(new NativePageType());
            pageTypeLocator.Replay();
            PageTypeSynchronizer synchronizer = CreateSynchronizer(pageTypeLocator);

            synchronizer.CreateNonExistingPageTypes(definitions);

            pageTypeUpdater.AssertWasNotCalled(updater => updater.CreateNewPageType(Arg <PageTypeDefinition> .Is.Anything));
        }
Пример #17
0
        public void Initialize(InitializationEngine context)
        {
            var pageTypeLocator           = new PageTypeLocator(new PageTypeFactory());
            var pageTypeDefinitionLocator = new PageTypeDefinitionLocator(
                new AppDomainAssemblyLocator());
            var pageTypeUpdater = new PageTypeUpdater(
                pageTypeDefinitionLocator,
                new PageTypeFactory(),
                new PageTypeValueExtractor(),
                pageTypeLocator);

            var pageTypePropertyUpdater = new PageTypePropertyUpdater(
                new PageDefinitionFactory(),
                new PageDefinitionTypeFactory(),
                new TabFactory(),
                new PropertySettingsRepository());

            var tabDefinitionUpdater = new TabDefinitionUpdater(new TabFactory());

            var tabLocator = new TabLocator(new AppDomainAssemblyLocator());

            PageTypeSynchronizer synchronizer = new PageTypeSynchronizer(
                pageTypeDefinitionLocator,
                Configuration,
                pageTypePropertyUpdater,
                new PageTypeDefinitionValidator(new PageDefinitionTypeMapper(new PageDefinitionTypeFactory())),
                PageTypeResolver.Instance,
                pageTypeLocator,
                pageTypeUpdater,
                tabDefinitionUpdater,
                tabLocator);

            synchronizer.SynchronizePageTypes();

            DataFactory.Instance.LoadedPage            += DataFactory_LoadedPage;
            DataFactory.Instance.LoadedChildren        += DataFactory_LoadedChildren;
            DataFactory.Instance.LoadedDefaultPageData += DataFactory_LoadedPage;
        }
Пример #18
0
        public void UpdateTabDefinitions_CallsTabDefinitionUpdaterWithDefinedTabs()
        {
            PageTypeSynchronizer pageTypeSynchronizer = PageTypeSynchronizerFactory.Create();
            MockRepository       fakes          = new MockRepository();
            TabLocator           fakeTabLocator = TabLocatorFactory.Stub(fakes);
            List <Tab>           tabs           = new List <Tab> {
                new TestTab()
            };

            fakeTabLocator.Stub(locator => locator.GetDefinedTabs()).Return(tabs);
            fakeTabLocator.Replay();
            pageTypeSynchronizer.TabLocator = fakeTabLocator;
            TabDefinitionUpdater fakeTabDefinitionUpdater = TabDefinitionUpdaterFactory.Stub(fakes);

            fakeTabDefinitionUpdater.Stub(updater => updater.UpdateTabDefinitions(Arg <List <Tab> > .Is.Anything));
            fakeTabDefinitionUpdater.Replay();
            pageTypeSynchronizer.TabDefinitionUpdater = fakeTabDefinitionUpdater;

            pageTypeSynchronizer.UpdateTabDefinitions();

            pageTypeSynchronizer.TabLocator.AssertWasCalled(updater => updater.GetDefinedTabs());
            pageTypeSynchronizer.TabDefinitionUpdater.AssertWasCalled(updater => updater.UpdateTabDefinitions(tabs));
        }