コード例 #1
0
        public SimpleTestContainer()
        {
            var domainEventPublisher = new SimpleEventPublisher();

            var uoW = new MemoryCarRentalUoW(
                new MemoryRepository <Driver>(),
                new MemoryRepository <Car>(),
                new MemoryRepository <Rental>(),
                new MemoryRepository <Office>()
                );

            var freeMinutesPolicyFactory = new FreeMinutesPolicy();
            var rentalFactory            = new RentalFactory(domainEventPublisher);

            var carMapper    = new CarMapper();
            var driverMapper = new DriverMapper();
            var rentalMapper = new RentalMapper();
            var officeMapper = new OfficeMapper();


            DriverService       = new DriverService(uoW, driverMapper, domainEventPublisher);
            CarService          = new CarService(uoW, carMapper, domainEventPublisher);
            RentalService       = new RentalService(uoW, rentalMapper, domainEventPublisher, rentalFactory, freeMinutesPolicyFactory);
            FinishRentalService = new StopRentalService(uoW, domainEventPublisher);
            OfficeService       = new OfficeService(uoW, officeMapper, domainEventPublisher);
        }
コード例 #2
0
 public RentalService(ICarRentalUoW uoW, RentalMapper rentalMapper, IDomainEventPublisher domainEventPublisher, RentalFactory rentalFactory, FreeMinutesPolicy policyFactory)
 {
     _uoW                  = uoW;
     _rentalMapper         = rentalMapper;
     _domainEventPublisher = domainEventPublisher;
     _rentalFactory        = rentalFactory;
     _policyFactory        = policyFactory;
 }
コード例 #3
0
 public RentalService(RentalFactory rentalFactory, ICarRentalUnitOfWork unitOfWork, RentalMapper rentalMapper,
                      PositionService positionService)
 {
     _rentalFactory   = rentalFactory;
     _unitOfWork      = unitOfWork;
     _rentalMapper    = rentalMapper;
     _positionService = positionService;
 }
コード例 #4
0
        public async Task <Entities.Rental> CreateRentalAsync(Guid userId, string name, CancellationToken cancellationToken)
        {
            var _ = await _userRepository.GetAsync(userId, cancellationToken)
                    ?? throw new NullReferenceException();

            var rental = RentalFactory.Create(userId, name);

            return(rental);
        }
コード例 #5
0
        public SimpleTestContainer()
        {
            // domain event publisher
            var domainEventPublisher = new SimpleEventPublisher();

            // infrastructure service
            var emaildispatcher = new EmailDispatcher();

            // event listeners
            var driverCreatedEventListener = new DriverCreatedEventListener();

            domainEventPublisher.Subscribe <DriverCreatedEvent>(driverCreatedEventListener);

            //unitOfWork
            var unitOfWork = new MemoryCarRentalUnitOfWork(
                new MemoryRepository <Driver>(),
                new MemoryRepository <Car>(),
                new MemoryRepository <Rental>(),
                new MemoryRepository <Scooter>());

            // factories
            var rentalFactory      = new RentalFactory(domainEventPublisher);
            var carFactory         = new CarFactory(domainEventPublisher);
            var freeMinutesFactory = new FreeMinutesFactory();

            // mappers
            var carMapper     = new CarMapper();
            var driverMapper  = new DriverMapper();
            var scooterMapper = new ScooterMapper();
            var rentalMapper  = new RentalMapper();

            this.CarService = new CarService(
                unitOfWork,
                carMapper,
                domainEventPublisher);

            this.ScooterService = new ScooterService(
                unitOfWork,
                scooterMapper,
                domainEventPublisher);

            this.DriverService = new DriverService(
                unitOfWork,
                driverMapper,
                domainEventPublisher);

            this.RentalService = new RentalService(
                unitOfWork,
                rentalFactory,
                rentalMapper,
                freeMinutesFactory,
                domainEventPublisher);
        }
コード例 #6
0
 public RentalService(ICarRentalUnitOfWork unitOfWork,
                      RentalFactory rentalFactory,
                      RentalMapper rentalMapper,
                      FreeMinutesFactory freeMinutesFactory,
                      IDomainEventPublisher domainEventPublisher)
 {
     this._unitOfWork           = unitOfWork;
     this._rentalMapper         = rentalMapper;
     this._rentalFactory        = rentalFactory;
     this._freeMinutesFactory   = freeMinutesFactory;
     this._domainEventPublisher = domainEventPublisher;
 }
コード例 #7
0
 public RentalService(ICarRentalUnitOfWork unitOfWork,
                      RentalFactory rentalFactory,
                      RentalMapper rentalMapper,
                      FreeMinutespolicyFactory freeMinutespolicyFactory,
                      PositionService positionService,
                      HandlePassengerService handlePassengerService,
                      IDomainEventPublisher domainEventPublisher)
 {
     this._unitOfWork               = unitOfWork;
     this._rentalFactory            = rentalFactory;
     this._rentalMapper             = rentalMapper;
     this._freeMinutespolicyFactory = freeMinutespolicyFactory;
     this._positionService          = positionService;
     this._handlePassengerService   = handlePassengerService;
     this._domainEventPublisher     = domainEventPublisher;
 }
コード例 #8
0
        public void Statement_WhenCustomerHaveSingleRental_Shouldpass()
        {
            const int    daysRented                   = 3;
            const double expectedTotalAmount          = 9;
            const int    expectedFrequentRenterPoints = 2;

            RentalFactory.GetRentalInformation(Titles[0], TypeOfMovie.NewRelease, daysRented);
            var customerRentals = RentalFactory.Build();

            StatementFactory.GetCustomerRental(CustomerName, customerRentals);
            var statement = StatementFactory.BuildStatement();

            TestsHelper.SetCustomerInformation(CustomerName, expectedTotalAmount, expectedFrequentRenterPoints);
            TestsHelper.SetMovieInformation(TestsHelper.GetMoviesWithPrice(customerRentals));

            Assert.True(TestsHelper.CheckStatement(statement));
            Assert.True(TestsHelper.CheckStringStatement(StatementFactory.BuildStringStatement()));
            Assert.True(TestsHelper.CheckJsonStatement(StatementFactory.BuildJsonStatement()));
            Assert.True(TestsHelper.CheckUniversalStatement(StatementFactory.BuildUniversalStatement()));
        }
コード例 #9
0
        public void Statement__WhenCustomerHaveMultipleRentals_Shouldpass(int regularMovieDays, int childrensMovieDays,
                                                                          int newReleaseMovieDays,
                                                                          double expectedTotalAmount, int expectedFrequentRenterPoints)
        {
            var days = new[] { newReleaseMovieDays, regularMovieDays, childrensMovieDays };

            RentalFactory.GetRentalInformation(Titles, Types, days);
            var customerRentals = RentalFactory.Build();

            StatementFactory.GetCustomerRental(CustomerName, customerRentals);
            var statement = StatementFactory.BuildStatement();

            TestsHelper.SetCustomerInformation(CustomerName, expectedTotalAmount, expectedFrequentRenterPoints);
            TestsHelper.SetMovieInformation(TestsHelper.GetMoviesWithPrice(customerRentals));

            Assert.True(TestsHelper.CheckStatement(statement));
            Assert.True(TestsHelper.CheckStringStatement(StatementFactory.BuildStringStatement()));
            Assert.True(TestsHelper.CheckJsonStatement(StatementFactory.BuildJsonStatement()));
            Assert.True(TestsHelper.CheckUniversalStatement(StatementFactory.BuildUniversalStatement()));
        }
コード例 #10
0
        public void AddNewRental(IAddNewRentalView inForm, IRentalRepository rentalRepository, IBoardGameRepository boardGameRepository)
        {
            if (inForm.ShowViewModal())
            {
                try
                {
                    Member           member     = inForm.Member;
                    List <BoardGame> boardGames = inForm.BoardGames;
                    User             employee   = GlobalVariables.CurrentUser;

                    Rental newRental = RentalFactory.CreateRental(member, boardGames, DateTime.Now.Date, null, employee);
                    rentalRepository.AddRental(newRental);
                    boardGameRepository.BoardGamesRented(boardGames);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("EXCEPTION: " + ex.Message);
                    throw;
                }
            }
        }
コード例 #11
0
        public TestContainer()
        {
            UnitOfWork = new MemoryCarRentalUnitOfWork();

            var carFactory    = new CarFactory();
            var driverFactory = new DriverFactory();

            _rentalFactory = new RentalFactory();
            var rentalAreaFactory = new RentalAreaFactory();

            var positionService = new PositionService(UnitOfWork);

            var carMapper    = new CarMapper();
            var driverMapper = new DriverMapper();

            _rentalMapper = new RentalMapper();
            var rentalAreaMapper = new RentalAreaMapper();

            CarService        = new CarService(carFactory, UnitOfWork, carMapper);
            DriverService     = new DriverService(driverFactory, UnitOfWork, driverMapper);
            RentalService     = new RentalService(_rentalFactory, UnitOfWork, _rentalMapper, positionService);
            RentalAreaService = new RentalAreaService(rentalAreaFactory, UnitOfWork, rentalAreaMapper);
        }