private bool AreLessonAttendeesEqual(LessonAttendee lessonAttendee1, LessonAttendee lessonAttendee2) { return(lessonAttendee1.Id == lessonAttendee2.Id && lessonAttendee1.HasAttended == lessonAttendee2.HasAttended && lessonAttendee1.HasPaid == lessonAttendee2.HasPaid && lessonAttendee1.Price == lessonAttendee2.Price && lessonAttendee1.StudentId == lessonAttendee2.StudentId); }
private HashSet <LessonAttendee> UpsertLessonAttendees(Lesson lesson) { var updatedLessonAttendees = new HashSet <LessonAttendee>(); foreach (var lessonAttendee in lesson.LessonAttendees) { LessonAttendee existingLessonAttendee = UpsertLessonAttendee(lessonAttendee); updatedLessonAttendees.Add(existingLessonAttendee); } return(updatedLessonAttendees); }
private LessonAttendee UpsertLessonAttendee(LessonAttendee lessonAttendee) { var existingLessonAttendee = this.lessonAttendeeRepository.GetById(lessonAttendee.Id); if (existingLessonAttendee == null) { existingLessonAttendee = new LessonAttendee(); mapper.Map(lessonAttendee, existingLessonAttendee); this.lessonAttendeeRepository.Insert(existingLessonAttendee); } else { mapper.Map(lessonAttendee, existingLessonAttendee); this.lessonAttendeeRepository.Update(existingLessonAttendee); } return(existingLessonAttendee); }
public void UpdateExistingLessonSuccess() { var originalLesson = this.fixture.Lessons.First(); var deletedAttendee = originalLesson.LessonAttendees.Last(); var updatedAttendee = new LessonAttendee { Id = 11, HasAttended = false, HasPaid = true, Price = 240, StudentId = 101, Student = new Student { Id = 101, Name = "Updated Student" } }; var insertedAttendee = new LessonAttendee { Id = 0, HasAttended = false, HasPaid = true, Price = 240, StudentId = 103, Student = new Student { Id = 103, Name = "New Student" } }; var updatedLesson = new Lesson { Id = 1, Date = DateTime.Today.AddDays(1), StartTime = "14:00", EndTime = "15:00", Status = LessonStatuses.CANCELLED, LessonAttendees = new HashSet <LessonAttendee> { updatedAttendee, // LessonAttendee 12 has been Removed insertedAttendee } }; service.Update(updatedLesson.Id, updatedLesson); this.lessonRepositoryMock.Verify(repository => repository.Update(It.Is <Lesson>(l => l.Id == updatedLesson.Id && l.Date == updatedLesson.Date && l.StartTime == updatedLesson.StartTime && l.EndTime == updatedLesson.EndTime && l.Status == updatedLesson.Status )), Times.Once()); this.lessonAttendeeRepositoryMock.Verify(repository => repository.Insert(It.Is <LessonAttendee>(la => AreLessonAttendeesEqual(la, insertedAttendee))), Times.Once()); this.lessonAttendeeRepositoryMock.Verify(repository => repository.Update(It.Is <LessonAttendee>(la => AreLessonAttendeesEqual(la, updatedAttendee))), Times.Once()); this.lessonAttendeeRepositoryMock.Verify(repository => repository.Delete(It.Is <LessonAttendee>(la => AreLessonAttendeesEqual(la, deletedAttendee))), Times.Once()); this.unitOfWorkMock.Verify(unitOfWork => unitOfWork.Start(), Times.Once()); this.unitOfWorkMock.Verify(unitOfWork => unitOfWork.End(), Times.Once()); }