public async Task ShouldGetCorrectFooById()
        {
            // Arrange
            var expectedFoo = FooStubs.Foos[0];
            var url         = $"{apiBaseUrl}/{expectedFoo.Id}";

            // Act
            var response = await client.GetAsync(url);

            var foo = await response.GetResponseContent <Foo>();

            // Assert
            response.EnsureSuccessStatusCode(); // Status Code 200-299
            Assert.True(FooStubs.Matches(expectedFoo, foo));
        }
        public async Task ShouldUpdateFoo()
        {
            // Arrange
            var expectedFoo = FooStubs.Foos[0];

            expectedFoo.Name = "UpdatedName";
            var fooToBeUpdated = expectedFoo.GetAsSerializedString();

            // Act
            var response = await client.PutAsync(apiBaseUrl, fooToBeUpdated);

            var updatedFoo = await response.GetResponseContent <Foo>();

            // Assert
            Assert.True(FooStubs.Matches(expectedFoo, updatedFoo));
        }
        public async Task ShouldCreateFoo()
        {
            // Arrange
            var expectedFoo = new Foo()
            {
                Name = "Lorem ipsum",
            };
            var fooToBeCreated = expectedFoo.GetAsSerializedString();

            // Act
            var response = await client.PostAsync(apiBaseUrl, fooToBeCreated);

            var createdFoo = await response.GetResponseContent <Foo>();

            // Assert
            Assert.True(FooStubs.Matches(expectedFoo, createdFoo));
        }