public async Task GivenAnEntityThatHasAllRequiredValues_ThenItReturnsStatusCodeOk()
        {
            using (var testHelper = new UnitTestingDemoApiHelper(TestLogger))
            {
                var entity = ObjectBuilder.CreateDemoEntity();

                await testHelper.PostAsJsonAsync("api/demo", entity);
            }
        }
        public async Task GivenThatThereDoesNotExistAnEntityThatMatchesTheProvidedId_ThenTheResponseStatusCodeShouldBeBadRequest()
        {
            using (var testHelper = new UnitTestingDemoApiHelper(TestLogger))
            {
                var response = await testHelper.GetAsync("api/demo/f3f9c0b6-622e-4aa0-9bed-1e7fc2be6db3", ensureSuccessStatusCode : false);

                Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
            }
        }
        public void GivenThatThereAreTwoValues_ThenItReturnsAnArrayWithTwoValues()
        {
            using (var testHelper = new UnitTestingDemoApiHelper(_outputHelper.WriteLine))
            {
                var response = testHelper.GetAsync("api/values").GetAwaiter().GetResult();

                ApprovalsHelper.Verify(response.BodyAsJsonFormattedString, "ResponseWithTwoValues");
            }
        }
        public void GivenThatThereExistAnEntityThatMatchesTheProvidedId_ThenTheResponseShouldContainTheExpectedEntity()
        {
            using (var testHelper = new UnitTestingDemoApiHelper(TestLogger))
            {
                var entity = ObjectBuilder.CreateDemoEntity();
                testHelper.ArrangeData(entity);

                var response = testHelper.GetAsync("api/demo/f3f9c0b6-622e-4aa0-9bed-1e7fc2be6db3").GetAwaiter().GetResult();

                ApprovalsHelper.Verify(response.BodyAsJsonFormattedString, "EntityThatMatchesProvidedId");
            }
        }
        public void GivenAnEntityThatIsMissingRequiredValue_ThenItReturnsStatusCodeBadRequestWithErrorMessage()
        {
            using (var testHelper = new UnitTestingDemoApiHelper(TestLogger))
            {
                var entity = ObjectBuilder.CreateDemoEntity(
                    importantProperty: null);

                var response = testHelper.PostAsJsonAsync("api/demo", entity, ensureSuccessStatusCode: false).GetAwaiter().GetResult();

                Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
                ApprovalsHelper.Verify(response.BodyAsJsonFormattedString, "ErrorWhenRequiredValueIsMissing");
            }
        }