示例#1
0
        public void CloseAccountCommand_Execute_Should_Call_Writer_With_Correct_Output()
        {
            // Arrange
            var writer         = new Mock <IWriter>();
            var userRepo       = new Mock <IUserRepository>();
            var accountingRepo = new Mock <IAccountingRepository>();
            var user           = new Mock <IUser>();

            user.Setup(x => x.PhoneNumber).Returns("123456");
            user.Setup(x => x.Bill).Returns(10m);
            user.Setup(x => x.FirstName).Returns("firstName");
            user.Setup(x => x.LastName).Returns("lastName");
            userRepo.SetupGet(x => x.Users).Returns(new List <IUser>()
            {
                user.Object
            });
            var command = new CloseAccountCommand(userRepo.Object, accountingRepo.Object, writer.Object);

            command.Parameters = new List <string>()
            {
                "closeaccount", "123456"
            };

            // Act
            command.Execute();

            // Assert
            writer.Verify(x => x.WriteLine("firstName lastName's account was closed"));
        }
示例#2
0
        public void CloseAccountCommand_Execute_Should_Call_UserBill_Twice()
        {
            // Arrange
            var writer         = new Mock <IWriter>();
            var userRepo       = new Mock <IUserRepository>();
            var accountingRepo = new Mock <IAccountingRepository>();
            var user           = new Mock <IUser>();

            user.Setup(x => x.PhoneNumber).Returns("123456");
            user.Setup(x => x.Bill).Returns(10m);
            userRepo.SetupGet(x => x.Users).Returns(new List <IUser>()
            {
                user.Object
            });
            var command = new CloseAccountCommand(userRepo.Object, accountingRepo.Object, writer.Object);

            command.Parameters = new List <string>()
            {
                "closeaccount", "123456"
            };

            // Act
            command.Execute();

            // Assert
            user.Verify(x => x.Bill, Times.AtLeastOnce);
        }
示例#3
0
        public void CloseAccountCommand_Execute_Should_Throw_ArgumentNullException_When_User_Not_Found()
        {
            // Arrange
            var writer         = new Mock <IWriter>();
            var userRepo       = new Mock <IUserRepository>();
            var accountingRepo = new Mock <IAccountingRepository>();
            var user           = new Mock <IUser>();

            user.Setup(x => x.PhoneNumber).Returns("123456");
            userRepo.SetupGet(x => x.Users).Returns(new List <IUser>()
            {
                user.Object
            });
            var command = new CloseAccountCommand(userRepo.Object, accountingRepo.Object, writer.Object);

            command.Parameters = new List <string>()
            {
                "closeaccount", "111111"
            };

            // Act  & Assert
            Assert.ThrowsException <ArgumentNullException>(() => command.Execute());
        }