public void ConstructingAnAttendanceWithAnArrivalAfterTheDepartureThrowsAnArgumentException() { // Arrange var arrival = Randomiser.ArrivalDate; var departure = arrival.AddMinutes(-Randomiser.Int(20)); // Act Action action = () => new Attendance(new UserBuilder().Build(), arrival, departure); // Assert action .ShouldThrow <ArgumentException>() .WithMessage("The arrival must preceed the departure."); }
public void CallingAddAttendanceTwiceByUsernameOnlyAddsTheAttendanceOnceAndUpdatesTheArrivalAndDeparture() { // Arrange var user = new UserBuilder().Build(); var arrival1 = DateTime.Now; var departure1 = arrival1.AddMinutes(20); var arrival2 = arrival1.AddMinutes(Randomiser.Int(10)); var departure2 = arrival2.AddMinutes(Randomiser.Int(10, 60)); var attendance = new AttendanceBuilder().User(user).Arrival(arrival1).Departure(departure1).Build(); // Act var happening = new EventBuilder().AddAttendance(attendance).Build(); happening.AddAttendance(new AttendanceBuilder().User(new UserBuilder().Username(user.Username).Build()).Arrival(arrival2).Departure(departure2).Build()); // Assert Assert.AreEqual(1, happening.Attendances.Count); Assert.AreEqual(arrival2, happening.Start); Assert.AreEqual(departure2, happening.End); }
public void TheEventStartDateIsUpdatedWithAnEarlierAttendanceIsAdded() { // Arrange var attendance = new AttendanceBuilder().Arrival(DateTime.Now).Build(); var earlierAttendance = new AttendanceBuilder().Arrival(DateTime.Now.AddHours(-Randomiser.Int(60))).Build(); var happening = new EventBuilder().AddAttendance(attendance).Build(); // Act happening.AddAttendance(earlierAttendance); // Assert Assert.AreEqual(earlierAttendance.Arrival, happening.Start); }
public void TheEventStartDateIsNotUpdatedWithALaterAttendanceIsRemoved() { // Arrange var attendance = new AttendanceBuilder().Arrival(DateTime.Now).Departure(DateTime.Now.AddHours(Randomiser.Int(1, 24))).Build(); var laterAttendance = new AttendanceBuilder().Arrival(DateTime.Now.AddHours(Randomiser.Int(60))).Build(); var happening = new EventBuilder().AddAttendance(attendance).AddAttendance(laterAttendance).Build(); // Act happening.RemoveAttendance(laterAttendance.User); // Assert Assert.AreEqual(attendance.Arrival, happening.Start); }
public void TheEventEndDateIsUpdatedWithALaterAttendanceIsAdded() { // Arrange var user = new UserBuilder().Build(); var attendance = new AttendanceBuilder().User(user).Arrival(DateTime.Now).Build(); var happening = new EventBuilder().AddAttendance(attendance).Build(); var earlierAttendance = new AttendanceBuilder().User(user).Arrival(DateTime.Now.AddHours(-Randomiser.Int(60))).Build(); // Act happening.AddAttendance(earlierAttendance); // Assert Assert.AreEqual(earlierAttendance.Departure, happening.End); }