Exemplo n.º 1
0
        private EmployeeComposite CreateSuperiorComposite()
        {
            var superiorEmployee = SuperiorEmployee;

            var subordinatedEmployee1 = SubordinatedEmployee1;
            var subordinatedEmployee2 = SubordinatedEmployee2;

            var subordinatedComposite1 = new EmployeeComposite(subordinatedEmployee1);
            var subordinatedComposite2 = new EmployeeComposite(subordinatedEmployee2);

            var superiroComposite = new EmployeeComposite(superiorEmployee);

            superiroComposite.Add(subordinatedComposite1);
            superiroComposite.Add(subordinatedComposite2);

            return(superiroComposite);
        }
        public void EmployeeComposite_Accept_AllSuboridinatesAcceptShouldBeCalled()
        {
            // Arrange
            var mockSubordinate1 = new Mock <EmployeeLeaf>(SubordinatedEmployee1);
            var mockSubordinate2 = new Mock <EmployeeLeaf>(SubordinatedEmployee2);

            employeeComposite.Add(mockSubordinate1.Object);
            employeeComposite.Add(mockSubordinate2.Object);

            IEmployeeVisitor visitor = mockVisitor.Object;

            // Act
            employeeComposite.Accept(visitor);

            // Assert
            mockSubordinate1.Verify(mock => mock.Accept(It.Is <IEmployeeVisitor>(e => e == visitor)), Times.Once);
            mockSubordinate2.Verify(mock => mock.Accept(It.Is <IEmployeeVisitor>(e => e == visitor)), Times.Once);
        }