示例#1
0
        public void Construction_WithNullClient()
        {
            // arrange

            // act - assert
            Assert.Throws <ArgumentNullException>(() => _ = new CurrencyConverterViewModel(null));
        }
        public void Setup()
        {
            var service = new Mock <ICurrencyService>();

            service.Setup(o => o.GetCurrencies()).ReturnsAsync((IEnumerable <Currency>) new List <Currency> {
                new Currency("AUD", "Australian Dollar"),
                new Currency("BGN", "Bulgarian Lev"),
                new Currency("BRL", "Brazilian Real"),
                new Currency("CAD", "Canadian Dollar"),
                new Currency("CHF", "Swiss Franc"),
                new Currency("CNY", "Chinese Renminbi Yuan"),
                new Currency("CZK", "Czech Koruna"),
                new Currency("DKK", "Danish Krone"),
                new Currency("EUR", "Euro"),
                new Currency("GBP", "British Pound"),
                new Currency("HKD", "Hong Kong Dollar"),
                new Currency("HRK", "Croatian Kuna"),
                new Currency("HUF", "Hungarian Forint"),
                new Currency("IDR", "Indonesian Rupiah"),
                new Currency("ILS", "Israeli New Sheqel"),
                new Currency("INR", "Indian Rupee"),
                new Currency("ISK", "Icelandic Króna"),
                new Currency("JPY", "Japanese Yen"),
                new Currency("KRW", "South Korean Won"),
                new Currency("MXN", "Mexican Peso"),
                new Currency("MYR", "Malaysian Ringgit"),
                new Currency("NOK", "Norwegian Krone"),
                new Currency("NZD", "New Zealand Dollar"),
                new Currency("PHP", "Philippine Peso"),
                new Currency("PLN", "Polish Złoty"),
                new Currency("RON", "Romanian Leu"),
                new Currency("RUB", "Russian Ruble"),
                new Currency("SEK", "Swedish Krona"),
                new Currency("SGD", "Singapore Dollar"),
                new Currency("THB", "Thai Baht"),
                new Currency("TRY", "Turkish Lira"),
                new Currency("USD", "United States Dollar"),
                new Currency("ZAR", "South African Rand")
            }
                                                               );
            service.Setup(o => o.GetExchangeRate(
                              It.Is <Currency>(o => o.Equals(new Currency("GBP", "British Pound"))),
                              It.Is <Currency>(o => o.Equals(new Currency("AUD", "Australian Dollar"))))).ReturnsAsync(0.1234M);

            var appSettingsWriter = new Mock <IWritableOptions <UserSettings> >();

            appSettingsWriter.Setup(o => o.Value).Returns(new UserSettings {
                Base = "EUR", Quote = "USD"
            });


            this.CurrencyConverterViewModel = new CurrencyConverterViewModel(service.Object, appSettingsWriter.Object);
            while (!this.CurrencyConverterViewModel.IsInitalized)
            {
                Task.Delay(100);
            }
        }
示例#3
0
        public async Task FindCurrencySymbol_WithNullSymbol()
        {
            // arrange
            var vm = new CurrencyConverterViewModel(_testClient);
            await vm.Initialize().ConfigureAwait(false);

            vm.ConvertToCurrencyId = "PES";

            // act
            var result = vm.ConvertToCurrencySymbol;

            // assert
            Assert.Empty(result);
        }
示例#4
0
        public async Task SwapCurrencies()
        {
            // arrange
            var vm = new CurrencyConverterViewModel(_testClient)
            {
                ConvertFromValue      = 100,
                ConvertFromCurrencyId = "EUR",
                ConvertToCurrencyId   = "USD"
            };

            // act
            await vm.SwapCurrencies().ConfigureAwait(false);

            // assert
            Assert.Equal(81.36M, vm.ConvertToValue);
            Assert.Equal(0.81357M, vm.ConversionRate);
            Assert.False(vm.HasError);
        }
示例#5
0
        public async Task Convert_WithError(decimal amount)
        {
            // arrange
            var vm = new CurrencyConverterViewModel(_errorClient)
            {
                ConvertFromValue      = amount,
                ConvertFromCurrencyId = "YEN",
                ConvertToCurrencyId   = "USD"
            };

            // act
            await vm.Convert().ConfigureAwait(false);

            // assert
            Assert.Equal(0.0M, vm.ConvertToValue);
            Assert.NotEmpty(vm.ErrorMessage);
            Assert.True(vm.HasError);
        }
示例#6
0
        public void Convert_Clicked()
        {
            // arrange
            using var ctx = new TestContext();
            var vm = new CurrencyConverterViewModel(_testClient)
            {
                ConvertFromValue = 100
            };

            ctx.Services.AddSingleton <CurrencyConverterViewModel>(vm);

            var cut = ctx.RenderComponent <CurrencyConverter>();

            // act
            cut.Find("#btn-convert").Click();

            // assert
            cut.MarkupMatches(CurrencyConverterExpectedResults.ConvertCurrencyResult);
        }
示例#7
0
        public void DisplayErrorMessage()
        {
            // arrange
            using var ctx = new TestContext();

            var vm = new CurrencyConverterViewModel(_testClient);

            ctx.Services.AddSingleton <CurrencyConverterViewModel>(vm);

            var cut = ctx.RenderComponent <CurrencyConverter>();

            vm.ConvertToCurrencyId = "PES";

            // act
            cut.Find("#btn-convert").Click();

            // assert
            cut.MarkupMatches(CurrencyConverterExpectedResults.ErrorResult);
        }
示例#8
0
        public async Task Convert_ValidCurrencies(
            decimal amount, string convertFrom, string convertTo, decimal expectedValue, decimal expectedRate)
        {
            // arrange
            var vm = new CurrencyConverterViewModel(_testClient)
            {
                ConvertFromValue      = amount,
                ConvertFromCurrencyId = convertFrom,
                ConvertToCurrencyId   = convertTo
            };

            // act
            await vm.Convert().ConfigureAwait(false);

            // assert
            Assert.Equal(expectedValue, vm.ConvertToValue);
            Assert.Equal(expectedRate, vm.ConversionRate);
            Assert.False(vm.HasError);
        }
示例#9
0
        public void Construction()
        {
            // arrange

            // act
            var vm = new CurrencyConverterViewModel(_emptyClient);

            // assert
            Assert.NotNull(vm);
            Assert.Equal(0M, vm.ConvertFromValue);
            Assert.Null(vm.ConvertFromCurrencyId);
            Assert.Empty(vm.ConvertFromCurrencySymbol);
            Assert.Equal(0.0M, vm.ConvertToValue);
            Assert.Null(vm.ConvertToCurrencyId);
            Assert.Empty(vm.ConvertToCurrencySymbol);
            Assert.Empty(vm.Currencies);
            Assert.Null(vm.ConversionRate);
            Assert.Null(vm.ErrorMessage);
            Assert.False(vm.HasError);
        }
示例#10
0
        public async Task Initialize()
        {
            // arrange
            var vm = new CurrencyConverterViewModel(_testClient);

            // act
            await vm.Initialize().ConfigureAwait(false);

            // assert
            Assert.NotNull(vm);
            Assert.Equal(0, vm.ConvertFromValue);
            Assert.Equal("USD", vm.ConvertFromCurrencyId);
            Assert.Equal("$", vm.ConvertFromCurrencySymbol);
            Assert.Equal(0.0M, vm.ConvertToValue);
            Assert.Equal("EUR", vm.ConvertToCurrencyId);
            Assert.Equal("E", vm.ConvertToCurrencySymbol);
            Assert.Equal(5, vm.Currencies.Count());
            Assert.Null(vm.ConversionRate);
            Assert.Null(vm.ErrorMessage);
            Assert.False(vm.HasError);
        }
示例#11
0
        public async Task Initialize_WithServiceError()
        {
            // arrange
            var vm = new CurrencyConverterViewModel(_errorClient);

            // act
            await vm.Initialize().ConfigureAwait(false);

            // assert
            Assert.NotNull(vm);
            Assert.Equal(0, vm.ConvertFromValue);
            Assert.Null(vm.ConvertFromCurrencyId);
            Assert.Empty(vm.ConvertFromCurrencySymbol);
            Assert.Equal(0.0M, vm.ConvertToValue);
            Assert.Null(vm.ConvertToCurrencyId);
            Assert.Empty(vm.ConvertToCurrencySymbol);
            Assert.Empty(vm.Currencies);
            Assert.Null(vm.ConversionRate);
            Assert.NotEmpty(vm.ErrorMessage);
            Assert.True(vm.HasError);
        }
示例#12
0
        public void SwapCurrencies_Clicked()
        {
            // arrange
            using var ctx = new TestContext();
            var vm = new CurrencyConverterViewModel(_testClient)
            {
                ConvertFromValue = 100
            };

            ctx.Services.AddSingleton <CurrencyConverterViewModel>(vm);

            var cut = ctx.RenderComponent <CurrencyConverter>();

            vm.ConvertFromCurrencyId = "EUR";
            vm.ConvertToCurrencyId   = "USD";

            // act
            cut.Find("#btn-swap").Click();

            // assert
            cut.MarkupMatches(CurrencyConverterExpectedResults.SwapCurrenciesResult);
        }
 public MyPopupPage(CurrencyConverterViewModel currencyViewModel)
 {
     viewModel = new PopupViewModel(currencyViewModel);
     InitializeComponent();
     BindingContext = viewModel;
 }
示例#14
0
 public void TestInitialize()
 {
     model = ViewModelLocator.Instance.CurrencyConverterViewModel;
     model.SetInitialRates();
 }
 public CurrencyConverterPage()
 {
     viewModel = new CurrencyConverterViewModel();
     InitializeComponent();
     BindingContext = viewModel;
 }