public void Handle_UpdateGameDetails_NonExisting()
        {
            var dateTime = new Mock <IDateTime>();

            var command = new UpdateGameDetails()
            {
                ID = 1,
            };

            var updateGameDetailsHandler = new UpdateGameDetailsHandler(NewContext, dateTime.Object);

            Func <Task> act = async() => await updateGameDetailsHandler.Handle(command, CancellationToken.None);

            act.Should().Throw <NotFoundException>();
        }
        public async void Handle_UpdateGameDetails_Existing()
        {
            var account         = BogusData.MixedAccounts.Generate();
            var skills          = BogusData.GenerateRandomSkills();
            var skillDictionary = skills.ToDictionary(s => s.Type, s => s.Level);

            using (var context = NewContext)
            {
                context.Accounts.Add(account);
                await context.SaveChangesAsync();
            }

            var now      = DateTime.UtcNow;
            var datetime = new Mock <IDateTime>();

            datetime.Setup(d => d.UtcNow).Returns(now);

            const int daysRemaining = 5;
            var       command       = new UpdateGameDetails
            {
                ID = account.ID,
                MembershipDaysRemaining = daysRemaining,
                Skills = skillDictionary
            };

            var updateGameDetailsHandler = new UpdateGameDetailsHandler(NewContext, datetime.Object);

            await updateGameDetailsHandler.Handle(command, CancellationToken.None);

            var newDate = now.AddDays(daysRemaining);

            var uAccount = await NewContext.Accounts.FindAsync(account.ID);

            uAccount.MemberExpirationDate.Should().Be(newDate);
            uAccount.Skills.Should().BeEquivalentTo(skills);
        }