public async Task GetWordsByCategoryAsync_ThrowsIfResponseStatusCodeIsNotSuccessful()
        {
            // Arrange
            var clientFactoryMock =
                GetHttpClientFactoryMock(
                    HttpStatusCode.BadRequest, InvalidResponseText);
            var systemUnderTest =
                new WordsProvider(_gameOptionsMock, clientFactoryMock, _loggerMock);

            // Act
            Func <Task <IReadOnlyCollection <string> > > action =
                () => systemUnderTest.GetWordsByCategoryAsync(Category);

            // Assert
            await action.Should()
            .ThrowAsync <HttpRequestException>();
        }
        public async Task GetWordsByCategoryAsync_ThrowsIfResponseCannotBeParsed(
            string serverResponseContent)
        {
            // Arrange
            var clientFactoryMock =
                GetHttpClientFactoryMock(
                    HttpStatusCode.OK, serverResponseContent);
            var systemUnderTest =
                new WordsProvider(_gameOptionsMock, clientFactoryMock, _loggerMock);

            // Act
            Func <Task <IReadOnlyCollection <string> > > action =
                () => systemUnderTest.GetWordsByCategoryAsync(Category);

            // Assert
            await action.Should()
            .ThrowAsync <JsonReaderException>();
        }
        public async Task GetWordsByCategoryAsync_CanReturnWordsByCategory()
        {
            // Arrange
            var clientFactoryMock =
                GetHttpClientFactoryMock(
                    HttpStatusCode.OK, ServerResponses.WordAssociationsJsonResponse);
            var systemUnderTest =
                new WordsProvider(_gameOptionsMock, clientFactoryMock, _loggerMock);

            // Act
            var wordsByCategory = await systemUnderTest.GetWordsByCategoryAsync(Category);

            // Assert
            wordsByCategory.Should()
            .Contain("gardening");

            wordsByCategory.Should()
            .Contain("collecting");

            wordsByCategory.Should()
            .Contain("cooking");
        }