public void Should_Throw_On_Null_Or_Empty_Context_Parameter()
            {
                //Given
                ICakeContext context  = null;
                string       address  = RootAddress;
                HttpSettings settings = new HttpSettings();

                //When
                var nullRecord = Record.Exception(() => HttpClientAliases.HttpDelete(context, address, settings));

                //Then
                CakeAssert.IsArgumentNullException(nullRecord, nameof(context));
            }
            public void Should_Throw_On_Null_Settings_Parameter()
            {
                //Given
                ICakeContext context  = _Context;
                string       address  = RootAddress;
                HttpSettings settings = null;

                //When
                var record = Record.Exception(() => HttpClientAliases.HttpGetAsByteArray(context, address, settings));

                //Then
                CakeAssert.IsArgumentNullException(record, nameof(settings));
            }
            public void Should_Throw_On_Null_Or_Empty_Address_Parameter()
            {
                //Given
                ICakeContext context    = _Context;
                HttpSettings settings   = new HttpSettings();
                string       address    = null;
                string       httpMethod = "POST";

                //When
                var nullRecord = Record.Exception(() => HttpClientAliases.HttpSend(context, address, httpMethod, settings));

                //Then
                CakeAssert.IsArgumentNullException(nullRecord, nameof(address));
            }
            public void Should_Return_Json_Result()
            {
                //Given
                ICakeContext context  = _Context;
                string       address  = $"{ RootAddress }/posts/1";
                HttpSettings settings = new HttpSettings();

                //When
                var actual = HttpClientAliases.HttpGet(context, address);

                //Then
                var expected = "{\r\n  \"userId\": 1,\r\n  \"id\": 1,\r\n  \"title\": \"sunt aut facere repellat provident occaecati excepturi optio reprehenderit\",\r\n  \"body\": \"quia et suscipit\\nsuscipit recusandae consequuntur expedita et cum\\nreprehenderit molestiae ut ut quas totam\\nnostrum rerum est autem sunt rem eveniet architecto\"\r\n}";

                Assert.NotNull(actual);
                Assert.Equal(expected, actual, ignoreCase: true, ignoreLineEndingDifferences: true, ignoreWhiteSpaceDifferences: true);
            }
            public void Should_Delete_Return_Void()
            {
                //Given
                ICakeContext context  = _Context;
                string       address  = $"{ RootAddress }/posts/1";
                HttpSettings settings = new HttpSettings()
                {
                    EnsureSuccessStatusCode = true
                };

                //When
                HttpClientAliases.HttpDelete(context, address, settings);

                //Then
                //???
            }
            public void Should_Post_And_Return_Json_Result()
            {
                //Given
                ICakeContext context    = _Context;
                HttpSettings settings   = new HttpSettings();
                string       address    = $"{ RootAddress }/posts";
                string       httpMethod = "POST";

                settings.SetRequestBody("{ \"title\": \"foo\", \"body\": \"bar\", \"userId\": 1}");

                //When
                var actual = HttpClientAliases.HttpSend(context, address, httpMethod, settings);

                //Then
                var expected = "{\n  \"id\": 101\n}";

                Assert.NotNull(actual);
                Assert.Equal(expected, actual, ignoreCase: true, ignoreLineEndingDifferences: true, ignoreWhiteSpaceDifferences: true);
            }
            public void Should_Put_And_Return_Json_Result()
            {
                //Given
                var putData = "{\r\n    title: 'foo',\r\n    body: 'bar',\r\n    userId: 1\r\n  }";

                ICakeContext context  = _Context;
                string       address  = $"{ RootAddress }/posts/1";
                HttpSettings settings = new HttpSettings();

                settings.SetRequestBody(putData);

                //When
                var actual = HttpClientAliases.HttpPut(context, address, settings);

                //Then
                var expected = "{\n  \"id\": 1\n}";

                Assert.NotNull(actual);
                Assert.Equal(expected, actual, ignoreCase: true, ignoreLineEndingDifferences: true, ignoreWhiteSpaceDifferences: true);
            }
            public void Should_Throw_On_Null_Or_Empty_Address_Parameter()
            {
                //Given
                ICakeContext context  = _Context;
                HttpSettings settings = new HttpSettings();
                string       address  = null;

                //When
                address = null;
                var nullRecord = Record.Exception(() => HttpClientAliases.HttpGetAsByteArray(context, address, settings));

                address = "";
                var emptyRecord = Record.Exception(() => HttpClientAliases.HttpGetAsByteArray(context, address, settings));

                address = "     ";
                var spaceRecord = Record.Exception(() => HttpClientAliases.HttpGetAsByteArray(context, address, settings));

                //Then
                CakeAssert.IsArgumentNullException(nullRecord, nameof(address));
                CakeAssert.IsArgumentNullException(emptyRecord, nameof(address));
                CakeAssert.IsArgumentNullException(spaceRecord, nameof(address));
            }