Exemple #1
0
        public void IntegrationTest()
        {
            var unsortedPeople = new List<Person>
            {
                new Person("BFirst", "BLast"),
                new Person("AFirst", "ALast")
            };

            var sortedPeople = new List<Person>
            {
                new Person("AFirst", "ALast"),
                new Person("BFirst", "BLast")
            };

            // Arrange
            var dataSource = Substitute.For<IPersonDataSource>();
            dataSource.GetPeople().Returns(unsortedPeople);

            var sortStrategy = Substitute.For<ISortStrategy>();
            sortStrategy.Sort(unsortedPeople).Returns(sortedPeople);

            var displayer = Substitute.For<IPeopleDisplayer>();
            displayer.DisplayPeople(sortedPeople).Returns(true);

            // Act
            var execution = new SortNamesExecution(dataSource, sortStrategy, new IPeopleDisplayer[] { displayer });
            bool result = execution.Run();

            // Assert
            Assert.IsTrue(result);
            dataSource.Received().GetPeople();
            sortStrategy.Received().Sort(unsortedPeople);
            displayer.Received().DisplayPeople(sortedPeople);
        }
Exemple #2
0
        public void GivenMultipleDisplayers_ThenAllDisplayersAreTriggered()
        {
            var sortedPeople = new List<Person>
            {
                new Person("AFirst", "ALast"),
                new Person("BFirst", "BLast")
            };

            // Arrange
            var dataSource = Substitute.For<IPersonDataSource>();
            var sortStrategy = Substitute.For<ISortStrategy>();
            sortStrategy.Sort(Arg.Any<IEnumerable<Person>>()).Returns(sortedPeople);

            var displayer1 = Substitute.For<IPeopleDisplayer>();
            displayer1.DisplayPeople(Arg.Any<IEnumerable<Person>>()).Returns(true);

            var displayer2 = Substitute.For<IPeopleDisplayer>();
            displayer2.DisplayPeople(Arg.Any<IEnumerable<Person>>()).Returns(true);

            // Act
            var execution = new SortNamesExecution(dataSource, sortStrategy, new IPeopleDisplayer[] { displayer1, displayer2 });
            var result = execution.Run();

            // Assert
            Assert.IsTrue(result);
            displayer1.Received().DisplayPeople(sortedPeople);
            displayer2.Received().DisplayPeople(sortedPeople);
        }
Exemple #3
0
        public void WhenDataSourceFails_ThenExecutionFails()
        {
            // Arrange
            var dataSource = Substitute.For<IPersonDataSource>();
            dataSource.GetPeople().Returns((IEnumerable<Person>)null);
            var sortStrategy = Substitute.For<ISortStrategy>();
            var displayer = Substitute.For<IPeopleDisplayer>();

            // Act
            var execution = new SortNamesExecution(dataSource, sortStrategy, new IPeopleDisplayer[] { displayer });
            var result = execution.Run();

            // Assert
            sortStrategy.DidNotReceiveWithAnyArgs().Sort(null);
            displayer.DidNotReceiveWithAnyArgs().DisplayPeople(null);
            Assert.IsFalse(result);
        }