Esempio n. 1
0
        public void Can_create_contentpublishingitemviewmodel_in_wizardmode()
        {
            var overviewVmFactory   = new TestDynamicContentViewModelFactory <IContentPublishingOverviewStepViewModel>(ServManager.GetUri(ServiceNameEnum.DynamicContent));
            var placeVmFactory      = new TestDynamicContentViewModelFactory <IContentPublishingContentPlacesStepViewModel>(ServManager.GetUri(ServiceNameEnum.DynamicContent));
            var contentVmFactory    = new TestDynamicContentViewModelFactory <IContentPublishingDynamicContentStepViewModel>(ServManager.GetUri(ServiceNameEnum.DynamicContent));
            var conditionsVmFactory = new TestDynamicContentViewModelFactory <IContentPublishingConditionsStepViewModel>(ServManager.GetUri(ServiceNameEnum.DynamicContent));
            var repositoryFactory   =
                new DSRepositoryFactory <IDynamicContentRepository, DSDynamicContentClient, DynamicContentEntityFactory>(ServManager.GetUri(ServiceNameEnum.DynamicContent));

            //creating additional objects
            DynamicContentPlace[] contentPlaces;
            DynamicContentItem[]  contentItems;
            using (var repository = repositoryFactory.GetRepositoryInstance())
            {
                contentItems  = TestContentItemsBuilder.BuildsContentItems().GetItems().ToArray();
                contentPlaces = TestContentPlacesBuilder.BuildContentPlaces().GetPlaces().ToArray();

                RepositoryHelper.AddItemToRepository(repository, contentItems.AsEnumerable());
                RepositoryHelper.AddItemToRepository(repository, contentPlaces.AsEnumerable());
            }

            var entityFactory = new DynamicContentEntityFactory();
            var item          = entityFactory.CreateEntity <DynamicContentPublishingGroup>();

            //create viewmodel in wizardmode
            var createContentPublishngItemViewModel = new CreateContentPublishingItemViewModel(overviewVmFactory, placeVmFactory, contentVmFactory, conditionsVmFactory, item);

            Assert.NotNull(createContentPublishngItemViewModel);
            Assert.False(createContentPublishngItemViewModel.AllRegisteredSteps[0].IsValid);
            Assert.False(createContentPublishngItemViewModel.AllRegisteredSteps[1].IsValid);
            Assert.False(createContentPublishngItemViewModel.AllRegisteredSteps[2].IsValid);
            Assert.True(createContentPublishngItemViewModel.AllRegisteredSteps[3].IsValid);

            //fill the first step
            var firstStep = createContentPublishngItemViewModel.AllRegisteredSteps[0] as ContentPublishingOverviewStepViewModel;

            Assert.NotNull(firstStep);
            firstStep.InitializeForOpen();
            firstStep.InnerItem.Name        = "NewTestName";
            firstStep.InnerItem.Description = "NewTestDescription";
            firstStep.InnerItem.Priority    = 0;

            Assert.True(firstStep.IsValid);

            //fill the 2 step
            var secondStep =
                createContentPublishngItemViewModel.AllRegisteredSteps[1] as ContentPublishingContentPlacesStepViewModel;

            Assert.NotNull(secondStep);
            secondStep.InitializeForOpen();


            secondStep.InnerItemContentPlaces.Add(contentPlaces[0]);

            Assert.True(secondStep.IsValid);


            //fill the 3 step
            var thirdStep =
                createContentPublishngItemViewModel.AllRegisteredSteps[2] as
                ContentPublishingDynamicContentStepViewModel;

            Assert.NotNull(thirdStep);
            thirdStep.InitializeForOpen();
            thirdStep.InnerItemDynamicContent.Add(contentItems[0]);

            Assert.True(thirdStep.IsValid);

            //fill the 4 step
            var fourthStep =
                createContentPublishngItemViewModel.AllRegisteredSteps[3] as ContentPublishingConditionsStepViewModel;

            Assert.NotNull(fourthStep);
            fourthStep.InitializeForOpen();

            var expression = TestContentPublishingExpressionBuilder.BuildContentPublishingExpressionBuilder(
                fourthStep.ExpressionElementBlock.Children[0])
                             .AddCartTotalElement(fourthStep.ExpressionElementBlock.ExpressionViewModel)
                             .AddConditionAddOrBlock(fourthStep.ExpressionElementBlock.ExpressionViewModel).GetChild();

            fourthStep.ExpressionElementBlock.Children[0] = expression;

            Assert.True(fourthStep.IsValid);

            createContentPublishngItemViewModel.PrepareAndSave();

            using (var repository = repositoryFactory.GetRepositoryInstance())
            {
                var itemFromDb =
                    repository.PublishingGroups.Where(
                        s => s.DynamicContentPublishingGroupId == firstStep.InnerItem.DynamicContentPublishingGroupId)
                    .Expand(cpg => cpg.ContentItems).Expand(cpg => cpg.ContentPlaces)
                    .SingleOrDefault();

                Assert.True(itemFromDb.Name == "NewTestName");
                Assert.True(itemFromDb.Description == "NewTestDescription");
                Assert.NotNull(itemFromDb.ConditionExpression);
                Assert.NotNull(itemFromDb.PredicateVisualTreeSerialized);
            }
        }
Esempio n. 2
0
        public void Can_create_contentpublishingviewmodel_in_editmode_hardmode()
        {
            var repositoryFactory =
                new DSRepositoryFactory <IDynamicContentRepository, DSDynamicContentClient, DynamicContentEntityFactory>(
                    ServManager.GetUri(ServiceNameEnum.DynamicContent));

            var storeRepositoryFactory =
                new DSRepositoryFactory <IStoreRepository, DSDynamicContentClient, DynamicContentEntityFactory>(
                    ServManager.GetUri(ServiceNameEnum.DynamicContent));

            var countryRepositoryFactory =
                new DSRepositoryFactory <ICountryRepository, DSDynamicContentClient, DynamicContentEntityFactory>(
                    ServManager.GetUri(ServiceNameEnum.DynamicContent));
            var appConfigRepositoryFactory =
                new DSRepositoryFactory <IAppConfigRepository, DSDynamicContentClient, DynamicContentEntityFactory>(
                    ServManager.GetUri(ServiceNameEnum.DynamicContent));

            var searchCategoryVmFactory =
                new TestDynamicContentViewModelFactory <ISearchCategoryViewModel>(
                    ServManager.GetUri(ServiceNameEnum.DynamicContent));

            var navigationManager = new TestNavigationManager();

            DynamicContentPlace[] contentPlaces;
            DynamicContentItem[]  contentItems;
            using (var repository = repositoryFactory.GetRepositoryInstance())
            {
                contentPlaces = TestContentPlacesBuilder.BuildContentPlaces().GetPlaces().ToArray();
                contentItems  = TestContentItemsBuilder.BuildsContentItems().GetItems().ToArray();

                RepositoryHelper.AddItemToRepository(repository, contentItems.AsEnumerable());
                RepositoryHelper.AddItemToRepository(repository, contentPlaces.AsEnumerable());
            }

            //create fake innerItem
            var entityFactory = new DynamicContentEntityFactory();

            var item =
                TestContentPublishingBuilder.BuildDynamicContentPublishingGroup()
                .WithContentItems(contentItems.Take(1).ToArray())
                .WithContentPlaces(contentPlaces.Take(1).ToArray())
                .GetContentPublishingGroup();

            using (var repository = repositoryFactory.GetRepositoryInstance())
            {
                RepositoryHelper.AddItemToRepository(repository, item);
            }

            var detailViewModel = new ContentPublishingItemViewModel(appConfigRepositoryFactory, countryRepositoryFactory, searchCategoryVmFactory, repositoryFactory, entityFactory, storeRepositoryFactory, navigationManager, item);

            Assert.NotNull(detailViewModel);
            detailViewModel.InitializeForOpen();

            detailViewModel.InnerItem.Name = "EditName";

            //edit 2 step
            detailViewModel.InnerItemContentPlaces.Add(contentPlaces[1]);
            detailViewModel.InnerItemContentPlaces.Remove(contentPlaces[1]);
            detailViewModel.InnerItemContentPlaces.Add(contentPlaces[1]);
            detailViewModel.InnerItemContentPlaces.Remove(contentPlaces[1]);
            detailViewModel.InnerItemContentPlaces.Add(contentPlaces[1]);

            //edit 3 step
            detailViewModel.InnerItemDynamicContent.Add(contentItems[2]);
            detailViewModel.InnerItemDynamicContent.Remove(contentItems[2]);
            detailViewModel.InnerItemDynamicContent.Add(contentItems[2]);
            detailViewModel.InnerItemDynamicContent.Remove(contentItems[2]);


            //edit 4 step
            var expressionViewModel = detailViewModel.ExpressionElementBlock.ExpressionViewModel;

            detailViewModel.ExpressionElementBlock.Children[0] =
                TestContentPublishingExpressionBuilder.BuildContentPublishingExpressionBuilder(
                    detailViewModel.ExpressionElementBlock.Children[0])
                .AddCartTotalElement(expressionViewModel).AddConditionAddOrBlock(expressionViewModel).GetChild();

            Assert.True(detailViewModel.IsValid);
            detailViewModel.SaveWithoutUIChanges();


            //check the item from db
            using (var repository = repositoryFactory.GetRepositoryInstance())
            {
                var itemFromDb =
                    repository.PublishingGroups.Where(
                        pg =>
                        pg.DynamicContentPublishingGroupId ==
                        detailViewModel.InnerItem.DynamicContentPublishingGroupId)
                    .Expand(pg => pg.ContentItems).Expand(pg => pg.ContentPlaces).SingleOrDefault();

                Assert.NotNull(itemFromDb);
                Assert.True(itemFromDb.ContentItems.Count == 1);
                Assert.True(itemFromDb.ContentPlaces.Count == 2);
                Assert.True(itemFromDb.Name == "EditName");
                Assert.NotNull(itemFromDb.ConditionExpression);
                Assert.NotNull(itemFromDb.PredicateVisualTreeSerialized);
            }
        }