コード例 #1
0
        public async Task CreateMatchRollBackWhenInsertMatchFailsSuccess()
        {
            var percentage         = 12.4587;
            var percentageAsString = percentage.ToString(CultureInfo.InvariantCulture);

            var salt = "randomSalt";
            var hash = "ranomdHash";

            var creatorUser = new DatabaseModel.User("steamId", "name", "imageURl", null, DateTime.Today, DateTime.Today, false, null, 10);
            var gameMode    = new DatabaseModel.GameMode
            {
                CurrentSettingId = 1,
                IsEnabled        = true,
                Type             = GameModeHelper.GetStringFromType(GameModeType.CoinFlip),
                Id = 2
            };

            A.CallTo(() => _fakedUserRepoService.FindAsync(creatorUser.SteamId)).Returns(creatorUser);
            A.CallTo(() => _fakedRandomService.GeneratePercentage()).Returns(percentageAsString);
            A.CallTo(() => _fakedRandomService.GenerateSalt()).Returns(salt);
            A.CallTo(() => _fakedHashService.CreateBase64Sha512Hash(percentageAsString, salt)).Returns(hash);
            A.CallTo(() => _fakedGameModeRepoSerivce.Find(GameModeHelper.GetStringFromType(GameModeType.CoinFlip))).Returns(gameMode);
            A.CallTo(() => _fakedCoinFlipMatchRepoService.InsertAsync(A <DatabaseModel.CoinFlip> ._, A <ITransactionWrapper> ._)).Throws <Exception>();

            var itemList = new List <AssetAndDescriptionId>
            {
                new AssetAndDescriptionId {
                    AssetId = "assetId1", DescriptionId = 1
                }
            };

            bool didFail = false;

            try
            {
                await _coinFlipService.CreateMatch(creatorUser.SteamId, true, itemList, _defaultSetting);
            }
            catch (Exception)
            {
                didFail = true;
            }

            Assert.True(didFail, "The method did not throw!");


            A.CallTo(() => _fakedTransactionWrapper.Commit()).MustNotHaveHappened();
            A.CallTo(() => _fakedTransactionWrapper.Rollback()).MustHaveHappened();
            A.CallTo(() => _fakedUserRepoService.FindAsync(creatorUser.SteamId)).MustHaveHappened();
        }
コード例 #2
0
        public async Task UserDepositItemsTransactionThrows()
        {
            _offerMinmalInfo.OfferSend.SteamOffer.ItemsToGive.Clear();

            var offerTransInsertWithId = new DatabaseModel.OfferTransaction(1, 14, new decimal(196.91), true, "12347", DateTime.Today, 75);

            var userInsertRes = new DatabaseModel.User("userSteamId", "name", "img", "tradeLink", DateTime.Today, DateTime.Today, false, null, 1);

            A.CallTo(() => _fakedUserRepoService.FindAsync("userSteamId")).Returns(userInsertRes);

            var botLookRes = Task.FromResult(new DatabaseModel.Bot("botSteamId", "botName", 14));

            A.CallTo(() => _fakedBotRepoService.FindAsync("botSteamId")).Returns(botLookRes);

            A.CallTo(() => _fakedOfferTranascrionRepoService.InsertAsync(A <DatabaseModel.OfferTransaction> ._, A <ITransactionWrapper> ._))
            .Throws(new CantCompleteTransaction(new System.Exception()));

            await Assert.ThrowsAsync <CantCompleteSteamDeposit>(async() => await _offerService.DepositSteamOfferAsync(_offerMinmalInfo));

            A.CallTo(() => _fakedTransactionWrapper.Commit()).MustNotHaveHappened();
            A.CallTo(() => _fakedTransactionWrapper.Rollback()).MustHaveHappened();
        }
コード例 #3
0
 /// <inheritdoc />
 public void Rollback() => _transactionWrapper?.Rollback();