Exemplo n.º 1
0
        public async ValueTask <CommandResult <CurrencyConverterResult> > Execute(LiveMoedaCommand command, CancellationToken cancellationToken)
        {
            var _endpoint = string.Format(LiveENDPOINT, _keyAccess, command.Source);

            return(await _httpClient
                   .GetStringAsync <CurrencyConverterResult>(uri : _endpoint,
                                                             cancellationToken : cancellationToken));
        }
        public void ConverterMoeadaCommandHandler_WhenPass_ShouldReturnCurrencyResult()
        {
            //Mock
            var _mockHandler         = new Mock <IRequestHandler <LiveMoedaCommand, CommandResult> >();
            var _mockServiceCurrency = new Mock <ICurrencyLayerService>();


            //Fake
            var _liveCommand = new LiveMoedaCommand()
            {
                Source = "USD", Target = "BRL", Value = 10
            };
            var resultFake       = new ConverterMoedaModelView("USD", "BRL", decimal.Parse("0.33434"), 10);
            var resulServiceFake = new CurrencyConverterResult()
            {
                Success = true,
                Quotes  = new Dictionary <string, decimal>
                {
                    { "USDBRL", decimal.Parse("0.33434") }
                }
            };

            //Arrange
            _mockHandler.Setup(moq => moq.Handle(_liveCommand, default(CancellationToken)))
            .Returns(Task.FromResult(CommandResult.Success(resultFake)));

            _mockServiceCurrency.Setup(moq => moq.Execute(_liveCommand, default(CancellationToken)))
            .Returns(new ValueTask <CommandResult <CurrencyConverterResult> >(Task.FromResult(CommandResult <CurrencyConverterResult> .Success(resulServiceFake))));

            var _commandHandler = new ConverterMoedaCommandHandler(_mockServiceCurrency.Object);

            //Act
            var fakeResult = _mockHandler.Object.Handle(_liveCommand, default(CancellationToken));
            var response   = _commandHandler.Handle(_liveCommand, default(CancellationToken));

            //Assert
            Assert.Equal(((ConverterMoedaModelView)response.Result.Data).Result, ((ConverterMoedaModelView)fakeResult.Result.Data).Result);
        }