コード例 #1
0
        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
        }