public async Task Scrap_WhenLanguageListHaveNullOrEmptyItem_ReturnsBadRequest(string language)
        {
            // Arrange
            var githubScrap = new GitHubScrap(null);

            var param = new GitHubInItem
            {
                Location = new List <string>
                {
                    "São Paulo",
                },
                Language = new List <string>
                {
                    "C#",
                    language
                }
            };

            // Act
            var result = await githubScrap.Scrap(param, CancellationToken.None);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(ResultStatusCode.BadRequest, result.Status);
            Assert.Equal("language list can not have null item", result.Value.ToString());
        }
        public async Task Scrap_WhenHtmlIsValid_ReturnsOk()
        {
            // Arrange
            var htmlReadScrapValid = File.ReadAllText(@"..\..\..\..\FilesToTests\GitHub\ReadScrap_Valid.html");

            var mockHttp    = _testHelper.CreateMockHttp(HttpMethod.Get, htmlReadScrapValid, System.Net.HttpStatusCode.OK);
            var githubScrap = new GitHubScrap(mockHttp);

            var param = new GitHubInItem
            {
                Location = new List <string>
                {
                    "São Paulo",
                },
                Language = new List <string>
                {
                    "C#",
                }
            };

            // Act
            var result = await githubScrap.Scrap(param, CancellationToken.None);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(ResultStatusCode.OK, result.Status);
            Assert.True(result.ValueAsSuccess.User.Count == 10);
            Assert.Equal("https://github.com/paulosalgado", result.ValueAsSuccess.User.Last().Url);
        }
        public async Task Scrap_WhenHtmlIsEmpty_ReturnsError()
        {
            // Arrange

            var mockHttp    = _testHelper.CreateMockHttp(HttpMethod.Get, "", HttpStatusCode.OK);
            var githubScrap = new GitHubScrap(mockHttp);

            var param = new GitHubInItem
            {
                Location = new List <string>
                {
                    "São Paulo",
                },
                Language = new List <string>
                {
                    "C#",
                }
            };

            // Act
            var result = await githubScrap.Scrap(param, CancellationToken.None);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(ResultStatusCode.Error, result.Status);
            Assert.Equal("html is null or empty", result.Value.ToString());
        }
        public async Task Scrap_WhenNotFoundAnyUser_ReturnsNotFound()
        {
            // Arrange
            var htmlReadScrapValid = File.ReadAllText(@"..\..\..\..\FilesToTests\GitHub\ReadScrap_NotFoundAnyUsers.html");

            var mockHttp    = _testHelper.CreateMockHttp(HttpMethod.Get, htmlReadScrapValid, System.Net.HttpStatusCode.OK);
            var githubScrap = new GitHubScrap(mockHttp);

            var param = new GitHubInItem
            {
                Location = new List <string>
                {
                    "São Paulo",
                },
                Language = new List <string>
                {
                    "C#",
                }
            };

            // Act
            var result = await githubScrap.Scrap(param, CancellationToken.None);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(ResultStatusCode.NotFound, result.Status);
            Assert.Equal("not found any users", result.Value.ToString());
        }
        public async Task Scrap_WhenRequestReturnSomeError_ReturnsIt(HttpStatusCode status, ResultStatusCode expected)
        {
            // Arrange
            var message     = "some error message";
            var mockHttp    = _testHelper.CreateMockHttp(HttpMethod.Get, message, status);
            var githubScrap = new GitHubScrap(mockHttp);

            var param = new GitHubInItem
            {
                Location = new List <string>
                {
                    "São Paulo",
                },
                Language = new List <string>
                {
                    "C#",
                }
            };

            // Act
            var result = await githubScrap.Scrap(param, CancellationToken.None);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(expected, result.Status);
            Assert.Equal(message, result.Value.ToString());
        }