Exemple #1
0
        public void EventCanNotBeUpdatedWhileItEdit()
        {
            firstDescription = "Ivanovo station. 5 min.";

            dataModel = new EventModel(23523, "Ivanovo", DateTime.Now, firstDescription);

            model = new ItemModelAdapterForPassive <IEventModel>(dataModel);

            var viewModelCreator = new EventDataDetailViewModelCreator();
            var itemModelCreator = new EventModelAdapterCreator();

            IDetailItemViewModel <IEventModel, IDetailEventViewModel> viewModelFirst
                = new DetailItemViewModel <IEventModel, IDetailEventViewModel>(model, viewModelCreator, itemModelCreator);

            IDetailItemViewModel <IEventModel, IDetailEventViewModel> viewModelSecond
                = new DetailItemViewModel <IEventModel, IDetailEventViewModel>(model, viewModelCreator, itemModelCreator);


            viewModelFirst.EditCommand.Execute(null);


            viewModelSecond.EditCommand.Execute(null);

            var changedDescription = "Ivanovo station. Temporarily closed.";

            viewModelSecond.DataViewModel.Description = changedDescription;

            viewModelSecond.SaveCommand.Execute(null);

            Assert.IsTrue(viewModelFirst.DataViewModel.Description == firstDescription);
        }
        public void UpdateWhenElementSelectedAndEditing()
        {
            Init();

            //выбираем текущий элемент
            viewModel.SelectedItem = airportVM;

            //вызваем редактирование этого элемента
            viewModel.CurrentVM.Edit();

            //делаем изменения
            model.DeleteItems(new List <IItemModelAdapter <IEventModel> >()
            {
                airportVM.GetItemModel()
            });
            var newAirport = new ItemModelAdapterForPassive <IEventModel>(new EventModel(945853, "Airport", DateTime.Now, "Airport station. 18 min."));

            model.AddItems(new List <IItemModelAdapter <IEventModel> >()
            {
                newAirport
            });

            //вызываем update
            viewModel.UpdateList();

            //изменения не отображаются во VM
            Assert.IsTrue(viewModel.CurrentVM.DataViewModel.Name == airportVM.DataViewModel.Name &&
                          viewModel.CurrentVM.DataViewModel.Description == "Airport station. 15 min.");
        }
Exemple #3
0
        public void CanGetUpdateAfterEditOnce()
        {
            firstDescription = "Ivanovo station. 5 min.";

            dataModel = new EventModel(23523, "Ivanovo", DateTime.Now, firstDescription);

            model = new ItemModelAdapterForPassive <IEventModel>(dataModel);

            var viewModelCreator = new EventDataDetailViewModelCreator();
            var itemModelCreator = new EventModelAdapterCreator();

            dataViewModel = new DetailEventViewModel(dataModel);

            IDetailItemViewModel <IEventModel, IDetailEventViewModel> viewModelLeft
                = new DetailItemViewModel <IEventModel, IDetailEventViewModel>(model, viewModelCreator, itemModelCreator);

            IDetailItemViewModel <IEventModel, IDetailEventViewModel> viewModelRight
                = new DetailItemViewModel <IEventModel, IDetailEventViewModel>(model, viewModelCreator, itemModelCreator);


            viewModelRight.Edit();
            viewModelRight.Save();

            string secondDescription = "Ivanovo station. 10 min.";

            viewModelLeft.Edit();
            viewModelLeft.DataViewModel.Description = secondDescription;
            viewModelLeft.Save();

            Assert.IsTrue(viewModelRight.DataViewModel.Description == secondDescription);
        }
Exemple #4
0
        public void DeleteItemsTest()
        {
            IListModel <IEventModel> model = new ListModel <IEventModel>();

            List <IItemModelAdapter <IEventModel> > items = new List <IItemModelAdapter <IEventModel> >();

            ItemModelAdapterForPassive <IEventModel> ivanovo = new ItemModelAdapterForPassive <IEventModel>(new EventModel(235235, "Ivanovo", DateTime.Now, "Ivanovo station. 5 min."));

            items.Add(ivanovo);

            items.Add(new ItemModelAdapterForPassive <IEventModel>(new EventModel(945853, "Airport", DateTime.Now, "Airport station. 15 min.")));

            ItemModelAdapterForPassive <IEventModel> lake = new ItemModelAdapterForPassive <IEventModel>(new EventModel(124590, "Lake", DateTime.Now, "Lake station. 5 min. Temporarily closed."));

            items.Add(lake);

            items.Add(new ItemModelAdapterForPassive <IEventModel>(new EventModel(744935, "Central station.", DateTime.Now, "Central station. 7 min.")));

            model.AddItems(items);

            List <IItemModelAdapter <IEventModel> > eventsForDelete = new List <IItemModelAdapter <IEventModel> >();

            eventsForDelete.Add(ivanovo);
            eventsForDelete.Add(lake);

            model.DeleteItems(eventsForDelete);

            var restOfEvents = model.GetItems();

            Assert.IsTrue(!restOfEvents.Contains(ivanovo) && !restOfEvents.Contains(lake));
        }
Exemple #5
0
        public override IItemModelAdapter <IEventModel> CreateDeepCopyOfItemModel(IItemModelAdapter <IEventModel> model)
        {
            StationEvent stationEvent = (StationEvent)model.DataModel;
            var          deepCopy     = stationEvent.Copy();
            var          newModel     = new ItemModelAdapterForPassive <IEventModel>(deepCopy);

            return(newModel);
        }
        public IItemModelAdapter <ProductModel> CreateDeepCopyOfItemModel(IItemModelAdapter <ProductModel> model)
        {
            var oldDataModel = model.DataModel;
            var newDataModel
                = new ProductModel(oldDataModel.Name, oldDataModel.Count, oldDataModel.Price);
            var newModel = new ItemModelAdapterForPassive <ProductModel>(newDataModel);

            return(newModel);
        }
Exemple #7
0
        public IItemModelAdapter <ShopModel> CreateDeepCopyOfItemModel(IItemModelAdapter <ShopModel> model)
        {
            var oldDataModel = model.DataModel;
            var newDataModel
                = new ShopModel(oldDataModel.Name, oldDataModel.Address, oldDataModel.Description);
            var newModel = new ItemModelAdapterForPassive <ShopModel>(newDataModel);

            return(newModel);
        }
        public void Init()
        {
            firstDescription = "Ivanovo station. 5 min.";

            dataModel = new EventModel(23523, "Ivanovo", DateTime.Now, firstDescription);

            model = new ItemModelAdapterForPassive <IEventModel>(dataModel);

            var viewModelCreator = new EventDataDetailViewModelCreator();
            var itemModelCreator = new EventModelAdapterCreator();

            viewModel = new DetailItemViewModel <IEventModel, IDetailEventViewModel>(model, viewModelCreator, itemModelCreator);
        }
        public void UpdateWhenElementSelected()
        {
            Init();

            //выбираем этот элемент
            //viewModel.SelectItem(airportVM);
            viewModel.SelectedItem = airportVM;

            //делаем обновление и при этом приходят элементы, в которых есть текущий
            viewModel.UpdateList();

            //элемент находится выбранным как в подробном обзоре так и в списке
            Assert.IsTrue(viewModel.CurrentVM.DataViewModel.Name == airportVM.DataViewModel.Name);
            Assert.IsTrue(viewModel.SelectedItem.DataViewModel.Name == airportVM.DataViewModel.Name);


            //изменяем некоторое поле модели текущего элеменета.
            //Эти изменения должны отобразиться
            //в текущем представлении при обновлении
            //и при этом создадим новый элемент
            model.DeleteItems(new List <IItemModelAdapter <IEventModel> >()
            {
                airportVM.GetItemModel()
            });
            var newAirport = new ItemModelAdapterForPassive <IEventModel>(new EventModel(945853, "Airport", DateTime.Now, "Airport station. 18 min."));

            model.AddItems(new List <IItemModelAdapter <IEventModel> >()
            {
                newAirport
            });
            viewModel.UpdateList();
            Assert.IsTrue(viewModel.CurrentVM.DataViewModel.Name == airportVM.DataViewModel.Name &&
                          viewModel.CurrentVM.DataViewModel.Description == "Airport station. 15 min.");
            Assert.IsTrue(viewModel.SelectedItem.DataViewModel.Name == airportVM.DataViewModel.Name &&
                          viewModel.SelectedItem.DataViewModel.Description == "Airport station. 18 min.");


            //делаем обновление и при этом приходят элементы, в которых нет текущего
            //конкретно удаляем этот элемент
            model.DeleteItems(new List <IItemModelAdapter <IEventModel> >()
            {
                newAirport
            });
            viewModel.UpdateList();

            //теперь нет выбранного, элемента
            //в идеале еще надо как-то проверить что вывелось сообщение, что элемент был удален
            Assert.IsTrue(viewModel.CurrentVM == null);
            Assert.IsTrue(viewModel.SelectedItem == null);
        }
Exemple #10
0
        public void GetItemModelTest()
        {
            IEventModel dataModel = new EventModel(23523, "Ivanovo", DateTime.Now, "Ivanovo station. 5 min.");

            IItemModelAdapter <IEventModel> model = new ItemModelAdapterForPassive <IEventModel>(dataModel);

            IEventViewModel eventViewModel = new EventViewModel(dataModel);

            IItemViewModel <IEventModel, IEventViewModel> viewModel
                = new ItemViewModel <IEventModel, IEventViewModel>(model, creator);

            var modelFromViewModel = viewModel.GetItemModel();

            Assert.AreEqual(model, modelFromViewModel);
        }
Exemple #11
0
        public void OnUpdateTest()
        {
            string firstDescription = "Ivanovo station. 5 min.";

            IEventModel dataModel = new EventModel(23523, "Ivanovo", DateTime.Now, firstDescription);

            IItemModelAdapter <IEventModel> model = new ItemModelAdapterForPassive <IEventModel>(dataModel);

            IEventViewModel eventViewModel = new EventViewModel(dataModel);

            EventDataViewModelCreator eventVMCreator = new EventDataViewModelCreator();

            IItemViewModel <IEventModel, IEventViewModel> viewModel
                = new ItemViewModel <IEventModel, IEventViewModel>(model, creator);

            string changedDescription = "Ivanovo station. 10 min.";

            model.DataModel.Description = changedDescription;

            model.Update();

            Assert.IsTrue(changedDescription == viewModel.DataViewModel.Description);
        }
        public void UpdateEditedList()
        {
            //создаем список с включенным атообновлением
            Init();

            //viewModel.
            //включаем редактирование списка
            viewModel.EditList();

            //добавляем пару элементов в список, через VM
            //(элементы могут и не иметь еще уникальных id'шников)
            viewModel.AddItem();
            viewModel.CurrentVM.DataViewModel.Name = "New Station From VM 1";
            viewModel.CurrentVM.Save();
            viewModel.AddItem();
            viewModel.CurrentVM.DataViewModel.Name = "New Station From VM 2";
            viewModel.CurrentVM.Save();

            //удаляем один из элементов через VM
            var ivanovoVM = viewModel.ItemsVM.First(itm => itm.DataViewModel.Name == "Ivanovo");

            viewModel.DeleteItem(ivanovoVM);

            //добавлем в список-модель новый элемент
            var newItem = new ItemModelAdapterForPassive <IEventModel>(new EventModel(999853, "New Station From Model", DateTime.Now, ""));

            model.AddItems(new List <IItemModelAdapter <IEventModel> >()
            {
                newItem
            });

            //удаляем из списка-модели какой-нибудь старый элемент
            model.DeleteItems(new List <IItemModelAdapter <IEventModel> >()
            {
                airportVM.GetItemModel()
            });

            //вызываем обновление
            viewModel.UpdateList();

            //элементы, добавленные через VM-список остаются на месте
            Assert.IsTrue(viewModel.ItemsVM.Any(itm => itm.DataViewModel.Name == "New Station From VM 1"));
            Assert.IsTrue(viewModel.ItemsVM.Any(itm => itm.DataViewModel.Name == "New Station From VM 2"));
            //удаленные, остаются удаленными
            Assert.IsFalse(viewModel.ItemsVM.Any(itm => itm.DataViewModel.Name == "Ivanovo"));

            //и + мы видим все обновления, добавленные через список-модель
            Assert.IsTrue(viewModel.ItemsVM.Any(itm => itm.DataViewModel.Name == "New Station From Model"));
            Assert.IsFalse(viewModel.ItemsVM.Any(itm => itm.DataViewModel.Name == "Airport"));



            //создаем новый список с отключенным автообновлением
            Init(false);

            //включаем редактирование списка
            viewModel.EditList();

            //добавляем пару элементов в список, через VM-списка
            //(элементы могут и не иметь еще уникальных id'шников)
            viewModel.AddItem();
            viewModel.CurrentVM.DataViewModel.Name = "New Station From VM 1";
            viewModel.CurrentVM.Save();
            viewModel.AddItem();
            viewModel.CurrentVM.DataViewModel.Name = "New Station From VM 2";
            viewModel.CurrentVM.Save();

            //удаляем один из элементов через VM
            ivanovoVM = viewModel.ItemsVM.First(itm => itm.DataViewModel.Name == "Ivanovo");
            viewModel.DeleteItem(ivanovoVM);

            //добавлем в список-модель новый элемент
            newItem = new ItemModelAdapterForPassive <IEventModel>(new EventModel(999853, "New Station From Model", DateTime.Now, ""));
            model.AddItems(new List <IItemModelAdapter <IEventModel> >()
            {
                newItem
            });

            //удаляем из списка-модели какой-нибудь старый элемент
            model.DeleteItems(new List <IItemModelAdapter <IEventModel> >()
            {
                airportVM.GetItemModel()
            });

            //вызываем обновление
            viewModel.UpdateList();

            //элементы, добавленные через VM-список остаются на месте
            Assert.IsTrue(viewModel.ItemsVM.Any(itm => itm.DataViewModel.Name == "New Station From VM 1"));
            Assert.IsTrue(viewModel.ItemsVM.Any(itm => itm.DataViewModel.Name == "New Station From VM 2"));
            //удаленные, остаются удаленными
            Assert.IsFalse(viewModel.ItemsVM.Any(itm => itm.DataViewModel.Name == "Ivanovo"));

            //изменения из модель-списка не доходят
            Assert.IsFalse(viewModel.ItemsVM.Any(itm => itm.DataViewModel.Name == "New Station From Model"));
            Assert.IsTrue(viewModel.ItemsVM.Any(itm => itm.DataViewModel.Name == "Airport"));
        }