private IPriceListOverviewStepViewModel CeratePriceListOverviewStep(params KeyValuePair <string, object>[] parameters)
        {
            var priceListRepositoryFactory = new DSRepositoryFactory <IPricelistRepository, DSCatalogClient, CatalogEntityFactory>(_catalogServiceUri);
            var appConfigRepositoryFactory = new DSRepositoryFactory <IAppConfigRepository, DSAppConfigClient, AppConfigEntityFactory>(_appConfigServiceUri);

            ICatalogEntityFactory  entityFactory = new CatalogEntityFactory();
            IAuthenticationContext authContext   = new TestAuthenticationContext();
            var item   = parameters.SingleOrDefault(x => x.Key == "item").Value;
            var retVal = new PriceListOverviewStepViewModel(priceListRepositoryFactory, appConfigRepositoryFactory, entityFactory,
                                                            authContext, item as Pricelist);

            return(retVal);
        }
        private IPriceListViewModel CreatePriceList(params KeyValuePair <string, object>[] parameters)
        {
            var priceListRepositoryFactory = new DSRepositoryFactory <IPricelistRepository, DSCatalogClient, CatalogEntityFactory>(_catalogServiceUri);
            var appConfigRepositoryFactory = new DSRepositoryFactory <IAppConfigRepository, DSAppConfigClient, AppConfigEntityFactory>(_appConfigServiceUri);

            // create Item using EntityFactory
            var entityFactory = new CatalogEntityFactory();

            IAuthenticationContext authenticationContext = new TestAuthenticationContext();
            var navigationManager = new TestNavigationManager();

            var item   = parameters.SingleOrDefault(x => x.Key == "item").Value;
            var retVal = new PriceListViewModel(priceListRepositoryFactory, appConfigRepositoryFactory, null, entityFactory,
                                                navigationManager, authenticationContext, item as Pricelist);

            return(retVal);
        }
예제 #3
0
        private void Initialize()
        {
            var environmentFactory    = EnvironmentFactoryFactory.Create();
            var authenticationContext = new TestAuthenticationContext();

            var userOperations    = environmentFactory.ManagementEnvironment.MgmtUserOperations;
            var companyOperations = environmentFactory.ManagementEnvironment.MgmtCompanyOperations;
            var serviceOperations = environmentFactory.ManagementEnvironment.MgmtServiceOperations;
            var settingOperations = environmentFactory.ManagementEnvironment.MgmtSettingOperations;

            settingOperations.Update(new Setting(Setting.ServiceProfile, ServiceProfile.SingleService.ToString()));

            _settingProvider = new SettingProvider(settingOperations);

            _companyService = new CompanyService(companyOperations, authenticationContext, null, new CapabilityProvider(_settingProvider));
            _serviceService = new ServiceService(serviceOperations, companyOperations, authenticationContext, null, new CapabilityProvider(_settingProvider));
            var environmentPrebuilder = new EnvironmentPrebuilder(authenticationContext, _settingProvider, _companyService, _serviceService);

            _userService = new UserService(userOperations, authenticationContext, _settingProvider, environmentPrebuilder);
        }
        public void Can_add_update_delete_item_property_values()
        {
            var catalogName    = "Test catalog";
            var catalogBuilder = CatalogBuilder.BuildCatalog(catalogName).WithCategory("category").WithProducts(1);
            var catalog        = catalogBuilder.GetCatalog() as Catalog;
            var item           = catalogBuilder.GetItems()[0];

            var property1 = new Property {
                Name = "bool", PropertyValueType = PropertyValueType.Boolean.GetHashCode()
            };
            var property2 = new Property {
                Name = "datetime", PropertyValueType = PropertyValueType.DateTime.GetHashCode()
            };
            var property3 = new Property {
                Name = "Decimal", PropertyValueType = PropertyValueType.Decimal.GetHashCode()
            };
            var property4 = new Property {
                Name = "int", PropertyValueType = PropertyValueType.Integer.GetHashCode()
            };
            var property5 = new Property {
                Name = "longstr", PropertyValueType = PropertyValueType.LongString.GetHashCode()
            };
            var property6 = new Property {
                Name = "shorttext", PropertyValueType = PropertyValueType.ShortString.GetHashCode()
            };

            var propertySet = catalog.PropertySets[0];

            propertySet.PropertySetProperties.Add(new PropertySetProperty {
                Property = property1
            });
            propertySet.PropertySetProperties.Add(new PropertySetProperty {
                Property = property2
            });
            propertySet.PropertySetProperties.Add(new PropertySetProperty {
                Property = property3
            });
            propertySet.PropertySetProperties.Add(new PropertySetProperty {
                Property = property4
            });
            propertySet.PropertySetProperties.Add(new PropertySetProperty {
                Property = property5
            });
            propertySet.PropertySetProperties.Add(new PropertySetProperty {
                Property = property6
            });
            propertySet.PropertySetProperties.ToList().ForEach(x =>
            {
                x.Property.IsRequired = true;
                x.Property.CatalogId  = catalogName;
            });

            var repositoryFactory = new DSRepositoryFactory <ICatalogRepository, DSCatalogClient, CatalogEntityFactory>(ServManager.GetUri(ServiceNameEnum.Catalog));

            using (var repository = repositoryFactory.GetRepositoryInstance())
            {
                repository.Add(catalog);
                repository.Add(item);
                repository.UnitOfWork.Commit();
            }

            IRepositoryFactory <IPricelistRepository>           pricelistRepositoryFactory    = new DSRepositoryFactory <IPricelistRepository, DSCatalogClient, CatalogEntityFactory>(ServManager.GetUri(ServiceNameEnum.Catalog));
            IViewModelsFactory <IPropertyValueBaseViewModel>    propertyValueVmFactory        = new TestCatalogViewModelFactory <IPropertyValueBaseViewModel>(ServManager.GetUri(ServiceNameEnum.Catalog), ServManager.GetUri(ServiceNameEnum.AppConfig));
            IViewModelsFactory <IPriceViewModel>                priceVmFactory                = new TestCatalogViewModelFactory <IPriceViewModel>(ServManager.GetUri(ServiceNameEnum.Catalog), ServManager.GetUri(ServiceNameEnum.AppConfig));
            IViewModelsFactory <IItemAssetViewModel>            assetVmFactory                = new TestCatalogViewModelFactory <IItemAssetViewModel>(ServManager.GetUri(ServiceNameEnum.Catalog), ServManager.GetUri(ServiceNameEnum.AppConfig));
            IViewModelsFactory <IAssociationGroupEditViewModel> associationGroupEditVmFactory = new TestCatalogViewModelFactory <IAssociationGroupEditViewModel>(ServManager.GetUri(ServiceNameEnum.Catalog), ServManager.GetUri(ServiceNameEnum.AppConfig));
            IViewModelsFactory <IAssociationGroupViewModel>     associationGroupVmFactory     = new TestCatalogViewModelFactory <IAssociationGroupViewModel>(ServManager.GetUri(ServiceNameEnum.Catalog), ServManager.GetUri(ServiceNameEnum.AppConfig));
            IViewModelsFactory <IItemRelationViewModel>         itemRelationVmFactory         = new TestCatalogViewModelFactory <IItemRelationViewModel>(ServManager.GetUri(ServiceNameEnum.Catalog), ServManager.GetUri(ServiceNameEnum.AppConfig));
            IViewModelsFactory <IEditorialReviewViewModel>      reviewVmFactory               = new TestCatalogViewModelFactory <IEditorialReviewViewModel>(ServManager.GetUri(ServiceNameEnum.Catalog), ServManager.GetUri(ServiceNameEnum.AppConfig));
            IViewModelsFactory <ICategoryItemRelationViewModel> categoryVmFactory             = new TestCatalogViewModelFactory <ICategoryItemRelationViewModel>(ServManager.GetUri(ServiceNameEnum.Catalog), ServManager.GetUri(ServiceNameEnum.AppConfig));
            ICatalogEntityFactory  entityFactory = new CatalogEntityFactory();
            IAuthenticationContext authContext   = new TestAuthenticationContext();
            INavigationManager     navManager    = new TestNavigationManager();

            var itemViewModel = new ItemViewModel(null, null, repositoryFactory, pricelistRepositoryFactory, propertyValueVmFactory, priceVmFactory, assetVmFactory, associationGroupEditVmFactory, associationGroupVmFactory, itemRelationVmFactory, reviewVmFactory, categoryVmFactory, entityFactory, item, authContext, navManager);

            itemViewModel.InitializeForOpen();

            // property change should set IsModified to true
            itemViewModel.InnerItem.EndDate = DateTime.UtcNow;
            Assert.True(itemViewModel.IsModified);

            Assert.False(itemViewModel.PropertyValueEditCommand.CanExecute(null));
            Assert.True(itemViewModel.PropertyValueEditCommand.CanExecute(itemViewModel.PropertiesAndValues[0]));

            itemViewModel.CommonConfirmRequest.Raised += EditValueSetConfirmation;

            foreach (var propItem in itemViewModel.PropertiesAndValues)
            {
                itemViewModel.PropertyValueEditCommand.Execute(propItem);
            }

            itemViewModel.SaveChangesCommand.Execute(null);
            Thread.Sleep(1000);            // waiting for SaveChangesCommand to finish in background thread

            using (var repository = repositoryFactory.GetRepositoryInstance())
            {
                var itemFromDb = repository.Items.Expand(x => x.ItemPropertyValues).Single();

                Assert.True(itemFromDb.ItemPropertyValues.Count > 0);
                Assert.Equal(itemViewModel.PropertiesAndValues.Count, itemFromDb.ItemPropertyValues.Count);
            }

            // test if values are saved when updated in UI
            DecimalValue = 123123m;
            var valueToEdit =
                itemViewModel.PropertiesAndValues.First(x => x.Property.PropertyValueType == PropertyValueType.Decimal.GetHashCode());

            itemViewModel.PropertyValueEditCommand.Execute(valueToEdit);

            LongTextValue = "other long text";
            valueToEdit   = itemViewModel.PropertiesAndValues.First(x => x.Property.PropertyValueType == PropertyValueType.LongString.GetHashCode());
            itemViewModel.PropertyValueEditCommand.Execute(valueToEdit);

            itemViewModel.SaveChangesCommand.Execute(null);
            Thread.Sleep(1000);            // waiting for SaveChangesCommand to finish in background thread

            using (var repository = repositoryFactory.GetRepositoryInstance())
            {
                var itemFromDb = repository.Items.Expand(x => x.ItemPropertyValues).Single();

                Assert.Equal(DecimalValue, itemFromDb.ItemPropertyValues.First(x => x.ValueType == PropertyValueType.Decimal.GetHashCode()).DecimalValue);
                Assert.Equal(LongTextValue, itemFromDb.ItemPropertyValues.First(x => x.ValueType == PropertyValueType.LongString.GetHashCode()).LongTextValue);
            }

            // check if item can be saved without required property value
            var valueToDelete =
                itemViewModel.PropertiesAndValues.First(x => x.Property.PropertyValueType == PropertyValueType.Decimal.GetHashCode());

            itemViewModel.PropertyValueDeleteCommand.Execute(valueToDelete);

            itemViewModel.SaveChangesCommand.CanExecute(null);
            Thread.Sleep(1000);            // waiting for SaveChangesCommand to finish in background thread

            //Assert True as the last Save command execution failed as the validation failed
            Assert.True(itemViewModel.IsModified);
        }
        public void Can_delete_pricelist()
        {
            #region Init parameters for PriceListHomeViewModel

            var priceListRepositoryFactory =
                new DSRepositoryFactory <IPricelistRepository, DSCatalogClient, CatalogEntityFactory>(
                    ServManager.GetUri(ServiceNameEnum.Catalog));
            IAuthenticationContext authenticationContext = new TestAuthenticationContext();
            var navigationManager = new TestNavigationManager();

            // create ViewModelsFactory ( it should be resolve all view models for the test)
            var itemVmFactory = new TestCatalogViewModelFactory <IPriceListViewModel>(ServManager.GetUri(ServiceNameEnum.Catalog),
                                                                                      ServManager.GetUri(ServiceNameEnum.AppConfig));

            var wizardVmFactory = new TestCatalogViewModelFactory <ICreatePriceListViewModel>(ServManager.GetUri(ServiceNameEnum.Catalog),
                                                                                              ServManager.GetUri(ServiceNameEnum.AppConfig));

            // create Item using EntityFactory
            var entityFactory = new CatalogEntityFactory();

            #endregion

            #region Add price list to DB

            using (var repository = priceListRepositoryFactory.GetRepositoryInstance())
            {
                var pricelist = entityFactory.CreateEntity <Pricelist>();
                pricelist.Name     = "Test price (Can_delete_pricelist)";
                pricelist.Currency = "USD";

                repository.Add(pricelist);
                repository.UnitOfWork.Commit();
            }

            #endregion

            #region VM test

            var priceListHomeViewModel = new PriceListHomeViewModel(entityFactory, itemVmFactory, wizardVmFactory,
                                                                    priceListRepositoryFactory, authenticationContext,
                                                                    navigationManager, null);
            priceListHomeViewModel.InitializeForOpen();

            Thread.Sleep(3000);             // waiting for InitializeForOpen to finish in background thread

            priceListHomeViewModel.CommonConfirmRequest.Raised += DeletePriceListConfirmation;
            priceListHomeViewModel.ListItemsSource.MoveCurrentToFirst();
            var item          = priceListHomeViewModel.ListItemsSource.CurrentItem as VirtualListItem <IPriceListViewModel>;
            var itemsToDelete = new List <VirtualListItem <IPriceListViewModel> >()
            {
                item
            };
            priceListHomeViewModel.ItemDeleteCommand.Execute(itemsToDelete);

            Thread.Sleep(1000);            // waiting for ItemDeleteCommand to finish in background thread

            #endregion

            #region Check

            using (var repository = priceListRepositoryFactory.GetRepositoryInstance())
            {
                var checkItem = repository.Pricelists.Where(x => x.Name == "Test price (Can_delete_pricelist)").SingleOrDefault();
                Assert.Null(checkItem);
            }

            #endregion
        }