Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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();
        }