public async Task TestAddRateCategory_Pass_Success()
        {
            //Arrange
            var rateCategoryViewModel = new RateCategoryViewModel()
            {
                Id                   = 1,
                Name                 = "RC1",
                MarketId             = 2,
                CancellationPolicyId = 2,
                HotelMealId          = 2,
                IsActive             = true
            };
            var ratePlan = new RatePlansViewModel()
            {
                Id             = 1,
                RateCategoryId = 2,
                RoomId         = 322
            };
            var ratePlansList = new List <RatePlansViewModel>();

            ratePlansList.Add(ratePlan);
            rateCategoryViewModel.RoomTypeList.AddRange(ratePlansList);
            rateCategoryViewModel.ObjectState = ObjectState.Added;
            var rateCategory = new RateCategory()
            {
                Id = 1, Name = "RateCategory1", IsActive = true, IsDeleted = false
            };
            var baseResult = new BaseResult <List <RateCategory> >()
            {
                Result = new List <RateCategory>()
                {
                    rateCategory
                }
            };

            iRateCategoryLibrary.Setup(x => x.InsertEntity(It.IsAny <RateCategory>())).Returns(Task.FromResult(new BaseResult <long>()
            {
                Result = 2
            })).Verifiable();
            iRatePlansLibrary.Setup(x => x.InsertEntityList(It.IsAny <List <RatePlans> >())).Returns(Task.FromResult(new BaseResult <long>()
            {
                Result = 2
            })).Verifiable();
            //Act
            Task <BaseResult <RateCategory> > actionResult = rateCategoryRepository.SaveAndUpdateRateCategory(rateCategoryViewModel, It.IsAny <string>());

            //Assert
            Assert.IsTrue(actionResult.Result != null);
            Assert.IsTrue(actionResult.Result is BaseResult <RateCategory>);
        }
        public async Task <IActionResult> CreateRateCategory([FromBody] RateCategoryViewModel rateCategoryViewModel)
        {
            string userName = base.LoggedInUserName;
            BaseResult <RateCategory> rateCategoryResult = new BaseResult <RateCategory>();

            if (rateCategoryViewModel == null)
            {
                rateCategoryResult.IsError = true;
                rateCategoryResult.Message = string.Format(coreHelper.Constants.ErrorMessage.EmptyModel);
                return(BadRequest(rateCategoryResult));
            }

            rateCategoryResult = await iRatesCategory.SaveAndUpdateRateCategory(rateCategoryViewModel, userName).ConfigureAwait(false);

            if (rateCategoryResult.IsError && rateCategoryResult.ExceptionMessage != null)
            {
                return(StatusCode(500, rateCategoryResult));
            }
            else if (rateCategoryResult.Result == null)
            {
                return(new NoContentResult());
            }
            return(Ok(rateCategoryResult));
        }