예제 #1
0
        public void UpgradeMembershipProcessor_Process_ShouldUpgradeMembership_WhenOrderIsForMembership()
        {
            var membershipManagerMock = new Mock <MembershipManager>();

            membershipManagerMock.Setup(a => a.Activate(It.IsAny <MembershipDto>()));

            var emailMock = new Mock <EmailHandler>();

            emailMock.Setup(a => a.SendEmail(It.IsAny <EmailDto>()));

            var processor = new UpgradeMembershipProcessor(membershipManagerMock.Object, emailMock.Object);

            var order = new OrderDto
            {
                ProductType = ProductType.UpgradeMembership,
                Amount      = 100,
                Agent       = new AgentDto
                {
                    FirstName = "Rahul",
                    LastName  = "Dravid",
                    Email     = "*****@*****.**"
                }
            };

            var result = processor.Process(order);

            membershipManagerMock.Verify(a => a.Upgrade(It.IsAny <MembershipDto>()), Times.Once);
        }
예제 #2
0
        public void UpgradeMembershipProcessor_Process_ShouldNotProcessTheOrder_WhenOrderIsForOtherThanMembership()
        {
            var membershipManagerMock = new Mock <MembershipManager>();

            membershipManagerMock.Setup(a => a.Activate(It.IsAny <MembershipDto>()));

            var emailMock = new Mock <EmailHandler>();

            emailMock.Setup(a => a.SendEmail(It.IsAny <EmailDto>()));

            var processor = new UpgradeMembershipProcessor(membershipManagerMock.Object, emailMock.Object);

            var order = new OrderDto
            {
                ProductType = ProductType.Physical,
                Amount      = 100,
                Agent       = new AgentDto
                {
                    FirstName = "Rahul",
                    LastName  = "Dravid",
                    Email     = "*****@*****.**"
                }
            };

            var result = processor.Process(order);

            Assert.AreEqual(OrderStatus.Pending, result);
        }