public async Task <Template> CreateTemplate( CreateUpdateTemplateInfo info = null, CreateUpdateTemplateAvailability availability = null, CreateUpdateTemplateRules rules = null, CreateUpdateTemplateWagering wagering = null, CreateUpdateTemplateNotification notification = null ) { var brand = _brandQueries.GetBrands().First(); var model = new CreateUpdateTemplate { Id = Guid.Empty, Info = info ?? new CreateUpdateTemplateInfo { Name = TestDataGenerator.GetRandomString(), TemplateType = BonusType.FirstDeposit, BrandId = brand.Id, WalletTemplateId = brand.WalletTemplates.First().Id, Mode = IssuanceMode.Automatic } }; var response = await _bonusApiProxy.CreateUpdateBonusTemplateAsync(model); if (response.Success == false) { throw new Exception(response.Errors.First().ErrorMessage); } model = new CreateUpdateTemplate { Id = response.Id.Value, Version = response.Version.Value, Availability = availability ?? new CreateUpdateTemplateAvailability(), Rules = rules ?? new CreateUpdateTemplateRules { RewardTiers = new List <CreateUpdateRewardTier> { new CreateUpdateRewardTier { CurrencyCode = "CAD", BonusTiers = new List <CreateUpdateTemplateTier> { new CreateUpdateTemplateTier { Reward = 29 } } } } }, Wagering = wagering ?? new CreateUpdateTemplateWagering(), Notification = notification ?? new CreateUpdateTemplateNotification() }; response = await _bonusApiProxy.CreateUpdateBonusTemplateAsync(model); if (response.Success == false) { throw new Exception(response.Errors.First().ErrorMessage); } return(await _bonusApiProxy.GetTemplateOrNull(response.Id.Value)); }
public async void Can_get_bonus_redemptions_with_active_wagering_requirement() { var info = CreateTemplateInfo(BonusType.FirstDeposit, IssuanceMode.AutomaticWithCode); var wagering = new CreateUpdateTemplateWagering { HasWagering = true, Multiplier = 3, Method = WageringMethod.Bonus }; var template = CreateTemplate(info: info, wagering: wagering); var bonus = CreateBonus(template); MakeDeposit(_player.Id, bonusCode: bonus.Code); var result = await ApiProxy.GetBonusesWithIncompleteWageringAsync(_player.Id); result.Should().NotBeEmpty(); result.Single().Bonus.Name.Should().Be(bonus.Name); }
public Template CreateTemplate( CreateUpdateTemplateInfo info = null, CreateUpdateTemplateAvailability availability = null, CreateUpdateTemplateRules rules = null, CreateUpdateTemplateWagering wagering = null, CreateUpdateTemplateNotification notification = null ) { var model = new CreateUpdateTemplate { Id = Guid.Empty, Info = info ?? CreateTemplateInfo(BonusType.FirstDeposit) }; var identifier = BonusManagementCommands.AddUpdateTemplate(model); model = new CreateUpdateTemplate { Id = identifier.Id, Version = identifier.Version, Availability = availability ?? new CreateUpdateTemplateAvailability(), Rules = rules ?? new CreateUpdateTemplateRules { RewardTiers = new List <CreateUpdateRewardTier> { new CreateUpdateRewardTier { CurrencyCode = "CAD", BonusTiers = new List <CreateUpdateTemplateTier> { new CreateUpdateTemplateTier { Reward = 27 } } } } }, Wagering = wagering ?? new CreateUpdateTemplateWagering(), Notification = notification ?? new CreateUpdateTemplateNotification() }; identifier = BonusManagementCommands.AddUpdateTemplate(model); return(BonusRepository.Templates.Single(t => t.Id == identifier.Id && t.Version == identifier.Version)); }
public async void Can_get_player_balance() { var info = CreateTemplateInfo(BonusType.FirstDeposit, IssuanceMode.AutomaticWithCode); var wagering = new CreateUpdateTemplateWagering { HasWagering = true, Multiplier = 3, Method = WageringMethod.Bonus }; var template = CreateTemplate(info: info, wagering: wagering); var bonus = CreateBonus(template); MakeDeposit(_player.Id, bonusCode: bonus.Code); PlaceAndLoseBet(50, _player.Id); var result = await ApiProxy.GetPlayerBalanceAsync(_player.Id); result.Main.Should().Be(150); result.Bonus.Should().Be(27); }
public async Task Can_set_games_for_bonus_to_contribute_players_completion_of_wagering_requirement() { const decimal amount = 1000; //create a bonus - First Deposit, Automatic, Withdrawable, for main wallet var brand = _container.Resolve <IBrandRepository>().Brands.Include(x => x.WalletTemplates).Single(b => b.Name == BrandName); var walletTemplateId = brand.WalletTemplates.First(x => x.IsMain).Id; var info = new CreateUpdateTemplateInfo { Name = TestDataGenerator.GetRandomString(), TemplateType = BonusType.FirstDeposit, BrandId = brand.Id, WalletTemplateId = walletTemplateId, IsWithdrawable = true, Mode = IssuanceMode.Automatic }; var rules = new CreateUpdateTemplateRules { RewardTiers = new List <CreateUpdateRewardTier> { new CreateUpdateRewardTier { CurrencyCode = "CAD", BonusTiers = new List <CreateUpdateTemplateTier> { new CreateUpdateTemplateTier { Reward = 13 } } } } }; var gameRepository = _container.Resolve <IGameRepository>(); var wagering = new CreateUpdateTemplateWagering { HasWagering = true, Method = WageringMethod.Bonus, Multiplier = 1, GameContributions = new List <CreateUpdateGameContribution> { new CreateUpdateGameContribution { GameId = gameRepository.Games.Single(g => g.Name == "Football").Id, Contribution = 50 }, new CreateUpdateGameContribution { GameId = gameRepository.Games.Single(g => g.Name == "Hockey").Id, Contribution = 100 } } }; var bonusTemplate = await _bonusTestHelper.CreateTemplate(info : info, rules : rules, wagering : wagering); var bonus = await _bonusTestHelper.CreateBonus(bonusTemplate); _bonusName = bonus.Name; if (bonus.IsActive) { _activeBonusesNamesList.Add(_bonusName); } //create a player var player = _playerTestHelper.CreatePlayerForMemberWebsite(currencyCode: "CAD"); //Thread.Sleep(5000); //wait for Player created event processing //make a Deposit _paymentTestHelper.MakeDeposit(player.Username, amount); Thread.Sleep(5000); //wait for Deposit created event processing //place and win first bet - must deduct only 50% wagering contribution for now var playerId = _playerQueries.GetPlayerByUsername(player.Username).Id; var gameId = "FOOTBALL"; var gameProviderCode = _gamesTestHelper.GetGameProviderCodeByGameExternalId(gameId); var placeBetTxId = Guid.NewGuid().ToString(); var actualBetId = await _gamesTestHelper.PlaceBet(13, playerId, gameProviderCode, gameId, transactionId : placeBetTxId); //TODO: VladK. - remove Sleep here Thread.Sleep(5000);// wait for Bet event processing await _gamesTestHelper.WinBet(actualBetId, 13, placeBetTxId, gameProviderCode); //TODO: VladK. - remove Sleep here Thread.Sleep(5000); //wait for Bet event processing //make sure that bonus haven't been unlocked yet var memberWebsiteLoginPage = new MemberWebsiteLoginPage(_driver); memberWebsiteLoginPage.NavigateToMemberWebsite(); var playerProfilePage = memberWebsiteLoginPage.Login(player.Username, player.Password); var playerBalanceInformationPage = playerProfilePage.Menu.ClickBalanceInformationMenu(); //TODO: Until Pavel's fixes for Balance Information on Member site AFTREGO-???? - 10-Feb-2016, Igor Assert.AreEqual("987.00", playerBalanceInformationPage.GetMainBalance(walletTemplateId.ToString())); Assert.AreEqual("26.00", playerBalanceInformationPage.GetBonusBalance(walletTemplateId.ToString())); //place and win second bet - must deduct 50%+50% = 100% wagering contribution var secondPlaceBetTxId = Guid.NewGuid().ToString(); actualBetId = await _gamesTestHelper.PlaceBet(13, playerId, gameProviderCode, gameId, transactionId : secondPlaceBetTxId); //TODO: VladK. - remove Sleep here Thread.Sleep(5000);// wait for Bet event processing await _gamesTestHelper.WinBet(actualBetId, 13, secondPlaceBetTxId, gameProviderCode); //TODO: VladK. - remove Sleep here Thread.Sleep(5000); //wait for Bet event processing //make sure that we ve got bonus on Main Balance playerBalanceInformationPage = playerProfilePage.Menu.ClickBalanceInformationMenu(); Assert.AreEqual("1013.00", playerBalanceInformationPage.GetMainBalance(walletTemplateId.ToString())); Assert.AreEqual("0.00", playerBalanceInformationPage.GetBonusBalance(walletTemplateId.ToString())); //deactivate bonus DeactivateBonus(); }