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."); }
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); }
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)); }
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); }
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); }
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); }
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")); }