public void EditCalendar_UserNotOwner_ThrowsForbiddenExceptions()
        {
            var calendarVM = new CalendarViewModel
            {
                Id     = 3,
                UserId = 2,
                Name   = "123"
            };

            var calendar = new Calendar
            {
                Id     = 3,
                UserId = 2,
                Name   = "123"
            };

            var mockCalendarRepo = new Mock <ICalendarRepository>();

            mockCalendarRepo
            .Setup(cr => cr.GetCalendar(It.IsAny <int>()))
            .Returns(() => calendar);
            var calendarDomain = new CalendarDomain(mockCalendarRepo.Object, _mapper, null, null);

            Assert.Throws <ForbiddenException>(() => calendarDomain.EditCalendar(calendarVM, 5));

            mockCalendarRepo.Verify(cr => cr.GetCalendar(It.IsAny <int>()), Times.Once());
        }
        public void GetCalendar_GettingUnknownCalendar_ShouldFail(int calendarId)
        {
            // Arrange
            var mockCalendarRepo = new Mock <ICalendarRepository>();

            mockCalendarRepo
            .Setup(x => x.GetCalendar(It.IsAny <int>()))
            .Returns(() => null);
            var calendarDomain = new CalendarDomain(mockCalendarRepo.Object, null, null, null);

            // Act
            Assert.Throws <NotFoundException>(() => calendarDomain.GetCalendar(calendarId));

            // Assert
            mockCalendarRepo.Verify(cr => cr.GetCalendar(calendarId), Times.Once());
        }
        public void AddCalendar_AddingCalendarForInvalidUser_ShouldFail(int calendarUserId, int actualUserId)
        {
            // Arrange
            var calendarViewModel = new CalendarViewModel
            {
                UserId = calendarUserId
            };

            var mockCalendarRepo = new Mock <ICalendarRepository>();
            var calendarDomain   = new CalendarDomain(mockCalendarRepo.Object, null, null, null);

            // Act
            Assert.Throws <ForbiddenException>(() => calendarDomain.AddCalendar(calendarViewModel, actualUserId));

            // Assert
            mockCalendarRepo.Verify(cr => cr.AddCalendar(It.IsAny <Calendar>()), Times.Never());
        }
        public void GetCalendar_GettingCalendar_ShouldReturnCalendar(int calendarId)
        {
            // Arrange
            var expected = new Calendar();

            var mockCalendarRepo = new Mock <ICalendarRepository>();

            mockCalendarRepo
            .Setup(x => x.GetCalendar(It.IsAny <int>()))
            .Returns(() => expected);

            var calendarDomain = new CalendarDomain(mockCalendarRepo.Object, _mapper, null, null);

            // Act
            var actual = calendarDomain.GetCalendar(calendarId);

            // Assert
            mockCalendarRepo.Verify(cr => cr.GetCalendar(calendarId), Times.Once());
        }
        public void AddCalendar_AddingCalendar_ShouldReturnCalendarId(int userId, int calendarId)
        {
            // Arrange
            var calendarViewModel = new CalendarViewModel
            {
                UserId = userId
            };

            var mockCalendarRepo = new Mock <ICalendarRepository>();

            mockCalendarRepo
            .Setup(x => x.AddCalendar(It.IsAny <Calendar>()))
            .Returns(() => calendarId);

            var calendarDomain = new CalendarDomain(mockCalendarRepo.Object, _mapper, null, null);

            // Act
            var actualCalendarId = calendarDomain.AddCalendar(calendarViewModel, userId);

            // Assert
            Assert.Equal(calendarId, actualCalendarId);
            mockCalendarRepo.Verify(cr => cr.AddCalendar(It.IsNotNull <Calendar>()), Times.Once());
        }