public void ItUpdatesTheExistingNemesisIfOnlyTheDataHasChanged()
{
int nemesisPlayerId = 1;
int gamesLost = 1;
int lossPercentage = 1;
NemesisData nemesisData = new NemesisData()
{
NemesisPlayerId = nemesisPlayerId,
NumberOfGamesLost = gamesLost,
LossPercentage = lossPercentage
};
_playerRepositoryMock.Expect(mock => mock.GetNemesisData(_playerId))
.Return(nemesisData);
List<Nemesis> nemesisList = new List<Nemesis>();
Nemesis existingNemesis = new Nemesis()
{
Id = _existingNemesisId,
NemesisPlayerId = nemesisPlayerId,
MinionPlayerId = _playerId,
//add 1 so the data is different
NumberOfGamesLost = gamesLost + 1,
LossPercentage = lossPercentage
};
nemesisList.Add(existingNemesis);
_dataContextMock.Expect(mock => mock.GetQueryable<Nemesis>())
.Return(nemesisList.AsQueryable());
_nemesisRecalculator.RecalculateNemesis(_playerId, _currentUser);
_dataContextMock.AssertWasCalled(mock => mock.Save<Nemesis>(
Arg<Nemesis>.Matches(nem => nem.Id == _existingNemesisId
&& nem.MinionPlayerId == _playerId
&& nem.NemesisPlayerId == nemesisPlayerId
&& nem.NumberOfGamesLost == nemesisData.NumberOfGamesLost
&& nem.LossPercentage == nemesisData.LossPercentage),
Arg<ApplicationUser>.Is.Anything));
}