Exemplo n.º 1
0
        public void ReturnEmptyCollction_WhenDeletedTripsAreMarkedAsFinished()
        {
            // Arrange
            var mockedTripRepo          = new Mock <IProjectableRepositoryEf <Trip> >();
            var mockedUserTripRepo      = new Mock <IProjectableRepositoryEf <UsersTrips> >();
            var mockedCityService       = new Mock <ICityService>();
            var mockedTagService        = new Mock <ITagService>();
            var mockedDateTimpeProvider = new Mock <IDateTimeProvider>();
            var mockedMappingProvider   = new Mock <IMappingProvider>();
            var mockedUnitOfWork        = new Mock <IUnitOfWorkEF>();

            var tripService = new TripService(
                () => mockedUnitOfWork.Object,
                mockedUserTripRepo.Object,
                mockedCityService.Object,
                mockedMappingProvider.Object,
                mockedTagService.Object,
                mockedTripRepo.Object,
                mockedDateTimpeProvider.Object);

            var data = new List <Trip>()
            {
                new Trip()
                {
                    IsDeleted = true, IsFinished = true
                },
                new Trip()
                {
                    IsDeleted = true, IsFinished = true
                },
                new Trip()
                {
                    IsDeleted = true, IsFinished = true
                }
            };

            IEnumerable <TripBasicInfo> expected = null;

            mockedTripRepo.Setup(x => x.GetAllMapped <TripBasicInfo>(It.IsAny <Expression <Func <Trip, bool> > >()))
            .Returns((Expression <Func <Trip, bool> > predicate) =>
            {
                expected = data.Where(predicate.Compile()).Select(x => new TripBasicInfo());
                return(expected);
            });

            // Act
            var result = tripService.GetDeletedTrips();

            // Assert
            Assert.AreEqual(0, result.Count());
            CollectionAssert.AreEqual(expected, result);
        }