public CruiseDataServiceTests()
        {
            _mockCruiseDataService = new MockCruiseDataService();
            var ships      = _mockCruiseDataService.InMemoryShipsData.AsQueryable();
            var bookings   = _mockCruiseDataService.InMemoryBookingsData.AsQueryable();
            var salesUnits = _mockCruiseDataService.InMemorySalesUnitData.AsQueryable();


            _mockShipSet      = new Mock <DbSet <Ship> >();
            _mockBookingSet   = new Mock <DbSet <Booking> >();
            _mockSalesUnitSet = new Mock <DbSet <SalesUnit> >();

            _mockShipSet.As <IQueryable <Ship> >().Setup(m => m.Provider).Returns(ships.Provider);
            _mockShipSet.As <IQueryable <Ship> >().Setup(m => m.Expression).Returns(ships.Expression);
            _mockShipSet.As <IQueryable <Ship> >().Setup(m => m.ElementType).Returns(ships.ElementType);
            _mockShipSet.As <IQueryable <Ship> >().Setup(m => m.GetEnumerator()).Returns(ships.GetEnumerator());

            _mockBookingSet.As <IQueryable <Booking> >().Setup(m => m.Provider).Returns(bookings.Provider);
            _mockBookingSet.As <IQueryable <Booking> >().Setup(m => m.Expression).Returns(bookings.Expression);
            _mockBookingSet.As <IQueryable <Booking> >().Setup(m => m.ElementType).Returns(bookings.ElementType);
            _mockBookingSet.As <IQueryable <Booking> >().Setup(m => m.GetEnumerator()).Returns(bookings.GetEnumerator());

            _mockSalesUnitSet.As <IQueryable <SalesUnit> >().Setup(m => m.Provider).Returns(salesUnits.Provider);
            _mockSalesUnitSet.As <IQueryable <SalesUnit> >().Setup(m => m.Expression).Returns(salesUnits.Expression);
            _mockSalesUnitSet.As <IQueryable <SalesUnit> >().Setup(m => m.ElementType).Returns(salesUnits.ElementType);
            _mockSalesUnitSet.As <IQueryable <SalesUnit> >().Setup(m => m.GetEnumerator()).Returns(salesUnits.GetEnumerator());

            _mockContext = new Mock <CruiseDbContext>();
            _mockContext.Setup(c => c.Ships).Returns(_mockShipSet.Object);
            _mockContext.Setup(c => c.Bookings).Returns(_mockBookingSet.Object);
            _mockContext.Setup(c => c.SalesUnits).Returns(_mockSalesUnitSet.Object);

            _sut = new CruiseDataService(_mockContext.Object);
        }
        public void GetSalesUnitSalesData_GetAction__Should_Return_CorrectNumberOfSales()
        {
            var startDate           = DateTimeOffset.Parse("2015-07-24T00:00:00Z").UtcDateTime;
            var endDate             = DateTimeOffset.Parse("2016-05-09T00:00:00Z").UtcDateTime;
            var mockedSalesUnitData = new MockCruiseDataService().GetSalesUnitSalesData(startDate, endDate);

            _mockCruiseDataService.Setup(repo => repo.GetSalesUnitSalesData(It.IsAny <DateTime>(), It.IsAny <DateTime>())).Returns(mockedSalesUnitData);
            var result = _sut.GetSalesUnitSalesData(startDate, endDate).Result;

            Assert.IsType <OkObjectResult>(result);
            OkObjectResult resultValue      = result as OkObjectResult;
            var            resultCollection = resultValue.Value as IEnumerable <SalesUnitSalesData>;

            Assert.Equal(3, resultCollection.Count());
        }