Пример #1
0
 public HackerNewsControllerTest()
 {
     _mockHackerNewsService = new Mock <IHackerNewsService>();
     _hackerNewsController  = new HackerNewsController(null, _mockHackerNewsService.Object);
     _hackerNewsController.ControllerContext             = new ControllerContext();
     _hackerNewsController.ControllerContext.HttpContext = new DefaultHttpContext();
 }
        public async void VerifyValidIdReturnsItem()
        {
            //Arrange
            var hackerNewsService = new Mock <IHackerNewsAPI>();
            var cacheService      = new MemoryCache(new MemoryCacheOptions());//new Mock<IMemoryCache>();

            //crate the mock object
            Item item = new Item
            {
                url   = "thisisatest.com",
                title = "This is a Test"
            };

            hackerNewsService.Setup(x => x.GetItemDetailsAsync(It.IsInRange <int>(1, 3, Range.Inclusive))).ReturnsAsync(item);

            var controller = new HackerNewsController(hackerNewsService.Object, cacheService);

            //Act
            int testId       = 1;
            var actionResult = await controller.GetItemDetails(testId);

            //Assert
            var result = actionResult.Result as OkObjectResult;

            Assert.NotNull(result);
            var model = Assert.IsType <Item>(result.Value);

            Assert.Equal("thisisatest.com", model.url);
            Assert.Equal("This is a Test", model.title);
        }
        public async void AssertGetNewestStoriesReturnsList()
        {
            //Arrange
            var hackerNewsService = new Mock <IHackerNewsAPI>();
            var cacheService      = new MemoryCache(new MemoryCacheOptions());//new Mock<IMemoryCache>();

            List <int> ids = new List <int> {
                1, 2, 3, 4
            };

            hackerNewsService.Setup(x => x.GetNewestStoriesAsync()).ReturnsAsync(ids);
            var controller = new HackerNewsController(hackerNewsService.Object, cacheService);

            //Act
            var actionResult = await controller.GetNewestStories();

            //assert
            //var result = Assert.IsType<ActionResult<List<int>>>(actionResult);
            var result = actionResult.Result as OkObjectResult;

            Assert.NotNull(result);
            var model = Assert.IsType <List <int> >(result.Value);

            Assert.Equal(4, model.Count);
            //var model = Assert.IsAssignableFrom<OkObjectResult>(result.Value);
            //Assert.Equal(4, result);
        }
Пример #4
0
 public GetLatestHackerNewsTests()
 {
     _businessLayer = new Mock <IHackerNewsBusinessLayer>(MockBehavior.Strict);
     _businessLayer.Setup(x =>
                          x.GetLatestHackerNewsAsync(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <string>())
                          ).ReturnsAsync(MockHackerNewsContractFactory.CreateHackerNewsData());
     _controller = new HackerNewsController(_businessLayer.Object);
 }
Пример #5
0
        public void TestDetailsView()
        {
            var    controller = new HackerNewsController();
            var    result     = controller.Get(10);
            string r          = result.ToString();

            Assert.NotNull(result);
        }
Пример #6
0
        public void NumPagesTest_ShouldThrowException(int[] latestNewsIds, int pageSize)
        {
            // Arrange
            var mockRepo = new Mock <INewsService>();

            mockRepo.Setup(repo => repo.GetIdsAsync())
            .ReturnsAsync(latestNewsIds);
            var controller = new HackerNewsController(mockRepo.Object);

            // Act & Assert
            Assert.That(() => controller.CalculateNumPages(latestNewsIds, pageSize), Throws.Exception);
        }
        public void VerifGetNewestStoriesReturnTypeTest()
        {
            //Arrange
            var hackerNewsService = new Mock <IHackerNewsAPI>();
            var cacheService      = new MemoryCache(new MemoryCacheOptions());//new Mock<IMemoryCache>();
            var controller        = new HackerNewsController(hackerNewsService.Object, cacheService);

            //Act
            var result = controller.GetNewestStories();

            //assert
            Assert.IsType <Task <ActionResult <List <int> > > >(result);
        }
Пример #8
0
        public async Task TestMethod1()
        {
            HackerNewsController hackerNewsController = new HackerNewsController(_logger);
            var articleIds = await hackerNewsController.Get();

            Assert.IsNotNull(articleIds);

            var firstId = articleIds.First();

            Assert.IsInstanceOfType(firstId, typeof(int));

            var articleDetail = await hackerNewsController.Get(firstId.ToString());

            Assert.IsNotNull(articleDetail);
        }
            public async Task GetNewStoriesTest()
            {
                var services = new ServiceCollection();

                services.AddMemoryCache();
                var serviceProvider = services.BuildServiceProvider();

                var memoryCache    = serviceProvider.GetService <IMemoryCache>();
                var hackerNewsRepo = new HackerNews.API.Data.HackerNewsRepository(new TestHackerNewsClient(), memoryCache);

                var controller = new HackerNewsController(hackerNewsRepo);

                var result = await controller.GetNewStories();

                Assert.IsNotNull(result);
            }
Пример #10
0
        public void NumPagesTest_Variable(int[] latestNewsIds, int pageSize, int expectedNumPages)
        {
            // Arrange
            var mockRepo = new Mock <INewsService>();

            mockRepo.Setup(repo => repo.GetIdsAsync())
            .ReturnsAsync(latestNewsIds);
            var controller = new HackerNewsController(mockRepo.Object);

            // Act
            int numPagesResult = controller.CalculateNumPages(latestNewsIds, pageSize);


            // Assert
            Assert.AreEqual(expectedNumPages, numPagesResult);
        }
Пример #11
0
        public void CalculatePageStartIndex_Variable(int[] latestNewsIds,
                                                     int pageNum,
                                                     int pageSize,
                                                     int expectedStartIndex)
        {
            // Arrange
            var mockRepo = new Mock <INewsService>();

            mockRepo.Setup(repo => repo.GetIdsAsync())
            .ReturnsAsync(latestNewsIds);
            var controller = new HackerNewsController(mockRepo.Object);

            // Act
            int startIndexResult = controller.CalculatePageStartIndex(latestNewsIds, pageNum, pageSize);

            // Assert
            Assert.AreEqual(expectedStartIndex, startIndexResult);
        }
        public async void Controller_Search()
        {
            // Arrange
            string searchTerm = "YOLO";
            var    mockRepo   = new Mock <IHackerNewsCachedService>();

            mockRepo.Setup(repo => repo.SearchTopStoriesAsync(searchTerm))
            .Returns(GetMockHackerNewsArticles());
            var logger     = GetLogger();
            var controller = new HackerNewsController(logger, mockRepo.Object);

            // Act
            var rv = await controller.Get(searchTerm);

            var result = rv.ToArray();

            // Assert
            var type = Assert.IsType <List <IHackerNewsArticle> >(rv);

            Assert.Equal(8863, result[0].Id);
            Assert.Equal("My YC app: Dropbox - Throw away your USB drive", result[0].Title);
        }
        public void Controller_Get()
        {
            // Arrange
            var mockRepo = new Mock <IHackerNewsCachedService>();

            mockRepo.Setup(repo => repo.GetAllTopStoriesAsync())
            .Returns(GetMockHackerNewsArticles());
            var logger     = GetLogger();
            var controller = new HackerNewsController(logger, mockRepo.Object);

            // Act
            var rv     = controller.Get();
            var result = rv.Result.ToArray();

            // Assert
            var type = Assert.IsType <Task <IEnumerable <IHackerNewsArticle> > >(rv); // TODO: change this to result

            Assert.Equal(2, result.Count());
            Assert.Equal(8863, result[0].Id);
            Assert.Equal("My YC app: Dropbox - Throw away your USB drive", result[0].Title);
            Assert.Equal(8864, result[1].Id);
            Assert.Equal("https://rust-analyzer.github.io/blog/2020/04/20/first-release.html", result[1].Url);
        }
        public async Task GetTop20NewsAsync_ShouldReturnAllNews()
        {
            // Arrange
            var logger = GetLogger();

            var mockRepo = new Mock <INewsRepository>();

            mockRepo.Setup(repo => repo
                           .GetNews(20))
            .Returns(Task.FromResult(GetTestNews()));

            var mapper = GetMapper();

            var controller = new HackerNewsController(logger, mockRepo.Object, mapper);

            // Act
            var actionResponse = await controller.GetTop20NewsAsync();

            // Assert
            var actionResult = actionResponse.Should().BeOfType <OkObjectResult>().Subject;
            var newsResponse = actionResult.Value.Should().BeAssignableTo <List <NewsDto> >().Subject;

            newsResponse.Count.Should().Be(20);
        }
        public HackerNewsControllerTest()
        {
            service = A.Fake <IHackerNewsService>();

            controller = new HackerNewsController(service);
        }