Пример #1
0
        public async Task GetAllAsync_GetCustomersPreviewQuery_Can_Verify()
        {
            // Arrange
            var mockMediator = new Mock <IMediator>();

            mockMediator.Setup(x => x.Send(It.IsAny <GetCustomersPreviewQuery>(), It.IsAny <CancellationToken>())).ReturnsAsync(Customers);
            var mockMapper          = new Mock <IMapper>();
            var mockResponseFactory = new Mock <IResponseFactory>();
            var mockApiSettings     = new Mock <IOptionsSnapshot <ApiSettings> >();

            mockApiSettings.SetupGet(x => x.Value).Returns(ApiSettings);
            var sut = new CustomersController(mockMediator.Object, mockMapper.Object, mockResponseFactory.Object, mockApiSettings.Object);

            var pagingOptions = new PagingOptions
            {
                PageNumber = 1,
                PageSize   = 10
            };

            var sortOptions = new SortOptions
            {
                OrderBy = "Name"
            };

            var searchOptions = new SearchOptions
            {
                Query = "Jason"
            };

            // Act
            await sut.GetAllCustomersAsync(pagingOptions, sortOptions, searchOptions, default(CancellationToken));

            // Assert
            mockMediator.Verify(x => x.Send(It.IsAny <GetCustomersPreviewQuery>(), It.IsAny <CancellationToken>()));
        }
        public async Task GetAllCustomerAsync__An_unexpected_internal_error_occurred__Should_throw_Exception()
        {
            _customerDbServiceMock.Setup(x => x.GetAllAsync()).ThrowsAsync(new Exception());
            var controller = new CustomersController(_customerDbServiceMock.Object, _logger, _mapperMock.Object);

            Func <Task> result = async() => await controller.GetAllCustomersAsync();

            await result.Should().ThrowExactlyAsync <Exception>();
        }
        public async Task GetAllCustomerAsync__At_least_one_element_found__Should_return_200OK_response_with_not_empty_IEnumerable()
        {
            _customerDbServiceMock.Setup(x => x.GetAllAsync()).ReturnsAsync(_customers);
            _mapperMock.Setup(x => x.Map <IEnumerable <CustomerDto> >(It.IsNotNull <IEnumerable <Customer> >())).Returns(_customerDtos.AsEnumerable());
            var controller = new CustomersController(_customerDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.GetAllCustomersAsync();

            (result as ObjectResult).StatusCode.Should().Be(200);
            (((result as ObjectResult).Value as ResponseWrapper).Data as IEnumerable <CustomerDto>).Should().NotBeEmpty();
        }
        public async Task GetAllCustomerAsync__An_internal_error_reffered_to_the_database_occurred__Should_throw_InternalDbServiceException()
        {
            // Example of these errors: database does not exist, table does not exist etc.

            _customerDbServiceMock.Setup(x => x.GetAllAsync()).ThrowsAsync(new InternalDbServiceException());
            var controller = new CustomersController(_customerDbServiceMock.Object, _logger, _mapperMock.Object);

            Func <Task> result = async() => await controller.GetAllCustomersAsync();

            await result.Should().ThrowExactlyAsync <InternalDbServiceException>();
        }
Пример #5
0
        public async Task GetAllAsync_Returns_OK_200_Result_With_Correct_Data()
        {
            // Arrange
            var mockMediator = new Mock <IMediator>();

            mockMediator.Setup(x => x.Send(It.IsAny <GetCustomersPreviewQuery>(), It.IsAny <CancellationToken>())).ReturnsAsync(Customers);
            var mapper = Mapper;
            var mockResponseFactory = new Mock <IResponseFactory>();

            mockResponseFactory.Setup(x => x.CreatePagedReponse(It.IsAny <IList <Customer> >(), It.IsAny <Type>(), It.IsAny <IPreviewQuery>(), It.IsAny <ResponseStatus>(), It.IsAny <string>())).Returns(PagedCustomers);
            var mockApiSettings = new Mock <IOptionsSnapshot <ApiSettings> >();

            mockApiSettings.SetupGet(x => x.Value).Returns(ApiSettings);
            var sut = new CustomersController(mockMediator.Object, mapper, mockResponseFactory.Object, mockApiSettings.Object);

            var pagingOptions = new PagingOptions
            {
                PageNumber = 1,
                PageSize   = 10
            };

            var sortOptions = new SortOptions
            {
                OrderBy = "Name"
            };

            var searchOptions = new SearchOptions
            {
                Query = "Jason"
            };

            // Act
            var result = await sut.GetAllCustomersAsync(pagingOptions, sortOptions, searchOptions, default(CancellationToken));

            // Assert
            var response = result.Should().BeOfType <OkObjectResult>().Subject;

            response.StatusCode.Should().Equals(200);

            var customers = response.Value.Should().BeAssignableTo <PagedResponse <Customer> >().Subject;

            customers.Data.Select(x => x.Id == 1).Should().NotBeNull();
            customers.Data.Select(x => x.Firstname == "Jason").Should().NotBeNull();
            customers.Data.Count().Should().Equals(3);
        }
Пример #6
0
        public async Task GetAllAsync_Returns_OK_200_Result()
        {
            // Arrange
            var mockMediator = new Mock <IMediator>();

            mockMediator.Setup(x => x.Send(It.IsAny <GetCustomersPreviewQuery>(), It.IsAny <CancellationToken>())).ReturnsAsync(Customers);
            var mapper = Mapper;
            var mockResponseFactory = new Mock <IResponseFactory>();
            var mockApiSettings     = new Mock <IOptionsSnapshot <ApiSettings> >();

            mockApiSettings.SetupGet(x => x.Value).Returns(ApiSettings);
            var sut = new CustomersController(mockMediator.Object, mapper, mockResponseFactory.Object, mockApiSettings.Object);

            var pagingOptions = new PagingOptions
            {
                PageNumber = 1,
                PageSize   = 10
            };

            var sortOptions = new SortOptions
            {
                OrderBy = "Firstname"
            };

            var searchOptions = new SearchOptions
            {
                Query = "John"
            };

            // Act
            var result = await sut.GetAllCustomersAsync(pagingOptions, sortOptions, searchOptions, default(CancellationToken));

            // Assert
            var response = result.Should().BeOfType <OkObjectResult>().Subject;

            response.StatusCode.Should().Equals(200);
        }
        public async Task TestGetAllCustomers()
        {
            // Perform API call
            List <Raas.Models.CustomerModel> result = null;

            try
            {
                result = await controller.GetAllCustomersAsync();
            }
            catch (APIException) {};

            // Test response code
            Assert.AreEqual(200, httpCallBackHandler.Response.StatusCode,
                            "Status should be 200");

            // Test whether the captured response is as we expected
            Assert.IsNotNull(result, "Result should exist");

            Assert.IsTrue(TestHelper.IsArrayOfJsonObjectsProperSubsetOf(
                              "[\n  {\n    \"customerIdentifier\": \"sdkautotest1\",\n    \"displayName\": \"SDK Auto Testing 1\",\n    \"status\": \"active\",\n    \"createdAt\": \"2018-04-26T18:13:12.874Z\",\n    \"accounts\": [\n      {\n        \"accountIdentifier\": \"sdkautotest3\",\n        \"accountNumber\": \"A01335766\",\n        \"displayName\": \"SDK Auto Testing 3\",\n        \"createdAt\": \"2018-04-26T18:16:51.652Z\",\n        \"status\": \"ACTIVE\"\n      },\n      {\n        \"accountIdentifier\": \"sdkautotest2\",\n        \"accountNumber\": \"A11720237\",\n        \"displayName\": \"SDK Auto Testing 2\",\n        \"createdAt\": \"2018-04-26T18:13:45.196Z\",\n        \"status\": \"ACTIVE\"\n      }\n    ]\n  }\n]",
                              TestHelper.ConvertStreamToString(httpCallBackHandler.Response.RawBody),
                              true, true, false),
                          "Response body should have matching keys");
        }