public void MoveDbDataIsEqualToKhPageData()
        {
            foreach (var characterFromDb in _characters)
            {
                var characterFromKhPage = new WebCharacter(characterFromDb);

                var unfilteredMovePageData = characterFromKhPage.FrameData.OfType<MoveStat>();
                var filteredMovesFromKhPage = FilterUnwantedRowsFromKhPageData(unfilteredMovePageData);

                var dbMovesForCharacter = _moves.Where(m => m.OwnerId == characterFromDb.Id).ToList();

                Assert.That(dbMovesForCharacter.Count, Is.GreaterThan(0));
                Assert.That(filteredMovesFromKhPage.Count, Is.GreaterThan(0));
                Assert.That(dbMovesForCharacter.Count, Is.EqualTo(filteredMovesFromKhPage.Count), $"Mismatch on move count for character '{characterFromDb.DisplayName}'");

                foreach (var move in WhereNotThrowMove(dbMovesForCharacter))
                {
                    var moveFromKhPage = filteredMovesFromKhPage.FirstOrDefault(khmove => khmove.Name.Equals(move.Name) &&
                                                                                          khmove.Angle.Equals(move.Angle) &&
                                                                                          khmove.AutoCancel.Equals(move.AutoCancel) &&
                                                                                          khmove.BaseDamage.Equals(move.BaseDamage) &&
                                                                                          khmove.BaseKnockBackSetKnockback.Equals(move.BaseKnockBackSetKnockback) &&
                                                                                          khmove.FirstActionableFrame.Equals(move.FirstActionableFrame) &&
                                                                                          khmove.HitboxActive.Equals(move.HitboxActive) &&
                                                                                          khmove.KnockbackGrowth.Equals(move.KnockbackGrowth) &&
                                                                                          khmove.LandingLag.Equals(move.LandingLag) &&
                                                                                          khmove.OwnerId == move.OwnerId);
                    Assert.That(moveFromKhPage, Is.Not.Null);
                }
            }
        }
        private void AssertCharacterDataMatches(BaseCharacterModel characterFromDb,
            WebCharacter webCharacterFromKhPage)
        {
            Assert.That(characterFromDb.Name, Is.Not.EqualTo(string.Empty));
            Assert.That(characterFromDb.Name, Is.Not.Null);

            Assert.That(characterFromDb.Name, Is.EqualTo(webCharacterFromKhPage.Name),
                $"{characterFromDb.Name} does not match Kh page value for character {webCharacterFromKhPage.Name}");

            Assert.That(characterFromDb.MainImageUrl, Is.EqualTo(webCharacterFromKhPage.MainImageUrl),
                $"{characterFromDb.Name} MainImageUrl does not match Kh page value for character {webCharacterFromKhPage.Name}");

            Assert.That(characterFromDb.ColorTheme, Is.EqualTo(webCharacterFromKhPage.ColorHex),
                $"{characterFromDb.Name} ColorTheme does not match Kh page value for character {webCharacterFromKhPage.Name}");

            //TODO: This is because of the additional layer between the roster and the characters for mii fighters
            //I'll adjust this if there is another patch.  Otherwise, it's just not worth it to verify right now.
            //Mii frame data is still pulled.
            if (!characterFromDb.Name.Contains("Mii"))
            {
                Assert.That(characterFromDb.ThumbnailUrl,
                    Is.EqualTo(_thumbnailUrls.First(t => t.Key.Equals(webCharacterFromKhPage.Name.ToUpper())).Url),
                    $"{characterFromDb.Name} ThumbnailUrl does not match Kh page value for character {webCharacterFromKhPage.Name}");
            }
        }
 public void CharacterDbDataIsEqualToKhPageData()
 {
     foreach (var characterFromDb in _characters)
     {
         var characterFromKhPage = new WebCharacter(characterFromDb);
         AssertCharacterDataMatches(characterFromDb, characterFromKhPage);
     }
 }
        public void MovementDbDataIsEqualToKhPageData()
        {
            foreach (var characterFromDb in _characters)
            {
                var characterFromKhPage = new WebCharacter(characterFromDb);

                var movementsFromKhPage = characterFromKhPage.FrameData.OfType<MovementStat>().ToList();

                var dbMovementsForCharacter = _movements.Where(m => m.OwnerId == characterFromDb.Id).ToList();

                Assert.That(dbMovementsForCharacter.Count, Is.GreaterThan(0));
                Assert.That(movementsFromKhPage.Count, Is.GreaterThan(0));
                Assert.That(dbMovementsForCharacter.Count, Is.EqualTo(movementsFromKhPage.Count));

                foreach (var movement in dbMovementsForCharacter)
                {
                    var movementFromKhPage = movementsFromKhPage.FirstOrDefault(khmove => khmove.Name.Equals(movement.Name) &&
                                                                                          khmove.Value.Equals(movement.Value) &&
                                                                                          khmove.OwnerId == movement.OwnerId);
                    Assert.That(movementFromKhPage, Is.Not.Null);
                }
            }
        }