예제 #1
0
        /// <summary>
        /// Return the list of Currency
        /// </summary>
        /// <returns></returns>
        public async Task <IActionResult> GetCurrency()
        {
            BaseResult <List <CurrencyViewModel> > currencyResultFromCache = new BaseResult <List <CurrencyViewModel> >
            {
                Result = RedisCacheHelper.Instance.Get <List <CurrencyViewModel> >(Constants.CacheKeys.CurrencyList)
            };

            if (currencyResultFromCache.Result == null || currencyResultFromCache.Result.Count == 0)
            {
                BaseResult <List <Currency> > currencyResult = await iPayment.GetCurrency().ConfigureAwait(false);

                if (currencyResult.IsError && currencyResult.ExceptionMessage != null)
                {
                    return(new StatusCodeResult(500));
                }
                else if (currencyResult.Result == null || currencyResult.Result.Count == 0)
                {
                    return(NoContent()); //204
                }
                else
                {
                    var result = PaymentDataResponseMapper.MapCurrency(currencyResult);
                    RedisCacheHelper.Instance.Set <List <CurrencyViewModel> >(Constants.CacheKeys.CurrencyList, result.Result);
                    return(Ok(result)); //200
                }
            }

            return(Ok(currencyResultFromCache)); //200
        }
        public async Task TestGetCurrency_Positive_Predicate()
        {
            //Arrange
            var currency = new Currency()
            {
                Id = 1, Name = "RS", IsActive = true, Code = "IND", IsDeleted = false
            };
            var baseResult = new BaseResult <List <Currency> >()
            {
                Result = new List <Currency>()
                {
                    currency
                }
            };
            var pred = new Func <Currency, bool>(x => x.IsActive && !x.IsDeleted);

            iCurrencyConnectionLibrary.Setup(x => x.GetListByPredicate(It.Is <Func <Currency, bool> >(y => y.GetType() == pred.GetType()))).Returns(Task.FromResult(baseResult));
            //Act
            Task <BaseResult <List <Currency> > > result = paymentDataRepository.GetCurrency();

            //Assert
            Assert.IsTrue(result.Result != null);
            Assert.IsTrue(result.Result is BaseResult <List <Currency> >);
        }