public void should_be_bank_to_bank()
        {
            const string bank                 = "Bank";
            var          accountId            = Guid.NewGuid();
            var          firstBankTapCommand  = new DeviceTappedCommand(accountId, bank, "rail");
            var          secondBankTapCommand = new DeviceTappedCommand(accountId, bank, "rail");
            var          accountSpy           = new AccountSpy();

            var container = new WindsorContainer();

            container.AddFacility <SubstituterFacility>(config =>
            {
                config.WithContainer(container)
                .Substitute <IAccount>(sub => sub.Instance(accountSpy));
            });

            container.Install(new InstallDevices());

            var handleDevice = container.Resolve <HandleDevice>();

            handleDevice.Handle(firstBankTapCommand);
            handleDevice.Handle(secondBankTapCommand);

            var projection = accountSpy.Get(accountId).Project();

            Assert.That(projection.OriginDestination, Is.EqualTo(OriginDestination.HereToHere(bank)));
            Assert.That(projection.Fare, Is.EqualTo(5));


            container.Release(handleDevice);
        }
        public void should_not_rate_for_invalid_journey()
        {
            const string bank                 = "Bank";
            var          accountId            = Guid.NewGuid();
            var          firstBankTapCommand  = new DeviceTappedCommand(accountId, bank, "rail");
            var          secondBankTapCommand = new DeviceTappedCommand(accountId, bank, "hyperloop");
            var          accountSpy           = new AccountSpy();

            var container = new WindsorContainer();

            container.AddFacility <SubstituterFacility>(config =>
            {
                config.WithContainer(container)
                .Substitute <IAccount>(sub => sub.Instance(accountSpy));
            });

            container.Install(new InstallDevices());

            var handleDevice = container.Resolve <HandleDevice>();

            handleDevice.Handle(firstBankTapCommand);
            handleDevice.Handle(secondBankTapCommand);

            Assert.That(accountSpy[accountId].OriginDestination,
                        Is.EqualTo(OriginDestination.HereToHere(bank)));

            Assert.That(accountSpy[accountId].Fare, Is.EqualTo(0));

            container.Release(handleDevice);
        }
예제 #3
0
        public void should_be_bank_to_bank()
        {
            const string bank = "Bank";
            const short  fare = 10;

            var journey = new Journey();

            var msg1 = new DeviceTappedCommand(journey.AccountId, bank, "rail");
            var msg2 = new DeviceTappedCommand(journey.AccountId, bank, "rail");

            journey.RecieveTap(msg2);
            journey.RecieveTap(msg1);

            journey.AssignFare(od => fare);

            Assert.That(journey.Project().OriginDestination, Is.EqualTo(OriginDestination.HereToHere(bank)));
            Assert.That(journey.Project().Fare, Is.EqualTo(10));
        }