Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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());
        }