public async Task ShouldSaveAccountInfoHistory()
        {
            _contextData.NeedToSaveData = true;
            var context = new OperationContext(new AccountRequest(AccountId, Realm, Language));

            context.AddOrReplace(_contextData);

            await _operation.Invoke(context, null);

            WargamingDataAccessorMock.Verify(d => d.AddAccountInfoHistory(It.Is <AccountInfoHistory>(a => a.AccountId == AccountId)), Times.Once);
        }
        public async Task ShouldNotSaveAccountInfoIfFlagIsNotSet()
        {
            var context = new OperationContext(new AccountRequest(AccountId, Realm, Language));

            context.AddOrReplace(_contextData);

            await _operation.Invoke(context, null);

            WargamingDataAccessorMock.Verify(d => d.AddOurUpdateAccountInfo(It.Is <AccountInfo>(a => a.AccountId == AccountId)), Times.Never);
            WargamingDataAccessorMock.Verify(d => d.AddAccountInfoHistory(It.IsAny <AccountInfoHistory>()), Times.Never);
            WargamingDataAccessorMock.Verify(d => d.AddOrUpdateTankInfo(It.IsAny <TankInfo>()), Times.Never);
            WargamingDataAccessorMock.Verify(d => d.AddTankInfoHistory(It.IsAny <TankInfoHistory>()), Times.Never);
        }
        public async Task ShouldSaveAllTanksIfNotTanksInDatabase()
        {
            _contextData.NeedToSaveData = true;
            var context = new OperationContext(new AccountRequest(AccountId, Realm, Language));

            context.AddOrReplace(_contextData);

            await _operation.Invoke(context, null);

            var tanksCount = _contextData.Tanks.Count;

            WargamingDataAccessorMock.Verify(d => d.AddOrUpdateTankInfo(It.IsAny <TankInfo>()), Times.Exactly(tanksCount));
            WargamingDataAccessorMock.Verify(d => d.AddTankInfoHistory(It.IsAny <TankInfoHistory>()), Times.Exactly(tanksCount));
        }
        public async Task ShouldSaveTanksThatLastDateIsGreaterThenInDatabase()
        {
            _contextData.NeedToSaveData = true;
            var context = new OperationContext(new AccountRequest(AccountId, Realm, Language));

            context.AddOrReplace(_contextData);

            int outdatedTanksCount = 3;
            int outdatedTanksIndex = 0;

            foreach (var tank in _contextData.Tanks)
            {
                if (outdatedTanksIndex < outdatedTanksCount)
                {
                    var tankInfo = new TankInfo
                    {
                        TankInfoId = new TankInfoKey
                        {
                            TankId    = tank.TankId,
                            AccountId = tank.AccountId,
                        },
                        LastBattleTime = tank.LastBattleTime - 1
                    };
                    WargamingDataAccessorMock.Setup(d => d.ReadTankInfo(tank.AccountId, tank.TankId))
                    .ReturnsAsync(tankInfo);
                    outdatedTanksIndex++;
                }
                else
                {
                    WargamingDataAccessorMock.Setup(d => d.ReadTankInfo(tank.AccountId, tank.TankId))
                    .ReturnsAsync(tank);
                }
            }


            await _operation.Invoke(context, null);

            var tanksCount = _contextData.Tanks.Count;

            WargamingDataAccessorMock.Verify(d => d.AddOrUpdateTankInfo(It.IsAny <TankInfo>()), Times.Exactly(outdatedTanksCount));
            WargamingDataAccessorMock.Verify(d => d.AddTankInfoHistory(It.IsAny <TankInfoHistory>()), Times.Exactly(outdatedTanksCount));
        }