コード例 #1
0
            public void GetCustomers_NoCustomersFound_ThrowsHttpRequestException(
                [Frozen] MockHttpMessageHandler handler,
                [Frozen] HttpClient httpClient,
                Uri uri,
                CustomerApiClient sut
                )
            {
                //Arrange
                httpClient.BaseAddress = uri;

                handler.When(HttpMethod.Get, $"{uri}*")
                .Respond(HttpStatusCode.NotFound);

                //Act
                Func <Task> func = async() => await sut.GetCustomersAsync(
                    0,
                    10,
                    null,
                    null,
                    null
                    );

                //Assert
                func.Should().Throw <HttpRequestException>()
                .WithMessage("Response status code does not indicate success: 404 (Not Found).");
            }
コード例 #2
0
            public async Task GetCustomers_IndividualCustomersFound_ReturnsIndividualCustomer(
                [Frozen] MockHttpMessageHandler handler,
                [Frozen] HttpClient httpClient,
                Uri uri,
                List <models.GetCustomers.IndividualCustomer> list,
                CustomerApiClient sut
                )
            {
                //Arrange
                foreach (var item in list)
                {
                    item.CustomerType = CustomerType.Individual;
                }

                var customers = new models.GetCustomers.GetCustomersResponse
                {
                    Customers      = list.ToList <models.GetCustomers.Customer>(),
                    TotalCustomers = list.Count
                };

                httpClient.BaseAddress = uri;

                handler.When(HttpMethod.Get, $"{uri}*")
                .Respond(HttpStatusCode.OK,
                         new StringContent(
                             JsonSerializer.Serialize(customers, new JsonSerializerOptions
                {
                    Converters =
                    {
                        new JsonStringEnumConverter(),
                        new CustomerConverter <
                            models.GetCustomers.Customer,
                            models.GetCustomers.StoreCustomer,
                            models.GetCustomers.IndividualCustomer>()
                    },
                    IgnoreReadOnlyProperties = true,
                    PropertyNamingPolicy     = JsonNamingPolicy.CamelCase
                }),
                             Encoding.UTF8,
                             "application/json"
                             )
                         );

                //Act
                var response = await sut.GetCustomersAsync(
                    0,
                    10,
                    "territory",
                    CustomerType.Individual,
                    "accountNumber"
                    );

                //Assert
                response.TotalCustomers.Should().Be(list.Count);
                response.Customers.Should().BeEquivalentTo(list);
            }
コード例 #3
0
        public void SetupPact()
        {
            pact = new CustomerApiPact();
            mockProviderService = pact.MockProviderService;
            // NOTE: Clears any previously registered interactions before the test is run
            mockProviderService.ClearInteractions();
            mockProviderServiceBaseUri = pact.MockProviderServiceBaseUri;

            client = new CustomerApiClient(mockProviderServiceBaseUri);
        }
コード例 #4
0
            public async Task UpdateCustomer_IndividualCustomerFound_ReturnIndividualCustomer(
                [Frozen] MockHttpMessageHandler handler,
                [Frozen] HttpClient httpClient,
                Uri uri,
                models.UpdateCustomer.IndividualCustomer customer,
                CustomerApiClient sut
                )
            {
                //Arrange
                customer.CustomerType  = CustomerType.Individual;
                httpClient.BaseAddress = uri;

                handler.When(HttpMethod.Put, $"{uri}*")
                .Respond(HttpStatusCode.OK,
                         new StringContent(
                             JsonSerializer.Serialize(customer, new JsonSerializerOptions
                {
                    Converters =
                    {
                        new JsonStringEnumConverter(),
                        new CustomerConverter <
                            models.UpdateCustomer.Customer,
                            models.UpdateCustomer.StoreCustomer,
                            models.UpdateCustomer.IndividualCustomer>()
                    },
                    IgnoreReadOnlyProperties = true,
                    PropertyNamingPolicy     = JsonNamingPolicy.CamelCase
                }),
                             Encoding.UTF8,
                             "application/json"
                             )
                         );

                //Act
                var response = await sut.UpdateCustomerAsync("1", customer);

                //Assert
                response.Should().BeEquivalentTo(customer);
            }
コード例 #5
0
            public void GetPreferredAddress_CustomerNotFound_ThrowsHttpRequestException(
                [Frozen] MockHttpMessageHandler handler,
                [Frozen] HttpClient httpClient,
                Uri uri,
                string accountNumber,
                string addressType,
                CustomerApiClient sut
                )
            {
                //Arrange
                httpClient.BaseAddress = uri;

                handler.When(HttpMethod.Get, $"{uri}*")
                .Respond(HttpStatusCode.NotFound);

                //Act
                Func <Task> func = async() => await sut.GetPreferredAddressAsync(accountNumber, addressType);

                //Assert
                func.Should().Throw <CustomerApiClientException>()
                .WithInnerException <HttpRequestException>()
                .WithMessage("Response status code does not indicate success: 404 (Not Found).");
            }
コード例 #6
0
            public async Task GetPreferredAddress_AddressFound_ReturnAddress(
                [Frozen] MockHttpMessageHandler handler,
                [Frozen] HttpClient httpClient,
                Uri uri,
                string accountNumber,
                string addressType,
                models.GetPreferredAddress.Address address,
                CustomerApiClient sut
                )
            {
                //Arrange
                httpClient.BaseAddress = uri;

                handler.When(HttpMethod.Get, $"{uri}*")
                .Respond(HttpStatusCode.OK,
                         new StringContent(
                             JsonSerializer.Serialize(address, new JsonSerializerOptions
                {
                    Converters =
                    {
                        new JsonStringEnumConverter()
                    },

                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase
                }),
                             Encoding.UTF8,
                             "application/json"
                             )
                         );

                //Act
                var response = await sut.GetPreferredAddressAsync(accountNumber, addressType);

                //Assert
                response.Should().BeEquivalentTo(address);
            }