public void AddEventTest() { #region SetupMockInterfaces var mockAbsenceModel = new Mock<AbsenceModel>(); var mockEvent1 = new Mock<Event>(); var mockEvent2 = new Mock<Event>(); var mockEvent3 = new Mock<Event>(); var mockEvent4 = new Mock<Event>(); var events = new List<Event> { mockEvent1.Object, mockEvent2.Object, mockEvent3.Object, mockEvent4.Object }; var mockEventNew = new Mock<Event>(); var newEventId = Guid.NewGuid(); mockAbsenceModel.Setup(m => m.GetAbsences(It.IsAny<int>(), It.IsAny<int>())).Returns(events); mockAbsenceModel.Setup(m => m.AddNewEvent(It.IsAny<string>(), It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<bool>(), It.IsAny<EventType>())) .Returns(newEventId); #endregion #region Mock object setup int curMonth = DateTime.Today.Month; int curYear = DateTime.Today.Year; DateTime startOfMonth = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1); DateTime endOfMonth = startOfMonth.AddMonths(1).AddDays(-1); Random randStart = new Random(); var fcevents = new Queue<FCEvent>(100); for (int i = 0; i < 4; i++) { var sd = startOfMonth.AddDays(randStart.Next(28)); var ed = sd.AddDays(randStart.Next(4)); fcevents.Enqueue(new FCEvent { id = Guid.Empty, title = "Mock FC Event " + i.ToString(), allDay = false, start = sd, end = ed, url = string.Empty, className = "owner-event", editable = true, startEditable = true, durationEditable = true }); } var mockEventBuilder = new Mock<EventBuilder>(); mockEventBuilder.Setup(m => m.Build(It.IsAny<Guid>(), It.IsAny<string>(), It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<bool>(), It.IsAny<bool>(), It.IsAny<bool>(), It.IsAny<bool>(), It.IsAny<EventType>())); mockEventBuilder.SetupSequence(m => m.GetEvent()) .Returns(fcevents.Dequeue()) .Returns(fcevents.Dequeue()) .Returns(fcevents.Dequeue()) .Returns(fcevents.Dequeue()); #endregion var controller = new HomeController(mockAbsenceModel.Object); controller.EventBuilder = mockEventBuilder.Object; var addEventResult = controller.AddNewEvent( "My new event", DateTime.Today, DateTime.Today, false, EventType.Vacation); #region Mock object verification #endregion #region Assertions Assert.IsInstanceOfType(addEventResult, typeof(JsonResult)); Assert.IsInstanceOfType(addEventResult.Data, typeof(Guid)); Assert.AreEqual(newEventId, addEventResult.Data); #endregion }