Esempio n. 1
0
        static void Main(string[] args)
        {
            var msgBus = new FakeMessageBus();

            var fabService    = new FabService(msgBus);
            var fcdService    = new FcdService(msgBus);
            var fxService     = new FxService(msgBus);
            var feService     = new FeService(msgBus);
            var resultService = new ResultSaverService(msgBus);

            msgBus.RegisterHandler <XChanged>(fxService.When);
            msgBus.RegisterHandler <FXProcessed>(feService.When);
            msgBus.RegisterHandler <FEProcessed>(resultService.When);
            msgBus.RegisterHandler <AChanged>(fabService.When);
            msgBus.RegisterHandler <FABProcessed>(fcdService.When);
            msgBus.RegisterHandler <FCDProcessed>(feService.When);
            msgBus.RegisterHandler <CxChanged>(fcdService.When);
            msgBus.RegisterHandler <CxChanged>(fxService.When);

            msgBus.Publish(new XChanged(1));
            msgBus.Publish(new AChanged(2));
            msgBus.Publish(new CxChanged(5, 7));

            Console.ReadLine();
        }
Esempio n. 2
0
        public async Task WillThrowExceptionForSameCurrencyPair()
        {
            var systemConfig = new Mock <ISystemConfiguration>();
            var fixerService = new Mock <IFixerService>();

            systemConfig.Setup(x => x.IsCurrencySupported("AUD")).Returns(true);

            var service = new FxService(systemConfig.Object, fixerService.Object);

            await Assert.ThrowsAsync <ArgumentException>(() => service.GetRate("AUD", "AUD"));
        }
Esempio n. 3
0
        public async Task WillThrowExceptionForInvalidTargetCurrency()
        {
            var systemConfig = new Mock <ISystemConfiguration>();
            var fixerService = new Mock <IFixerService>();

            systemConfig.Setup(x => x.IsCurrencySupported("AUD")).Returns(true);
            systemConfig.Setup(x => x.IsCurrencySupported("USD")).Returns(false);

            var service = new FxService(systemConfig.Object, fixerService.Object);

            await Assert.ThrowsAsync <ArgumentOutOfRangeException>(() => service.GetRate("AUD", "USD"));
        }
Esempio n. 4
0
        public async Task WillReturnRateForValidPair()
        {
            var systemConfig = new Mock <ISystemConfiguration>();
            var fixerService = new Mock <IFixerService>();

            systemConfig.Setup(x => x.IsCurrencySupported("AUD")).Returns(true);
            systemConfig.Setup(x => x.IsCurrencySupported("USD")).Returns(true);
            systemConfig.Setup(x => x.Round).Returns(5);

            var timestamp = DateTime.Now;

            fixerService.Setup(x => x.GetRate("AUD", "USD")).Returns(Task.FromResult(new FxRate {
                Rate = 1.5671827648273M, Timestamp = timestamp
            }));

            var service = new FxService(systemConfig.Object, fixerService.Object);

            var response = await service.GetRate("AUD", "USD");

            Assert.Equal("AUD", response.BaseCurrency);
            Assert.Equal("USD", response.TargetCurrency);
            Assert.Equal(timestamp, response.Timestamp);
            Assert.Equal(1.56718M, response.ExchangeRate);
        }
Esempio n. 5
0
 public void Startup()
 {
     service = new FxService();
 }
Esempio n. 6
0
 public FXApplication(FxService fxService)
 {
     _fxService = fxService;
 }