public async Task GetProperYDKString_ReturnDecklistWithFilledFieldsAsync()
        {
            using (var dbInMemory = new YgoProAnalyticsDatabase(_getOptionsForSqlInMemoryTesting <YgoProAnalyticsDatabase>()))
            {
                dbInMemory.Database.EnsureCreated();
                var archetype = new Archetype(Archetype.Default, true);
                _addPSYFrameDriver(dbInMemory, archetype);
                _addMokeyMokeyKing(dbInMemory, archetype);
                _addChecksumDragon(dbInMemory, archetype);
                _addPankratops(dbInMemory, archetype);
                await dbInMemory.SaveChangesAsync();

                _converter = new YDKToDecklistConverter(dbInMemory, _downloaderMock.Object, _adminConfigMock.Object);
                var decklist = _converter.Convert(GetProperYDKString());
                decklist.Name      = "Test";
                decklist.Archetype = new Archetype(Archetype.Default, true);
                dbInMemory.Decklists.Add(decklist);
                await dbInMemory.SaveChangesAsync();

                var decklistFromDb = dbInMemory.Decklists.First();

                Assert.Multiple(() =>
                {
                    //tests if a beta card (Cheksum dragon with betaid:100336006) is converted to 94136469
                    Assert.IsNotNull(decklistFromDb.MainDeck.FirstOrDefault(x => x.PassCode == 94136469));
                    Assert.AreEqual(decklistFromDb.MainDeck, decklist.MainDeck);
                    Assert.AreEqual(decklistFromDb.ExtraDeck, decklist.ExtraDeck);
                    Assert.AreEqual(decklistFromDb.SideDeck, decklist.SideDeck);
                });
            }
        }
        private void _assignConvertedDecklistToProperCollection(
            KeyValuePair <DateTime, List <DecklistWithName> > decklistsAsStringsWithFilenames,
            List <Decklist> allDecksWhichWonFromThePack,
            List <Decklist> allDecksWhichLostFromThePack,
            DuelLog duelLog)
        {
            foreach (var deckWhichWonFileName in duelLog.DecksWhichWonFileNames)
            {
                var decklistWithFileName = decklistsAsStringsWithFilenames.Value.FirstOrDefault(x => x.DecklistFileName == deckWhichWonFileName);
                if (decklistWithFileName == null)
                {
                    continue;
                }

                Decklist decklist = _yDKToDecklistConverter.Convert(decklistWithFileName.DecklistData);
                decklist.WhenDecklistWasFirstPlayed = duelLog.DateOfTheBeginningOfTheDuel.Date;
                allDecksWhichWonFromThePack.Add(
                    decklist
                    );
            }

            foreach (var deckWhichLostFileName in duelLog.DecksWhichLostFileNames)
            {
                var decklistWithFileName = decklistsAsStringsWithFilenames.Value.FirstOrDefault(x => x.DecklistFileName == deckWhichLostFileName);
                if (decklistWithFileName == null)
                {
                    //TODO log if file is missing
                    continue;
                }

                Decklist decklist = _yDKToDecklistConverter.Convert(decklistWithFileName.DecklistData);
                decklist.WhenDecklistWasFirstPlayed = duelLog.DateOfTheBeginningOfTheDuel.Date;
                allDecksWhichLostFromThePack.Add(
                    decklist
                    );
            }
        }