public void Context()
        {
            _unitOfWork = new NhibernateUnitOfWork(new CoreDddSharedNhibernateConfigurator());
            _unitOfWork.BeginTransaction();

            var createNewShipCommand = new CreateNewShipCommand
            {
                ShipName  = "ship name",
                Tonnage   = 23.45678m,
                ImoNumber = "IMO 765432"
            };

            var internationalMaritimeOrganizationVerifier = A.Fake <IInternationalMaritimeOrganizationVerifier>();

            A.CallTo(() => internationalMaritimeOrganizationVerifier.IsImoNumberValid("IMO 765432")).Returns(true);

            var createNewShipCommandHandler = new CreateNewShipCommandHandler(
                new NhibernateRepository <Ship>(_unitOfWork),
                internationalMaritimeOrganizationVerifier
                );

            createNewShipCommandHandler.CommandExecuted += args => _createdShipId = (int)args.Args;
            createNewShipCommandHandler.Execute(createNewShipCommand);

            _unitOfWork.Flush();
            _unitOfWork.Clear();

            _persistedShip = _unitOfWork.Get <Ship>(_createdShipId);
        }
示例#2
0
        public void Context()
        {
            DomainEvents.Initialize(A.Fake <IDomainEventHandlerFactory>());

            var createNewShipCommand = new CreateNewShipCommand
            {
                ShipName  = "ship name",
                Tonnage   = 23.45678m,
                ImoNumber = "IMO 12345"
            };

            _shipRepository = A.Fake <IRepository <Ship> >();

            A.CallTo(() => _shipRepository.SaveAsync(A <Ship> ._)).Invokes(x =>
            {
                // when shipRepository.Save() is called, simulate NHibernate assigning Id to the Ship entity
                var shipPassedAsParameter = x.GetArgument <Ship>(0);
                shipPassedAsParameter.SetPrivateProperty("Id", 23);
            });
            var createNewShipCommandHandler = new CreateNewShipCommandHandler(_shipRepository);

            createNewShipCommandHandler.CommandExecuted += args => _createdShipId = (int)args.Args;

            createNewShipCommandHandler.ExecuteAsync(createNewShipCommand).Wait();
        }
示例#3
0
        public async Task Context()
        {
            var domainEventHandlerFactory = new FakeDomainEventHandlerFactory(domainEvent => _raisedDomainEvent = domainEvent as IDomainEvent);

            DomainEvents.Initialize(domainEventHandlerFactory);

            _unitOfWork = new NhibernateUnitOfWork(new CoreDddSharedNhibernateConfigurator());
            _unitOfWork.BeginTransaction();

            var createNewShipCommand = new CreateNewShipCommand
            {
                ShipName  = "ship name",
                Tonnage   = 23.45678m,
                ImoNumber = "IMO 12345"
            };
            var createNewShipCommandHandler = new CreateNewShipCommandHandler(new NhibernateRepository <Ship>(_unitOfWork));

            createNewShipCommandHandler.CommandExecuted += args => _createdShipId = (int)args.Args;
            await createNewShipCommandHandler.ExecuteAsync(createNewShipCommand);

            _unitOfWork.Flush();
            _unitOfWork.Clear();

            _persistedShip = _unitOfWork.Get <Ship>(_createdShipId);
        }