Exemplo n.º 1
0
        public void ProductApplicationMediatorService_ShouldHandlerNewTypeOfService()
        {
            //arrange
            var businessLoansHandler = new Mock <IProductApplicationHandler>();
            var personalLoadHandler  = new Mock <IProductApplicationHandler>();

            businessLoansHandler.Setup(m => m.CanHandle(It.IsAny <BusinessLoans>())).Returns(true);
            personalLoadHandler.Setup(m => m.CanHandle(It.IsAny <PersonalLoans>())).Returns(true);

            var sellerApplication = new Mock <ISellerApplication>();

            sellerApplication.SetupProperty(p => p.CompanyData, new SellerCompanyData());
            sellerApplication.SetupProperty(p => p.Product, new PersonalLoans());

            var sut = new ProductApplicationMediatorService(new List <IProductApplicationHandler> {
                businessLoansHandler.Object, personalLoadHandler.Object
            });

            //act
            sut.SubmitApplicationFor(sellerApplication.Object);

            //assert
            personalLoadHandler.Verify(x => x.Handle(sellerApplication.Object), Times.Once());
            businessLoansHandler.Verify(x => x.Handle(sellerApplication.Object), Times.Never());
        }
Exemplo n.º 2
0
        public void ProductApplicationMediatorService_ForMultipleMatchingHandlers_ShouldThrow()
        {
            //arrange
            var businessLoansHandler1 = new Mock <IProductApplicationHandler>();
            var businessLoansHandler2 = new Mock <IProductApplicationHandler>();

            businessLoansHandler1.Setup(m => m.CanHandle(It.IsAny <BusinessLoans>())).Returns(true);
            businessLoansHandler2.Setup(m => m.CanHandle(It.IsAny <BusinessLoans>())).Returns(true);

            var sellerApplication = new Mock <ISellerApplication>();

            sellerApplication.SetupProperty(p => p.CompanyData, new SellerCompanyData());
            sellerApplication.SetupProperty(p => p.Product, new BusinessLoans());

            var sut = new ProductApplicationMediatorService(new List <IProductApplicationHandler> {
                businessLoansHandler1.Object, businessLoansHandler2.Object
            });

            //assert
            Assert.Throws <InvalidApplicationException>(() => _sut.SubmitApplicationFor(_sellerApplication.Object));
        }