public async Task Post_HttpStatusCodeUnauthorizedTestAsync()
        {
            var customer = CustomerViewModelMock.GetCustomer();

            var response = await _httpClient.PostAsync("/api/v1/customers", new StringContent(JsonConvert.SerializeObject(customer)));

            Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
        }
        public async Task GetById_HttpStatusCodeUnauthorizedTestAsync()
        {
            var id         = 1;
            var customerId = CustomerViewModelMock.GetCustomerId(id);

            var response = await _httpClient.GetAsync($"/api/v1/customers/{customerId}");

            Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
        }
        public async Task GetByName_HttpStatusCodeUnauthorizedTestAsync()
        {
            var name         = "Diuor PleaBolosmakh";
            var customerName = CustomerViewModelMock.GetCustomerName(name);

            var response = await _httpClient.GetAsync($"/api/v1/customers/name/{customerName}");

            Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
        }
        public async Task Delete_NotFoundTestAsync()
        {
            var id         = 1;
            var customerId = CustomerViewModelMock.GetCustomerId(id);
            var customer   = CustomerViewModelMock.GetCustomer();

            var customerController = new CustomerController(_customerServiceMock.Object);
            var customerService    = await customerController.Delete(customerId);

            var actionResult = Assert.IsType <NotFoundResult>(customerService);

            Assert.Equal(StatusCodes.Status404NotFound, actionResult.StatusCode);
        }
        public void Post_FailTestAsync()
        {
            CustomerViewModel customer = null;

            _customerServiceMock.Setup(x => x.Add(customer))
            .Returns(CustomerViewModelMock.GetCustomer());

            var customerController = new CustomerController(_customerServiceMock.Object);
            var customerService    = customerController.Post(customer);

            var actionResult = Assert.IsType <NotFoundResult>(customerService.Result);

            Assert.Equal(StatusCodes.Status404NotFound, actionResult.StatusCode);
        }
        public async Task GetAll_SucessTestAsync()
        {
            _customerServiceMock.Setup(x => x.GetAllAsync())
            .ReturnsAsync(CustomerViewModelMock.GetCustomersAddress());

            var customerController = new CustomerController(_customerServiceMock.Object);
            var customerService    = await customerController.List();

            var actionResult = Assert.IsType <OkObjectResult>(customerService.Result);
            var actionValue  = Assert.IsAssignableFrom <IEnumerable <CustomerAddressViewModel> >(actionResult.Value);

            Assert.NotNull(actionResult);
            Assert.Equal(StatusCodes.Status200OK, actionResult.StatusCode);
        }
        public async Task Put_NotFoundTestAsync()
        {
            var id       = 1;
            var customer = CustomerViewModelMock.GetCustomer();

            _customerServiceMock.Setup(x => x.Update(customer));

            var customerController = new CustomerController(_customerServiceMock.Object);
            var customerService    = await customerController.Put(id, customer);

            var actionResult = Assert.IsType <NotFoundResult>(customerService);

            Assert.Equal(StatusCodes.Status404NotFound, actionResult.StatusCode);
        }
        public void Remove_SucessTestAsync()
        {
            var customer = CustomerViewModelMock.GetCustomer();

            _mapperMock.Setup(x => x.Map <Customer>(It.IsAny <CustomerViewModel>()))
            .Returns(CustomerMock.GetCustomer());

            var customerService = new CustomerService(_customerRepositoryMock.Object,
                                                      _viaCEPServiceMock.Object, _domainNotificationMock.Object,
                                                      _unitOfWorkMock.Object, _mapperMock.Object);

            customerService.Remove(customer);

            Assert.NotNull(customer);
        }
        public void Post_SucessTestAsync()
        {
            var customer = CustomerViewModelMock.GetCustomer();

            _customerServiceMock.Setup(x => x.Add(customer))
            .Returns(CustomerViewModelMock.GetCustomer());

            var customerController = new CustomerController(_customerServiceMock.Object);
            var customerService    = customerController.Post(customer);

            var actionResult = Assert.IsType <CreatedResult>(customerService.Result);
            var actionValue  = Assert.IsType <CustomerViewModel>(actionResult.Value);

            Assert.NotNull(actionValue);
            Assert.Equal(StatusCodes.Status201Created, actionResult.StatusCode);
        }
        public async Task GetByName_SucessTestAsync()
        {
            var name         = "Zier Zuveiku";
            var customerName = CustomerViewModelMock.GetCustomerName(name);

            _customerServiceMock.Setup(x => x.GetAddressByNameAsync(customerName))
            .ReturnsAsync(CustomerViewModelMock.GetCustomerAddress());

            var customerController = new CustomerController(_customerServiceMock.Object);
            var customerService    = await customerController.Get(customerName);

            var actionResult = Assert.IsType <OkObjectResult>(customerService.Result);
            var actionValue  = Assert.IsType <CustomerAddressViewModel>(actionResult.Value);

            Assert.NotNull(actionResult);
            Assert.Equal(StatusCodes.Status200OK, actionResult.StatusCode);
        }
        public async Task Delete_SucessTestAsync()
        {
            var id         = 1;
            var customerId = CustomerViewModelMock.GetCustomerId(id);
            var customer   = CustomerViewModelMock.GetCustomer();

            _customerServiceMock.Setup(x => x.GetByIdAsync(customerId))
            .ReturnsAsync(customer);

            _customerServiceMock.Setup(x => x.Remove(customer));

            var customerController = new CustomerController(_customerServiceMock.Object);
            var customerService    = await customerController.Delete(customerId);

            var actionResult = Assert.IsType <NoContentResult>(customerService);

            Assert.Equal(StatusCodes.Status204NoContent, actionResult.StatusCode);
        }
        public async Task GetAddressByIdAsync_ReturnCustomerAddressViewModelTestAsync()
        {
            int id         = 1;
            var customerId = CustomerViewModelMock.GetCustomerId(id);

            _customerRepositoryMock.Setup(x => x.GetAddressByIdAsync(id))
            .ReturnsAsync(CustomerMock.GetCustomerAddress());

            _mapperMock.Setup(x => x.Map <CustomerAddressViewModel>(It.IsAny <CustomerAddress>()))
            .Returns(CustomerViewModelMock.GetCustomerAddress());

            var customerService = new CustomerService(_customerRepositoryMock.Object,
                                                      _viaCEPServiceMock.Object, _domainNotificationMock.Object,
                                                      _unitOfWorkMock.Object, _mapperMock.Object);

            var customeMethod = await customerService.GetAddressByIdAsync(customerId);

            var customerResult = Assert.IsAssignableFrom <CustomerAddressViewModel>(customeMethod);

            Assert.NotNull(customerResult);
        }
        public void Add_ReturnCustomerViewModelTestAsync()
        {
            var customer = CustomerViewModelMock.GetCustomer();

            _mapperMock.Setup(x => x.Map <Customer>(It.IsAny <CustomerViewModel>()))
            .Returns(CustomerMock.GetCustomer());

            _mapperMock.Setup(x => x.Map <CustomerViewModel>(It.IsAny <Customer>()))
            .Returns(CustomerViewModelMock.GetCustomer());

            _customerRepositoryMock.Setup(x => x.GetByNameAsync(customer.Name))
            .ReturnsAsync(CustomerMock.GetCustomerAddress());

            var customerService = new CustomerService(_customerRepositoryMock.Object,
                                                      _viaCEPServiceMock.Object, _domainNotificationMock.Object,
                                                      _unitOfWorkMock.Object, _mapperMock.Object);

            customerService.Add(customer);

            Assert.NotNull(customer);
        }
        public async Task GetAddressByNameAsync_ReturnCustomerAddressViewModelTestAsync()
        {
            var name         = "Diuor PleaBolosmakh";
            var customerName = CustomerViewModelMock.GetCustomerName(name);

            _customerRepositoryMock.Setup(x => x.GetByNameAsync(name))
            .ReturnsAsync(CustomerMock.GetCustomerAddress());

            _mapperMock.Setup(x => x.Map <CustomerAddressViewModel>(It.IsAny <CustomerAddress>()))
            .Returns(CustomerViewModelMock.GetCustomerAddress());

            var customerService = new CustomerService(_customerRepositoryMock.Object,
                                                      _viaCEPServiceMock.Object, _domainNotificationMock.Object,
                                                      _unitOfWorkMock.Object, _mapperMock.Object);

            var customeMethod = await customerService.GetAddressByNameAsync(customerName);

            var customerResult = Assert.IsAssignableFrom <CustomerAddressViewModel>(customeMethod);

            Assert.NotNull(customerResult);
        }
        public async Task GetAll_ReturnCustomerAddressViewModelTestAsync()
        {
            var cep = "17052520";

            _customerRepositoryMock.Setup(x => x.GetAllAsync())
            .ReturnsAsync(CustomerMock.GetCustomersAddress());

            _mapperMock.Setup(x => x.Map <IEnumerable <CustomerAddressViewModel> >(It.IsAny <IEnumerable <CustomerAddress> >()))
            .Returns(CustomerViewModelMock.GetCustomersAddress());

            _viaCEPServiceMock.Setup(x => x.GetByCEPAsync(cep))
            .ReturnsAsync(ViaCEPMock.GetCEP());

            var customerService = new CustomerService(_customerRepositoryMock.Object,
                                                      _viaCEPServiceMock.Object, _domainNotificationMock.Object,
                                                      _unitOfWorkMock.Object, _mapperMock.Object);

            var customeMethod = await customerService.GetAllAsync();

            var customerResult = Assert.IsAssignableFrom <IEnumerable <CustomerAddressViewModel> >(customeMethod);

            Assert.NotNull(customerResult);
            Assert.NotEmpty(customerResult);
        }