public async Task TryToProcessReferralStakeTokensReservedEventEvent_MissingDataInEvent_NotProcessed (string referralId, string customerId, string campaignId) { var campaignResponseModel = new CampaignDetailResponseModel { Name = "campaign" }; _campaignClientMock.Setup(x => x.History.GetEarnRuleByIdAsync(It.IsAny <Guid>())) .ReturnsAsync(campaignResponseModel); _referralStakesRepoMock.Setup(x => x.AddReferralStakeAsync(It.IsAny <ReferralStakeDto>())) .Returns(Task.CompletedTask) .Verifiable(); var referralStakeDto = new ReferralStakeDto { AssetSymbol = TokenSymbol, Amount = 1, CustomerId = customerId, ReferralId = referralId, CampaignId = campaignId }; var operationsService = CreateSutInstance(); await operationsService.ProcessReferralStakeTokensReservationEventAsync(referralStakeDto); _referralStakesRepoMock.Verify(x => x.AddReferralStakeAsync(It.IsAny <ReferralStakeDto>()), Times.Never); }
public async Task TryToProcessReferralStakeTokensReservedEventEvent_InvalidBalance_SuccessfullyProcessedWithWarning(long amount) { var campaignResponseModel = new CampaignDetailResponseModel { Name = "campaign" }; _campaignClientMock.Setup(x => x.History.GetEarnRuleByIdAsync(It.IsAny <Guid>())) .ReturnsAsync(campaignResponseModel); _referralStakesRepoMock.Setup(x => x.AddReferralStakeAsync(It.IsAny <ReferralStakeDto>())) .Returns(Task.CompletedTask) .Verifiable(); var bonus = new ReferralStakeDto { AssetSymbol = TokenSymbol, Amount = amount, CustomerId = "customerId", ReferralId = FakeReferralId, CampaignId = FakeCampaignId }; var operationsService = CreateSutInstance(); await operationsService.ProcessReferralStakeTokensReservationEventAsync(bonus); _referralStakesRepoMock.Verify(); }
public async Task TryToProcessBonusEvent_MissingDataInEvent_NotProcessed (string transactionId, string assetSymbol, string customerId, string type, string campaignId) { var campaignResponseModel = new CampaignDetailResponseModel { Name = "campaign" }; _campaignClientMock.Setup(x => x.History.GetEarnRuleByIdAsync(It.IsAny <Guid>())) .ReturnsAsync(campaignResponseModel); _bonusRepoMock.Setup(x => x.AddAsync(It.IsAny <BonusCashInDto>())) .Returns(Task.CompletedTask) .Verifiable(); var bonus = new BonusCashInDto { AssetSymbol = assetSymbol, TransactionId = transactionId, Amount = 100, CustomerId = customerId, BonusType = type, CampaignId = campaignId }; var operationsService = CreateSutInstance(); await operationsService.ProcessBonusReceivedEventAsync(bonus); _bonusRepoMock.Verify(x => x.AddAsync(It.IsAny <BonusCashInDto>()), Times.Never); }
public async Task TryToProcessBonusEvent_InvalidBalance_SuccessfullyProcessedWithWarning(long amount) { var campaignResponseModel = new CampaignDetailResponseModel { Name = "campaign" }; _campaignClientMock.Setup(x => x.History.GetEarnRuleByIdAsync(It.IsAny <Guid>())) .ReturnsAsync(campaignResponseModel); _bonusRepoMock.Setup(x => x.AddAsync(It.IsAny <BonusCashInDto>())) .Returns(Task.CompletedTask) .Verifiable(); var bonus = new BonusCashInDto { AssetSymbol = "asset", TransactionId = "transactionId", Amount = amount, CustomerId = "customerId", BonusType = "type", CampaignId = FakeCampaignId }; var operationsService = CreateSutInstance(); await operationsService.ProcessBonusReceivedEventAsync(bonus); _bonusRepoMock.Verify(); }
public async Task TryToProcessBonusEvent_HasConditionId_SuccessfullyProcessedWithConditionName() { var campaignResponseModel = new CampaignDetailResponseModel { Name = "campaign", Conditions = new List <ConditionModel> { new ConditionModel { Id = FakeConditionId, TypeDisplayName = FakeConditionName } } }; _campaignClientMock.Setup(x => x.History.GetEarnRuleByIdAsync(It.IsAny <Guid>())) .ReturnsAsync(campaignResponseModel); _bonusRepoMock.Setup(x => x.AddAsync(It.IsAny <BonusCashInDto>())) .Returns(Task.CompletedTask) .Verifiable(); var bonus = new BonusCashInDto { AssetSymbol = "asset", TransactionId = "transactionId", Amount = 100, CustomerId = "customerId", BonusType = "type", CampaignId = FakeCampaignId, ConditionId = FakeConditionId }; var operationsService = CreateSutInstance(); await operationsService.ProcessBonusReceivedEventAsync(bonus); _bonusRepoMock.Verify(x => x.AddAsync(It.Is <BonusCashInDto>(b => b.ConditionName == FakeConditionName)), Times.Once); }
private async Task <(decimal AmountInCurrency, Money18 AmountInTokens, ConversionSource ConversionSource)> GetEarnRuleConversionRate(CampaignDetailResponseModel earnRule) { if (earnRule.UsePartnerCurrencyRate) { var partnerIds = earnRule.Conditions .Where(c => c.PartnerIds != null) .SelectMany(c => c.PartnerIds) .Distinct() .ToList(); return(await GetConversionRateForPartnerRules(partnerIds)); } if (earnRule.RewardType == RewardType.ConversionRate && earnRule.AmountInCurrency.HasValue && earnRule.AmountInTokens.HasValue) { return(earnRule.AmountInCurrency.Value, earnRule.AmountInTokens.Value, ConversionSource.EarnRule); } else { return(await GetGlobalConversionRate()); } }