public async Task <IActionResult> AdvertisementDetail(int?id) { var model = new AdvertisementDetailViewModel() { Advertisement_items = await db.VIlanDetays.Where(w => w.Id == id).FirstOrDefaultAsync(), Photos = await db.Photos.Where(w => w.AdvertisementId == id).ToListAsync() }; return(View(model)); }
public void AddItemCommand_WhenInvoked_SendsMessageOfTypeAddingItemMessage() { var msgSent = false; var repository = Substitute.For<INewspaperAdRepository>(); Messenger.Default.Register<AddingAdvertisementItemMessage>(this, (message) => { msgSent = true; }); // Act var viewModel = new AdvertisementDetailViewModel(repository); viewModel.AddItemCommand.Execute(null); // Assert msgSent.Should().Be(true, "The message was sent."); }
public void AdvertisementDetailViewModel_WhenCreated_SendsDetailViewModelReadyMessage() { // Arrange var msgSent = false; // AdvertisementDetailViewModelReady msg = null; var repository = Substitute.For<INewspaperAdRepository>(); Messenger.Default.Register<AdvertisementDetailViewModelReady>(this, (message) => { msgSent = true; }); // Act var viewModel = new AdvertisementDetailViewModel(repository); // Assert msgSent.Should().Be(true, "The message was sent."); }
public void AddAdvertisement_WithValidAdvertisement_AddsNewspaperToAdvertisementNewspaperssCollection() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var paperModel = new Newspaper(); var adModel = new Advertisement(); var adItemViewModel = new AdvertisementItemViewModel(repository) {Model = adModel}; var adDetailViewModel = new AdvertisementDetailViewModel(repository) {ItemViewModel = adItemViewModel}; var detailViewModel = new NewspaperDetailViewModel(repository) {ItemViewModel = new NewspaperItemViewModel(repository) {Model = paperModel}}; // Act detailViewModel.Advertisements.Add(adItemViewModel); // Assert detailViewModel.Advertisements.ToList().First().Newspapers.Contains(detailViewModel.ItemViewModel); }
public void AddAdvertisement_WithValidAdvertisement_AddsAdvertisementToAdvertisementsCollection() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var paperModel = new Newspaper(); var adModel = new Advertisement(); var adItemViewModel = new AdvertisementItemViewModel(repository) {Model = adModel}; var adDetailViewModel = new AdvertisementDetailViewModel(repository) {ItemViewModel = adItemViewModel}; var detailViewModel = new NewspaperDetailViewModel(repository) {ItemViewModel = new NewspaperItemViewModel(repository) {Model = paperModel}}; // Act detailViewModel.Advertisements.Add(adItemViewModel); // Assert detailViewModel.Advertisements.Count.Should().Be(1, "There should be one item in the collection"); }
public void RemoveAdvertisement_WithExistingAdvertisementInAdvertisementsCollection_RemovesNewspaperFromAdvertisementRemoved() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var paperModel = new Newspaper(); var adModel1 = new Advertisement(); var adItemViewModel1 = new AdvertisementItemViewModel(repository) {Model = adModel1}; var adModel2 = new Advertisement(); var adItemViewModel2 = new AdvertisementItemViewModel(repository) {Model = adModel2}; var adDetailViewModel = new AdvertisementDetailViewModel(repository) {ItemViewModel = adItemViewModel1}; var detailViewModel = new NewspaperDetailViewModel(repository) {ItemViewModel = new NewspaperItemViewModel(repository) {Model = paperModel}}; detailViewModel.Advertisements.Add(adItemViewModel1); detailViewModel.Advertisements.Add(adItemViewModel2); detailViewModel.Advertisements.Should().BeEquivalentTo(new List<AdvertisementItemViewModel> {adItemViewModel1, adItemViewModel2}); detailViewModel.Advertisements.ToList().All(a => a.Newspapers.Contains(detailViewModel.ItemViewModel)); // Act detailViewModel.Advertisements.Remove(adItemViewModel1); // Assert detailViewModel.Advertisements.Should().BeEquivalentTo(new List<AdvertisementItemViewModel> {adItemViewModel2}); }
public void CancelCommand_WhenInvoked_ResetsNameToCollectionCurrentValue() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); repository.GetAllAdvertisements().Returns(new List<Advertisement>()); var detailViewModel = new AdvertisementDetailViewModel(repository); var collectionViewModel = new AdvertisementCollectionViewModel(repository); detailViewModel.AddItemCommand.Execute(null); collectionViewModel.CurrentItem.Should().Be(detailViewModel.ItemViewModel, "The detail model points to the Collection CurrentItem"); var oldName = collectionViewModel.CurrentItem.Name; var newName = "Changed Advertisement Name"; detailViewModel.Name = newName; collectionViewModel.CurrentItem.Name.Should().Be(oldName, "Name in the collection should not change"); detailViewModel.Name.Should().Be(newName, "Alteration is reflected in the detail view model"); // Act detailViewModel.CancelItemCommand.Execute(null); // Assert detailViewModel.Name.Should().Be(oldName, "The Advertisement name should revert back"); collectionViewModel.CurrentItem.Should().Be(detailViewModel.ItemViewModel, "The entire instance should have reverted back to the original value"); }
public void SaveCommand_WhenInvoked_UpdatesCollectionCurrentItemWithNewValue() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); repository.GetAllAdvertisements().Returns(new List<Advertisement>()); var detailViewModel = new AdvertisementDetailViewModel(repository); var collectionViewModel = new AdvertisementCollectionViewModel(repository); detailViewModel.AddItemCommand.Execute(null); collectionViewModel.CurrentItem.Should().Be(detailViewModel.ItemViewModel, "The detail model points to the Collection CurrentItem"); var oldName = collectionViewModel.CurrentItem.Name; var newName = "Changed Advertisement Name"; detailViewModel.Name = newName; var paperCount = detailViewModel.Newspapers.Count; // Act detailViewModel.SaveItemCommand.Execute(null); // Assert collectionViewModel.CurrentItem.Should().Be(detailViewModel.ItemViewModel, "The current item in the collection matches the one in the detail view model."); detailViewModel.Newspapers.ToList().ForEach(n => repository.Received().Save(n.Model)); }
public void RemoveNewspaper_WithExistingNewspaperInNewspapersCollection_RemovesNewspaperFromNewspapersCollection() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var advertisementModel = new Advertisement(); var paperModel1 = new Newspaper(); var newspaperItemViewModel1 = new NewspaperItemViewModel(repository) {Model = paperModel1}; var paperModel2 = new Newspaper(); var newspaperItemViewModel2 = new NewspaperItemViewModel(repository) {Model = paperModel2}; var adDetailViewModel = new NewspaperDetailViewModel(repository) {ItemViewModel = newspaperItemViewModel1}; var detailViewModel = new AdvertisementDetailViewModel(repository) {ItemViewModel = new AdvertisementItemViewModel(repository) {Model = advertisementModel}}; detailViewModel.Newspapers.Add(newspaperItemViewModel1); detailViewModel.Newspapers.Add(newspaperItemViewModel2); detailViewModel.Newspapers.Should().BeEquivalentTo(new List<NewspaperItemViewModel> {newspaperItemViewModel1, newspaperItemViewModel2}); // Act detailViewModel.Newspapers.Remove(newspaperItemViewModel1); // Assert detailViewModel.Newspapers.Should().BeEquivalentTo(new List<NewspaperItemViewModel> {newspaperItemViewModel2}); }
public void Name_WhenNullOrEmpty_SetsAllowSaveToFalse() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var model = new Advertisement(); var itemViewModel = new AdvertisementItemViewModel(repository) {Model = model}; var viewModel = new AdvertisementDetailViewModel(repository) {ItemViewModel = itemViewModel}; viewModel.AllowSave.Should().Be(true, "We have a valid name to reference."); // Act viewModel.Name = ""; // Assert viewModel.AllowSave.Should().Be(false, "Cannot save an Advertisement without a name."); }
public void Name_WhenNotNullOrEmpty_SetsAllowAddToTrue() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var model = new Advertisement(); var itemViewModel = new AdvertisementItemViewModel(repository) {Model = model}; // Act var viewModel = new AdvertisementDetailViewModel(repository) {ItemViewModel = itemViewModel}; // Assert viewModel.AllowSave.Should().Be(true, "We have a valid name to reference."); }