public void GivenThisExistingCustomer(Table table)
        {
            var values = table.Rows.Single();

            _actor.AttemptsTo(DeleteCustomers.WithName(values["Name"]));

            _storedCustomer = new CustomerInfo(
                values["Title"],
                values["Name"],
                values["Address Line 1"],
                values["Address Line 2"],
                values["Address Line 3"],
                values["Postcode"],
                values["Home Phone"],
                values["Mobile"],
                1);

            _actor.AttemptsTo(
                InsertCustomer.Named(values["Name"])
                .Titled(values["Title"])
                .OfAddress(
                    values["Address Line 1"],
                    values["Address Line 2"],
                    values["Address Line 3"],
                    values["Postcode"])
                .WithHomePhone(values["Home Phone"])
                .WithMobile(values["Mobile"]));
        }
示例#2
0
        public object Post(InsertCustomer request)
        {
            var entity = request.ConvertTo <Customer>();

            return(InTransaction(db =>
            {
                Logic.Add(entity);
                return new CommonResponse(Logic.GetById(entity.Id));
            }));
        }
示例#3
0
        public async Task Can_Insert_Customer()
        {
            // Arrange
            var insertCustomerCommand = new InsertCustomer("Innovation", "somecrazynamethatdoesnotexistyet");

            // Act
            var dispatcher = this.GetDispatcher();
            var insertCustomerCommandResult = await dispatcher.Command(insertCustomerCommand, false);

            // Assert
            Assert.True(insertCustomerCommandResult.Success);
        }
示例#4
0
        public void Can_Handle_Insert_Customer()
        {
            // Arrange
            var insertCustomerCommand = new InsertCustomer("Innovation", "somecrazynamethatdoesnotexistyet");

            // Act
            var dispatcher = this.GetDispatcher();
            var canCommand = dispatcher.CanCommand(insertCustomerCommand);

            // Assert
            Assert.True(canCommand);
        }
示例#5
0
        public async Task Can_Handle_Validation_Attributes()
        {
            // Arrange
            var insertCustomerCommand = new InsertCustomer("I", "somecrazynamethatdoesnotexistyet");

            // Act
            var dispatcher    = this.GetDispatcher();
            var commandResult = (await dispatcher.Command(insertCustomerCommand)).As <CommandResult>();

            // Assert
            Assert.False(commandResult.Success);
            Assert.Equal("Name needs to be between 3 and 30 characters", commandResult.Errors[0]);
        }
示例#6
0
        public async Task Can_Run_Intercept_Expecting_True()
        {
            // Arrange
            var insertCustomerCommand = new InsertCustomer("Innovation", "louislewis2");

            // Act
            var dispatcher = this.GetDispatcher();
            var insertCustomerCommandResult = await dispatcher.Command(insertCustomerCommand, false);

            // Assert
            Assert.NotNull(insertCustomerCommand.ExistsOnGithub);
            Assert.True(insertCustomerCommand.ExistsOnGithub.Value);
        }
示例#7
0
        public async Task Can_Run_Intercept_Expecting_False()
        {
            // Arrange
            var insertCustomerCommand = new InsertCustomer("Innovation", "somecrazynamethatdoesnotexistyet");

            // Act
            var dispatcher = this.GetDispatcher();
            var insertCustomerCommandResult = await dispatcher.Command(insertCustomerCommand, false);

            // Assert
            Assert.NotNull(insertCustomerCommand.ExistsOnGithub);
            Assert.False(insertCustomerCommand.ExistsOnGithub.Value);
        }
示例#8
0
        public async Task Can_Insert_Customer()
        {
            // Arrange
            var insertCustomerCriteria = new CustomerCriteria(
                name: "Innovation",
                userName: "******");
            var insertCustomerCommand = new InsertCustomer(customerCriteria: insertCustomerCriteria);

            // Act
            var dispatcher = this.GetDispatcher();
            var insertCustomerCommandResult = await dispatcher.Command(command : insertCustomerCommand, suppressExceptions : false);

            // Assert
            Assert.True(condition: insertCustomerCommandResult.Success);
        }
示例#9
0
        public void Can_Handle_Insert_Customer()
        {
            // Arrange
            var insertCustomerCriteria = new CustomerCriteria(
                name: "Innovation",
                userName: "******");
            var insertCustomerCommand = new InsertCustomer(customerCriteria: insertCustomerCriteria);

            // Act
            var dispatcher = this.GetDispatcher();
            var canCommand = dispatcher.CanCommand(command: insertCustomerCommand);

            // Assert
            Assert.True(condition: canCommand);
        }
示例#10
0
        public async Task Can_Run_Intercept_Expecting_True()
        {
            // Arrange
            var insertCustomerCriteria = new CustomerCriteria(
                name: "Innovation",
                userName: "******");
            var insertCustomerCommand = new InsertCustomer(customerCriteria: insertCustomerCriteria);

            // Act
            var dispatcher = this.GetDispatcher();
            var insertCustomerCommandResult = await dispatcher.Command(command : insertCustomerCommand, suppressExceptions : false);

            // Assert
            Assert.NotNull(@object: insertCustomerCommand.Criteria.ExistsOnGithub);
            Assert.True(condition: insertCustomerCommand.Criteria.ExistsOnGithub.Value);
        }
示例#11
0
        public async Task Can_Handle_Validation_Attributes()
        {
            // Arrange
            var insertCustomerCriteria = new CustomerCriteria(
                name: "I",
                userName: "******");
            var insertCustomerCommand = new InsertCustomer(customerCriteria: insertCustomerCriteria);

            // Act
            var dispatcher = this.GetDispatcher();
            var commandResult = (await dispatcher.Command(command: insertCustomerCommand)).As<CommandResult>();

            // Assert
            Assert.False(condition: commandResult.Success);
            Assert.Equal(expected: "Name needs to be between 3 and 30 characters", actual: commandResult.Errors[0]);
        }
示例#12
0
        public async Task Can_Handle_Min_Length_Validation_Attributes()
        {
            // Arrange
            var insertCustomerCriteria = new CustomerCriteria(name: "aa", userName: "******");
            var insertCustomerCommand = new InsertCustomer(customerCriteria: insertCustomerCriteria);

            // Act
            var dispatcher = this.GetDispatcher();
            var commandResult = (await dispatcher.Command(command: insertCustomerCommand)).As<CommandResult>();

            // Assert
            Assert.False(condition: commandResult.Success);
            Assert.Equal(expected: 2, actual: commandResult.Errors.Length);
            Assert.Equal(expected: "Name needs to be between 3 and 30 characters", actual: commandResult.Errors[0]);
            Assert.Equal(expected: "UserName needs to be between 10 and 35 characters", actual: commandResult.Errors[1]);
        }
示例#13
0
        public async Task Can_Handle_Required_Validation_Attributes()
        {
            // Arrange
            var insertCustomerCriteria = new CustomerCriteria(name: null, userName: null);
            var insertCustomerCommand = new InsertCustomer(customerCriteria: insertCustomerCriteria);

            // Act
            var dispatcher = this.GetDispatcher();
            var commandResult = (await dispatcher.Command(command: insertCustomerCommand)).As<CommandResult>();

            // Assert
            Assert.False(condition: commandResult.Success);
            Assert.Equal(expected: 2, actual: commandResult.Errors.Length);
            Assert.Equal(expected: "The Name field is required.", actual: commandResult.Errors[0]);
            Assert.Equal(expected: "The UserName field is required.", actual: commandResult.Errors[1]);
        }
 public void GivenTheFollowingCustomers(Table table)
 {
     table.Rows.ForEach(values =>
     {
         _actor.AttemptsTo(
             DeleteCustomers.WithName(values["Name"]),
             InsertCustomer.Named(values["Name"])
             .Titled(values["Title"])
             .OfAddress(
                 values["Address Line 1"],
                 values["Address Line 2"],
                 values["Address Line 3"],
                 values["Postcode"])
             .WithHomePhone(values["Home Phone"])
             .WithMobile(values["Mobile"]));
     });
 }
示例#15
0
        public async Task Can_Handle_Regex_Validation_Attributes()
        {
            // Arrange
            var insertCustomerCriteria = new CustomerCriteria(
                name: "0123#",
                userName: "******");
            var insertCustomerCommand = new InsertCustomer(customerCriteria: insertCustomerCriteria);

            // Act
            var dispatcher = this.GetDispatcher();
            var commandResult = (await dispatcher.Command(command: insertCustomerCommand)).As<CommandResult>();

            // Assert
            Assert.False(condition: commandResult.Success);
            Assert.Equal(expected: 2, actual: commandResult.Errors.Length);
            Assert.Equal(expected: "Name only allows alphanumeric characters", actual: commandResult.Errors[0]);
            Assert.Equal(expected: "UserName only allows alphanumeric characters", actual: commandResult.Errors[1]);
        }
示例#16
0
        public void GivenThisExistingCustomer(Table table)
        {
            var values = table.Rows.Single();

            _actor.AttemptsTo(DeleteCustomers.WithName(values["Name"]));

            _actor.AttemptsTo(
                InsertCustomer.Named(values["Name"])
                .Titled(values.GetStringOrDefault("Title"))
                .OfAddress(
                    values.GetStringOrDefault("Address Line 1"),
                    values.GetStringOrDefault("Address Line 2"),
                    values.GetStringOrDefault("Address Line 3"),
                    values.GetStringOrDefault("Postcode"))
                .WithHomePhone(values.GetStringOrDefault("Home Phone"))
                .WithMobile(values.GetStringOrDefault("Mobile"))
                .WithAccountInvoicingSetTo(values.GetBoolOrDefault("Account Invoicing")));

            _storedCustomer = _actor.AsksFor(StoredCustomer.WithName(values["Name"]));
        }