Пример #1
0
        public async Task TestGetQuestionsPageOne()
        {
            // Arrange
            var repo = new Mock <IRepositoryEnq>();

            repo.Setup(r => r.GetAllAsync <Question>(
                           null, Desc(), true, 0, PageLength, null)
                       ).ReturnsAsync(
                QuestionData.TestQuestions().ToList().GetRange(0, PageLength)
                );

            var controller = new ReadonlyApiController(repo.Object);

            // Act
            var result = await controller.GetQuestions(1);

            await controller.GetQuestions(0);

            await controller.GetQuestions(-1);

            // Assert
            Assert.IsType <OkObjectResult>(result);
            Assert.IsType <List <Question> >(result.Value);
            Assert.Equal(PageLength, (result.Value as List <Question>).Count);

            repo.Verify(r => r.GetAllAsync <Question>
                            (null, Desc(), true, 0, PageLength, null), Times.Exactly(3)
                        );
            repo.VerifyNoOtherCalls();
        }
Пример #2
0
        public async Task TestGetQuestionsPastPageOne()
        {
            // Arrange
            var repo      = new Mock <IRepositoryEnq>();
            var questions = QuestionData.TestQuestions().ToList();
            var maxPage   = MaxPage(questions.Count);
            var midPage   = 2;
            var midSkip   = midPage * PageLength - PageLength;
            var maxSkip   = maxPage * PageLength - PageLength;

            SetUpPastOneRepo(repo, midSkip, maxSkip, questions);

            var controller = new ReadonlyApiController(repo.Object);

            // Act
            var result = await controller.GetQuestions(midPage);

            await controller.GetQuestions(maxPage + 1000);

            // Assert
            Assert.Equal(PageLength, (result.Value as List <Question>).Count);

            repo.Verify(r => r.GetAllAsync
                            (null, Desc(), true, It.IsIn(new [] { midSkip, maxSkip }), PageLength, null)
                        , Times.Exactly(2)
                        );
            repo.Verify(r => r.GetCountAsync <Question>(null), Times.Exactly(2));
            repo.VerifyNoOtherCalls();
        }
Пример #3
0
        public async Task TestGetCount()
        {
            // Arrange
            var repo    = new Mock <IRepositoryEnq>();
            int count   = 100;
            int maxPage = MaxPage(count);

            repo.Setup(r => r.GetCountAsync <Question>(null))
            .ReturnsAsync(count);

            var controller = new ReadonlyApiController(repo.Object);

            // Act
            var result = await controller.GetMaxPage();

            // Assert
            Assert.IsType <OkObjectResult>(result);
            Assert.Equal(maxPage, result.Value as int?);

            repo.Verify(r => r.GetCountAsync <Question>(null), Times.Once);
            repo.VerifyNoOtherCalls();
        }
Пример #4
0
        public async Task TestGetQuestion()
        {
            // Arrange
            var repo       = new Mock <IRepositoryEnq>();
            var question   = new Question();
            var arr        = new [] { "Answers" };
            int id         = 1;
            int notFoundId = 999;
            var invalidId  = -10;
            var zeroId     = 0;

            repo.Setup(r => r.GetByIdAsync <Question>(id, arr, null))
            .ReturnsAsync(question);

            repo.Setup(r => r.GetByIdAsync <Question>(notFoundId, arr, null))
            .Returns(Task.FromResult <Question>(null));

            var controller = new ReadonlyApiController(repo.Object);

            // Act
            var result = await controller.GetQuestion(id);

            var notFoundResult = await controller.GetQuestion(notFoundId);

            await controller.GetQuestion(zeroId);

            await controller.GetQuestion(invalidId);

            // Assert
            Assert.IsType <OkObjectResult>(result);
            Assert.IsType <NotFoundResult>(notFoundResult);

            Assert.Equal(question, (result as OkObjectResult).Value);

            repo.Verify(r => r.GetByIdAsync <Question>
                            (It.IsIn(new [] { id, notFoundId }), arr, null), Times.Exactly(2));
            repo.VerifyNoOtherCalls();
        }