public void AddAdvertisement_WithValidAd_AddsCurrentNewspaperItemToNewspapersCollectionInTheAddedAd() { // Arrange var repository = Substitute.For<INewspaperAdRepository>(); var detailViewModel = new NewspaperDetailViewModel(repository); var collectionViewModel = new NewspaperCollectionViewModel(repository); var paperModel1 = new Newspaper() {Name = "New paper 1"}; var paperItemViewModel1 = new NewspaperItemViewModel(repository) {Model = paperModel1}; var adModel = new Advertisement() {Name = "Ad 1 Name", Text = "Ad 1 text."}; var adItemViewModel = new AdvertisementItemViewModel(repository) {Model = adModel}; collectionViewModel.Newspapers.Add(paperItemViewModel1); collectionViewModel.CurrentItem.Should().Be(paperItemViewModel1, "The current item is the item that was added."); detailViewModel.ItemViewModel.Should().Be(collectionViewModel.CurrentItem, "The detail view model references the collection's current item."); paperItemViewModel1.Advertisements.Count.Should().Be(0, "No newspapers are referenced in the advertisement."); adItemViewModel.Newspapers.Count.Should().Be(0, "There are no papers in this ad's collection."); // Act paperItemViewModel1.Advertisements.Add(adItemViewModel); // Assert paperItemViewModel1.Advertisements.Count.Should().Be(1, "One item was added"); adItemViewModel.Newspapers.Count.Should().Be(1, "One newspaper reference was added to this advertisement."); adItemViewModel.Newspapers.ToList().First().Should().Be(collectionViewModel.CurrentItem, "The paper added to the advertisment's newspaper collection was the Newspaper collection's CurrentItem"); }
private async Task <Models.User> RetrieveAuthor(Models.Advertisement Advertisement) { var userCollection = MongoWrapper.Database.GetCollection <Models.User>(nameof(User)); var userFilterBuilder = new FilterDefinitionBuilder <Models.User>(); var userFilter = userFilterBuilder.And ( userFilterBuilder.Eq(u => u._id, Advertisement.Poster._id), GeneralUtils.NotDeactivated(userFilterBuilder) ); var userProjectionBuilder = new ProjectionDefinitionBuilder <Models.User>(); var userProjection = userProjectionBuilder .Include(m => m._id) .Include(m => m.FullName) .Include(m => m.Avatar) .Include(m => m.Phone) .Include(m => m.StartDate) .Include(m => m.Email) .Include(m => m.Address) .Include("_t"); return((await userCollection.FindAsync(userFilter, new FindOptions <Models.User> { Limit = 1, AllowPartialResults = true, Projection = userProjection })).SingleOrDefault()); }
public AdvertisementViewModel(Advertisement model, IRepository<Advertisement, Guid> repository) : base(model) { _model = model; _repository = repository; SaveCommand = new RelayCommand(new Action<object>(SaveCommand_Handler)); DeleteCommand = new RelayCommand(new Action<object>(DeleteCommand_Handler)); }
private void EnrichAdvertisementWithAuthor(Models.Advertisement Advertisement, Models.User user) { if (user == null) { Logger.LogWarning("Advertisement Author was not found! Advertisement id: {}, Poster id: {}", Advertisement._id, Advertisement.Poster._id); } else { Advertisement.Poster = (Contractor)user; } }
public void DeleteAdvertisement(Advertisement entity) { if (_advertisementCache.ContainsKey(entity.UKey)) { _advertisementCache.Remove(entity.UKey); foreach (var paper in entity.Newspapers) _newspaperCache[paper.UKey].Advertisements.Remove(entity); } _serializer.SaveCache(_newspaperCache); }
public void AddNewspaper_WithNull_DoesNotChangeTheNewspapersCollection() { // Arrange var advertisement = new Advertisement {Name = "Test Ad 1", Text = "Test ad 1 text."}; // Act advertisement.AddNewspaper(null); // Assert advertisement.Newspapers.ShouldAllBeEquivalentTo(new List<Newspaper>()); }
public void AddNewspaper_MultipleTimesWithValidNewspaperObjects_CreatesAReferenceToEachPaper() { // Arrange var paper1 = new Newspaper() {Name = "Paper 1 name"}; var paper2 = new Newspaper() {Name = "Paper 2 name"}; var ad = new Advertisement {Name = "Test ad 1 name", Text = "Test ad 1 text."}; // Act ad.AddNewspaper(paper1); ad.AddNewspaper(paper2); // Assert ad.Newspapers.ShouldBeEquivalentTo(new List<Newspaper> {paper2, paper1}); }
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 AddNewspapers_WithListOfValidNewspaperstestAddsAllItemsToNewspapersCollection() { // Arrange var paper1 = new Newspaper() {Name = "Paper 1 name"}; var paper2 = new Newspaper() {Name = "Paper 2 name"}; var paper3 = new Newspaper() {Name = "Paper 3 name"}; var paperList = new List<Newspaper> {paper1, paper2, paper3}; var ad = new Advertisement {Name = "Test ad 1 name", Text = "Test ad 1 text."}; // Act ad.AddNewspapers(paperList); //Assert ad.Newspapers.ShouldAllBeEquivalentTo(paperList); }
public void AddNewspapers_WithNullNewspaperList_ReturnsTheOriginalNewspapersCollection() { // Arrange var paper1 = new Newspaper() {Name = "Paper 1 name"}; var paper2 = new Newspaper() {Name = "Paper 2 name"}; var paper3 = new Newspaper() {Name = "Paper 3 name"}; var ad = new Advertisement {Name = "Test ad 1 name", Text = "Test ad 1 text."}; var paperList = new List<Newspaper> {paper1, paper3, paper2}; ad.AddNewspaper(paper1); ad.AddNewspaper(paper2); ad.AddNewspaper(paper3); // Act ad.AddNewspapers(null); // Assert ad.Newspapers.ShouldAllBeEquivalentTo(paperList); }
private AdvertisementItemViewModel GetValidAdvertisementItemViewModel(Advertisement ad = null, INewspaperAdRepository adRepository = null) { var model = ad ?? new Advertisement {Name = "<New Advertisement>", Text = "<New Advertisemnet body text."}; var repo = adRepository ?? Substitute.For<INewspaperAdRepository>(); var vm = new AdvertisementItemViewModel(repo) {Model = model}; return vm; }
public void AddNewspaper_WithValidNewspaperObject_CreatesAReferenceToThatNewspaper() { // Arrange var paper = new Newspaper() {Name = "Test Paper 1"}; var advertisement = new Advertisement {Name = "Test Ad 1", Text = "Test ad 1 text."}; // Act advertisement.AddNewspaper(paper); //Assert advertisement.Newspapers.ShouldAllBeEquivalentTo(new List<Newspaper> {paper}, "A paper added to an advertisement adds a reference to that paper."); }
private void AddingItemMessageHandler(AddingAdvertisementItemMessage obj) { var model = new Advertisement(); var vm = new AdvertisementItemViewModel(_adRepository) {Model = model}; Advertisements.Add(vm); var sortedAds = Advertisements.OrderBy(a => a.Name).ToList(); Advertisements.Clear(); sortedAds.ForEach(Advertisements.Add); Messenger.Default.Send(new CurrentAdvertisementItemChangedMessage(vm)); }
public void DbStatus_OnNewObject_IsSetToAdded() { var testAd = new Advertisement {Name = "Test Ad 1 Name", Text = "Test Ad 1 Text"}; testAd.IsAdded.Should().Be(true, "A new object should be in the Added state"); }
public void Newspapers_SetToNull_SetsNewspapersToAnEmptyCollection() { // Arrange var testAd = new Advertisement {Name = "Test ad 1 name", Text = "Test ad 1 text."}; var testPaper1 = new Newspaper() {Name = "Test Paper 1 Name"}; var testPaper2 = new Newspaper() {Name = "Test Paper 2 Name"}; var testPaper3 = new Newspaper() {Name = "Test Paper 3 Name"}; testAd.Newspapers = new ObservableCollection<Newspaper>() {testPaper1, testPaper2, testPaper3}; testAd.Newspapers.Count.Should().Be(3, "All papers were added to the ad"); // Act testAd.Newspapers = null; // Assert testAd.Newspapers.ShouldBeEquivalentTo(new List<Newspaper>(), "Newspaper collection is set to empty list when null is assigned to it."); }
public void HasErrors_WhenTrueAndSetToANonNullValue_IsFalse() { // Arrange var testAd = new Advertisement {Name = null, Text = "test text"}; testAd.HasErrors.Should().Be(true, "Creating an object without a name sets name status to invalid"); // Act var testName = "New Test Name"; testAd.Name = testName; testAd.Name.Should().Be(testName, "The name change was successful"); // Assert testAd.HasErrors.Should().Be(false, "The status of Name is true when a non-null assignment is made."); }
public void HasErrors_WhenObjectCreatedWithNonNullTextSpecified_IsFalse() { // Arrange var testAd = new Advertisement {Name = "Test ad name", Text = "Test ad text."}; // Act // Assert testAd.HasErrors.Should().Be(false, "Advertisements must have text"); }
public void HasErrors_WhenNameIsSetToNull_RetunsTrue() { // Arrange var testAd = new Advertisement {Name = "Test ad name", Text = "Test ad text"}; testAd.HasErrors.Should().Be(false, "Verify that Name is valid when object is created."); // Act testAd.Name = null; // Assert testAd.HasErrors.Should().Be(true, "Setting the name of an Advertisement makes the Name invalid."); }
public void HasErrors_WhenFalseAndSetToANonNullValue_IsFalse() { // Arrange var testAd = new Advertisement {Name = "Test ad name", Text = "Test ad text."}; testAd.HasErrors.Should().Be(false, "Verify that the flag is already valid."); // Act var newName = "New Test Ad Name"; testAd.Name = newName; // Assert testAd.Name.Should().Be(newName, "Verify the name was changed."); testAd.HasErrors.Should().Be(false, "Any new text value assigned to Name is valid."); }
public void RemoveAdvertisement_WithAnAdvertisementInTheAdvertisementsCollection_RemovesThatAdvertisementFromTheCollection() { // Arrange var paper = new Newspaper(); var ad1 = new Advertisement {Name = "Test Ad 1 Name", Text = "Test Ad 1 Text"}; var ad2 = new Advertisement {Name = "Test Ad 2 Name", Text = "Test Ad 2 Text"}; paper.AddAdvertisement(ad1); paper.AddAdvertisement(ad2); // act paper.RemoveAdvertisement(ad2); // Assert paper.Advertisements.Should().BeEquivalentTo(new List<Advertisement> {ad1}, "Removing the second added Ad results in only the first being left."); }
public void AddAdvertisments_WithAListOfAdvertisements_PopulatesTheAdvertisementsCollectionWithoutDuplicates() { // Arrange var paper = GetNamedNewspaperWithValidAdvertisements(); var localAdList = new List<Advertisement>(paper.Advertisements); paper.Advertisements.ShouldAllBeEquivalentTo(localAdList, "All advertisements should be added"); var newAd = new Advertisement {Name = "New test ad", Text = "New test ad text"}; localAdList.Add(newAd); // Act paper.AddAdvertisements(localAdList); // Assert paper.Advertisements.ShouldAllBeEquivalentTo(localAdList, "All non-duplicate advertisements added from a list appear in the Newspaper Advertisements collection"); }
public void HasErrors_WhenObjectCreatedWithoutNameSpecified_IsTrue() { // Arrange var testAd = new Advertisement {Name = null, Text = "Test ad text"}; // Act // Assert testAd.HasErrors.Should().Be(true, "Advertisments must have a name."); }
public void AddAdvertisements_WithANullList_DoesNotChangeTheAdvertisementsCollection() { // Arrange var paper = GetNamedNewspaper(); var ad1 = new Advertisement {Name = "Test ad 1 name", Text = "Test ad 1 text"}; var ad2 = new Advertisement {Name = "Test ad 2 name", Text = "Test ad 2 text"}; var ad3 = new Advertisement {Name = "Test ad 2 name", Text = "Test ad 3 text"}; var localAdList = new List<Advertisement> {ad1, ad2, ad3}; paper.AddAdvertisements(localAdList); paper.Advertisements.ShouldAllBeEquivalentTo(localAdList, "All original advertisements were added to the Newspaper Advertisements collection"); // Act paper.AddAdvertisements(null); // Assert paper.Advertisements.ShouldAllBeEquivalentTo(localAdList, "Adding a null list does not impact the Newspaper Advertisements collection"); }
public void Name_WhenModified_PerformsPropertyChangedCallback() { // Arrange const string AD_NAME = "Test ad 1 name"; const string NEW_AD_NAME = "New ad name"; var testAd = new Advertisement {Name = AD_NAME}; var eventAssert = new PropertyChangedEventAssert(testAd); testAd.Name.Should().Be(AD_NAME, "Ad name set properly"); eventAssert.ExpectNothing(); testAd.Name = NEW_AD_NAME; eventAssert.Expect("Name"); }
public void AddAdvertisement_WithAValidAdvertisement_AddsTheAdvertisementToTheAdvertisementsCollection() { // Arrange var paper = GetNamedNewspaperWithValidAdvertisements(); var localAdList = new List<Advertisement>(paper.Advertisements); var localCount = localAdList.Count; paper.Advertisements.ShouldAllBeEquivalentTo(localAdList, "All advertisements should be added"); var newAd = new Advertisement {Name = "New test ad", Text = "New test ad text"}; localAdList.Add(newAd); localAdList.Count.Should().Be(localCount + 1, "The new ad should be added to the local list."); // Act paper.AddAdvertisement(newAd); // Assert paper.Advertisements.ShouldAllBeEquivalentTo(localAdList, "The local and object Advertisement lists should have the same contents."); }
public void HasErrors_WhenObjectCreatedWithNonEmptyNameSpecified_IsFalse() { // Arrange var testAd = new Advertisement {Name = "Test Ad", Text = "Test ad text"}; // Act // Assert testAd.HasErrors.Should().Be(false, "Any name for an ad is valid"); }
public void RemoveAdvertisement_OnEmptyCollection_ReturnsEmptyCollection() { // Arrange var paper = GetNamedNewspaper(); var ad = new Advertisement {Name = "Name", Text = "Text"}; paper.Advertisements.Count.Should().Be(0, "No items are in the list."); // Act paper.RemoveAdvertisement(ad); // Assert paper.Advertisements.Count.Should().Be(0, "Still no items in the list, no errors occurred during the remove"); }
public void HasErrors_WhenObjectCreatedWithTextSetToNull_IsTrue() { // Arrange var testAd = new Advertisement {Name = "Test ad name", Text = null}; // Act // Assert testAd.HasErrors.Should().Be(true, "Advertisements must have text"); }
public void RemoveAdvertisement_WithANullAdvertisement_DoesNotChangeTheAdvertisementsConnection() { // Arrange var paper = new Newspaper(); var ad1 = new Advertisement {Name = "Test Ad 1 Name", Text = "Test Ad 1 Text"}; var ad2 = new Advertisement {Name = "Test Ad 2 Name", Text = "Test Ad 2 Text"}; paper.AddAdvertisement(ad1); paper.AddAdvertisement(ad2); // act paper.RemoveAdvertisement(null); // Assert paper.Advertisements.Should().BeEquivalentTo(new List<Advertisement> {ad1, ad2}, "Removing a null item results in nothing being removed."); }
public void HasErrors_WhenTextIsSetToNull_ReturnsTrue() { // Arrange var testAd = new Advertisement {Name = "Test Ad", Text = "Test ad text"}; testAd.HasErrors.Should().Be(false, "Confirm status is valid for text after creation."); // Act testAd.Text = null; // Assert testAd.HasErrors.Should().Be(true, "Null text is not valid in an ad."); }
public async Task <dynamic> Post([FromBody] CreateAdvertisementRequest requestBody) { var userId = new ObjectId(this.GetCurrentUserId()); var userCollection = MongoWrapper.Database.GetCollection <Models.Contractor>(nameof(Models.User)); var userFilterBuilder = new FilterDefinitionBuilder <Models.Contractor>(); var userFilter = userFilterBuilder.And ( GeneralUtils.NotDeactivated(userFilterBuilder), userFilterBuilder.Eq(u => u._id, userId) ); var userProjectionBuilder = new ProjectionDefinitionBuilder <Models.Contractor>(); var userProjection = userProjectionBuilder .Include(m => m._id) .Include(m => m.FullName) .Include(m => m.Avatar) .Include(m => m.FileBytesLimit) .Include(m => m.FileBytesOccupied) .Include("_t"); var userTask = userCollection.FindAsync(userFilter, new FindOptions <Models.Contractor> { Limit = 1, AllowPartialResults = false, Projection = userProjection }); Models.Contractor user = null; List <(FileReference, Func <Task>)> files = new List <(FileReference, Func <Task>)>(); Task <(FileReference, Func <Task>)> fileReferenceTask = Task.FromResult <(FileReference, Func <Task>)>((null, () => Task.CompletedTask)); if (requestBody.Midias != null) { long totalSize = 0; foreach (MidiaRequest midiaRequest in requestBody.Midias) { if (midiaRequest.Id != null) { fileReferenceTask = GeneralUtils.GetFileForReferenceToken ( MongoWrapper, midiaRequest.Id, userId ); var(fileReference, expirer) = await fileReferenceTask; totalSize += fileReference.FileInfo.Size; files.Add((fileReference, expirer)); } } user = (await userTask).Single(); GeneralUtils.CheckSizeForUser(totalSize, user.FileBytesOccupied, user.FileBytesLimit); } var postCollection = MongoWrapper.Database.GetCollection <Models.Advertisement>(nameof(Models.Advertisement)); var creationDate = DateTime.UtcNow; var ad = new Models.Advertisement { _id = ObjectId.GenerateNewId(creationDate), Title = requestBody.Titulo, Text = requestBody.Descricao, FileReferences = files.Select(f => f.Item1).ToList(), Position = requestBody.Coordenada == null ? null : new GeoJsonPoint <GeoJson3DGeographicCoordinates>(requestBody.Coordenada.ToGeoJsonCoordinate()), Poster = user ?? (await userTask).Single(), }; await postCollection.InsertOneAsync(ad); files.AsParallel().ForAll(async f => await f.Item2()); return(new ResponseBody { Code = ResponseCode.GenericSuccess, Data = ad._id, Message = "Postagem criada com sucesso!", Success = true }); }
public void HasErrors_WhenTextSetToAnyNonEmptyString_IsFalse() { // Arrange var testAd = new Advertisement {Name = "Test Ad", Text = null}; testAd.HasErrors.Should().Be(true, "Verify HasErrors is false with null value."); // Act // Assert testAd.Text = "Ad text body."; testAd.HasErrors.Should().Be(false, "Any text for an ad is valid."); }