public IEpisodeModel Update(IEpisodeModel model) { // Validate model BusinessWorkflowBase.ValidateRequiredNullableID(model.Id); //BusinessWorkflowBase.ValidateRequiredString(model.Name, nameof(model.Name)); // Find existing entity // ReSharper disable once PossibleInvalidOperationException var existingEntity = EpisodesRepository.Get(model.Id.Value); // Check if we would be applying identical information, if we are, just return the original // ReSharper disable once SuspiciousTypeConversion.Global if (EpisodeMapper.AreEqual(model, existingEntity)) { return(EpisodeMapper.MapToModel(existingEntity)); } // Map model to an existing entity EpisodeMapper.MapToEntity(model, ref existingEntity); existingEntity.UpdatedDate = BusinessWorkflowBase.GenDateTime; // Update it EpisodesRepository.Update(EpisodeMapper.MapToEntity(model)); // Try to Save Changes EpisodesRepository.SaveChanges(); // Return the new value return(Get(existingEntity.Id)); }
public IEpisodeModel Create(IEpisodeModel model) { // Validate model BusinessWorkflowBase.ValidateIDIsNull(model.Id); //BusinessWorkflowBase.ValidateRequiredString(model.Name, nameof(model.Name)); // Search for an Existing Record (Don't allow Duplicates var results = Search(EpisodeMapper.MapToSearchModel(model)); if (results.Any()) { return(results.First()); } // Return the first that matches // Map model to a new entity var newEntity = EpisodeMapper.MapToEntity(model); newEntity.CreatedDate = BusinessWorkflowBase.GenDateTime; newEntity.UpdatedDate = null; newEntity.Active = true; // Add it EpisodesRepository.Add(newEntity); // Try to Save Changes EpisodesRepository.SaveChanges(); // Return the new value return(Get(newEntity.Id)); }
public void Verify_MapToEntity_WithExistingEntity_AssignsEpisodeProperties() { // Arrange var mapper = new EpisodeMapper(); var model = EpisodesMockingSetup.DoMockingSetupForEpisodeModel(); // Act IEpisode existingEntity = new Episode { Id = 1 }; mapper.MapToEntity(model.Object, ref existingEntity); // Assert Assert.Equal(model.Object.HasStaffReview, existingEntity.HasStaffReview); Assert.Equal(model.Object.AirDate, existingEntity.AirDate); Assert.Equal(model.Object.EpisodeCode, existingEntity.EpisodeCode); Assert.Equal(model.Object.SeasonNumber, existingEntity.SeasonNumber); Assert.Equal(model.Object.EpisodeNumber, existingEntity.EpisodeNumber); // Related Objects Assert.Equal(model.Object.PrimaryImageFileId, existingEntity.PrimaryImageFileId); Assert.Equal(model.Object.SeriesId, existingEntity.SeriesId); // Associated Objects model.VerifyGet(x => x.EpisodeAliases, Times.Once); //Assert.Equal(model.Object.EpisodeAliases?.Count, existingEntity.EpisodeAliases?.Count); model.VerifyGet(x => x.EpisodeCharacters, Times.Once); //Assert.Equal(model.Object.EpisodeCharacters?.Count, existingEntity.EpisodeCharacters?.Count); model.VerifyGet(x => x.EpisodeCharactersDied, Times.Once); //Assert.Equal(model.Object.EpisodeCharactersDied?.Count, existingEntity.EpisodeCharactersDied?.Count); model.VerifyGet(x => x.EpisodeCharacterFirstAppearances, Times.Once); //Assert.Equal(model.Object.EpisodeCharacterFirstAppearances?.Count, existingEntity.EpisodeCharacterFirstAppearances?.Count); model.VerifyGet(x => x.EpisodeConcepts, Times.Once); //Assert.Equal(model.Object.EpisodeConcepts?.Count, existingEntity.EpisodeConcepts?.Count); model.VerifyGet(x => x.EpisodeConceptFirstAppearances, Times.Once); //Assert.Equal(model.Object.EpisodeConceptFirstAppearances?.Count, existingEntity.EpisodeConceptFirstAppearances?.Count); model.VerifyGet(x => x.EpisodeLocations, Times.Once); //Assert.Equal(model.Object.EpisodeLocations?.Count, existingEntity.EpisodeLocations?.Count); model.VerifyGet(x => x.EpisodeLocationFirstAppearances, Times.Once); //Assert.Equal(model.Object.EpisodeLocationFirstAppearances?.Count, existingEntity.EpisodeLocationFirstAppearances?.Count); model.VerifyGet(x => x.EpisodeObjects, Times.Once); //Assert.Equal(model.Object.EpisodeObjects?.Count, existingEntity.EpisodeObjects?.Count); model.VerifyGet(x => x.EpisodeObjectFirstAppearances, Times.Once); //Assert.Equal(model.Object.EpisodeObjectFirstAppearances?.Count, existingEntity.EpisodeObjectFirstAppearances?.Count); model.VerifyGet(x => x.EpisodePeople, Times.Once); //Assert.Equal(model.Object.EpisodePeople?.Count, existingEntity.EpisodePeople?.Count); model.VerifyGet(x => x.EpisodeStoryArcs, Times.Once); //Assert.Equal(model.Object.EpisodeStoryArcs?.Count, existingEntity.EpisodeStoryArcs?.Count); model.VerifyGet(x => x.EpisodeStoryArcFirstAppearances, Times.Once); //Assert.Equal(model.Object.EpisodeStoryArcFirstAppearances?.Count, existingEntity.EpisodeStoryArcFirstAppearances?.Count); model.VerifyGet(x => x.EpisodeTeams, Times.Once); //Assert.Equal(model.Object.EpisodeTeams?.Count, existingEntity.EpisodeTeams?.Count); model.VerifyGet(x => x.EpisodeTeamFirstAppearances, Times.Once); //Assert.Equal(model.Object.EpisodeTeamFirstAppearances?.Count, existingEntity.EpisodeTeamFirstAppearances?.Count); }
public void Verify_MapToEntity_WithExistingEntity_AssignsEpisodeProperties() { // Arrange var mapper = new EpisodeMapper(); var model = EpisodesMockingSetup.DoMockingSetupForEpisodeModel(); // Act IEpisode existingEntity = new Episode { Id = 1 }; mapper.MapToEntity(model.Object, ref existingEntity); // Assert Assert.Equal(model.Object.HasStaffReview, existingEntity.HasStaffReview); Assert.Equal(model.Object.AirDate, existingEntity.AirDate); Assert.Equal(model.Object.EpisodeCode, existingEntity.EpisodeCode); Assert.Equal(model.Object.SeasonNumber, existingEntity.SeasonNumber); Assert.Equal(model.Object.EpisodeNumber, existingEntity.EpisodeNumber); // Related Objects Assert.Equal(model.Object.PrimaryImageFileId, existingEntity.PrimaryImageFileId); Assert.Equal(model.Object.SeriesId, existingEntity.SeriesId); // Associated Objects model.VerifyGet(x => x.EpisodeAliases, Times.Once); //Assert.Equal(model.Object.EpisodeAliases?.Count, existingEntity.EpisodeAliases?.Count); model.VerifyGet(x => x.EpisodeCharacters, Times.Once); //Assert.Equal(model.Object.EpisodeCharacters?.Count, existingEntity.EpisodeCharacters?.Count); model.VerifyGet(x => x.EpisodeCharactersDied, Times.Once); //Assert.Equal(model.Object.EpisodeCharactersDied?.Count, existingEntity.EpisodeCharactersDied?.Count); model.VerifyGet(x => x.EpisodeCharacterFirstAppearances, Times.Once); //Assert.Equal(model.Object.EpisodeCharacterFirstAppearances?.Count, existingEntity.EpisodeCharacterFirstAppearances?.Count); model.VerifyGet(x => x.EpisodeConcepts, Times.Once); //Assert.Equal(model.Object.EpisodeConcepts?.Count, existingEntity.EpisodeConcepts?.Count); model.VerifyGet(x => x.EpisodeConceptFirstAppearances, Times.Once); //Assert.Equal(model.Object.EpisodeConceptFirstAppearances?.Count, existingEntity.EpisodeConceptFirstAppearances?.Count); model.VerifyGet(x => x.EpisodeLocations, Times.Once); //Assert.Equal(model.Object.EpisodeLocations?.Count, existingEntity.EpisodeLocations?.Count); model.VerifyGet(x => x.EpisodeLocationFirstAppearances, Times.Once); //Assert.Equal(model.Object.EpisodeLocationFirstAppearances?.Count, existingEntity.EpisodeLocationFirstAppearances?.Count); model.VerifyGet(x => x.EpisodeObjects, Times.Once); //Assert.Equal(model.Object.EpisodeObjects?.Count, existingEntity.EpisodeObjects?.Count); model.VerifyGet(x => x.EpisodeObjectFirstAppearances, Times.Once); //Assert.Equal(model.Object.EpisodeObjectFirstAppearances?.Count, existingEntity.EpisodeObjectFirstAppearances?.Count); model.VerifyGet(x => x.EpisodePeople, Times.Once); //Assert.Equal(model.Object.EpisodePeople?.Count, existingEntity.EpisodePeople?.Count); model.VerifyGet(x => x.EpisodeStoryArcs, Times.Once); //Assert.Equal(model.Object.EpisodeStoryArcs?.Count, existingEntity.EpisodeStoryArcs?.Count); model.VerifyGet(x => x.EpisodeStoryArcFirstAppearances, Times.Once); //Assert.Equal(model.Object.EpisodeStoryArcFirstAppearances?.Count, existingEntity.EpisodeStoryArcFirstAppearances?.Count); model.VerifyGet(x => x.EpisodeTeams, Times.Once); //Assert.Equal(model.Object.EpisodeTeams?.Count, existingEntity.EpisodeTeams?.Count); model.VerifyGet(x => x.EpisodeTeamFirstAppearances, Times.Once); //Assert.Equal(model.Object.EpisodeTeamFirstAppearances?.Count, existingEntity.EpisodeTeamFirstAppearances?.Count); }