public void DeleteCustomerTest_InvalidId_ThrowsCustomerNotFoundException()
        {
            var mediator = TestMediatorFactory.BuildMediator(_dbContext);

            var command = new DeleteCustomerCommand
            {
                Id = new Guid("55000000-0000-0000-0000-000000000000")
            };

            Assert.Throws <CustomerNotFoundException>(() => mediator.Send(command).GetAwaiter().GetResult());
        }
        public void CustomerQueryTest_EmptySearch_ReturnsAllCustomers()
        {
            var mediator = TestMediatorFactory.BuildMediator(_dbContext);

            var command = new CustomerQuery
            {
                SearchText = ""
            };

            var result = mediator.Send(command).GetAwaiter().GetResult();

            Assert.Equal(3, result.Count());
        }
        public void CustomerQueryTest_SearchTermNotMatchingAnyCustomer_ReturnsNoCustomers()
        {
            var mediator = TestMediatorFactory.BuildMediator(_dbContext);

            var command = new CustomerQuery
            {
                SearchText = "41234132413414"
            };

            var result = mediator.Send(command).GetAwaiter().GetResult();

            Assert.Empty(result);
        }
        public void CustomerQueryTest_PartialFirstNameQuery_SearchReturnsMatchingCustomers()
        {
            var mediator = TestMediatorFactory.BuildMediator(_dbContext);


            var command = new CustomerQuery
            {
                SearchText = "Jo"
            };

            var result = mediator.Send(command).GetAwaiter().GetResult();

            Assert.Equal(2, result.Count());
        }
        public void CustomerQueryTest_FirstNameQuery_SearchReturnsMatchingCustomers()
        {
            var mediator = TestMediatorFactory.BuildMediator(_dbContext);


            var command = new CustomerQuery
            {
                SearchText = "John"
            };

            var result = mediator.Send(command).GetAwaiter().GetResult();

            Assert.Single(result);
        }
        public void DeleteCustomerTest_CustomerShouldBeDeleted()
        {
            var mediator = TestMediatorFactory.BuildMediator(_dbContext);

            var c = _dbContext.Customers.ToList();

            var command = new DeleteCustomerCommand
            {
                Id = new Guid("10000000-0000-0000-0000-000000000000"),
            };

            mediator.Send(command).GetAwaiter().GetResult();
            Assert.Equal(2, _dbContext.Customers.Count());
        }
        public void EditCustomerTest_InvalidId_ThrowsCustomerNotFoundException()
        {
            var mediator = TestMediatorFactory.BuildMediator(_dbContext);

            var command = new EditCustomerCommand
            {
                Id          = new Guid("55000000-0000-0000-0000-000000000000"),
                FirstName   = "John edited",
                LastName    = "Doe edited",
                DateOfBirth = new DateTime(2000, 1, 2)
            };

            Assert.Throws <CustomerNotFoundException>(() => mediator.Send(command).GetAwaiter().GetResult());
        }
        public void CreateCustomerTest_CustomerShouldBeCreated()
        {
            var mediator = TestMediatorFactory.BuildMediator(_dbContext);

            var c = _dbContext.Customers.ToList();

            var command = new CreateCustomerCommand
            {
                FirstName   = "Tom",
                LastName    = "Read",
                DateOfBirth = new DateTime(2000, 1, 1)
            };

            mediator.Send(command).GetAwaiter().GetResult();
            Assert.Equal(4, _dbContext.Customers.Count());
        }
        public void EditCustomerTest_FieldsShouldBeEdited()
        {
            var mediator = TestMediatorFactory.BuildMediator(_dbContext);

            var command = new EditCustomerCommand
            {
                Id          = new Guid("20000000-0000-0000-0000-000000000000"),
                FirstName   = "John edited",
                LastName    = "Doe edited",
                DateOfBirth = new DateTime(2000, 1, 2)
            };

            mediator.Send(command).GetAwaiter().GetResult();

            var johnEdited = _dbContext.Customers.First(x => x.Id == new Guid("20000000-0000-0000-0000-000000000000"));

            Assert.Equal("John edited", johnEdited.FirstName);
            Assert.Equal("Doe edited", johnEdited.LastName);
            Assert.Equal(new DateTime(2000, 1, 2), johnEdited.DateOfBirth);
        }