def test_validate_corrections() -> None: all_sets = mtg_builder.determine_gatherer_sets({'all_sets': True}) assert all_sets empty_card_list: List[CardDescription] = [] for set_info in all_sets: with mtg_storage.open_set_config_json(set_info[1], 'r') as f: blob = json.load(f) if blob.get('SET_CORRECTIONS'): mtg_corrections.apply_corrections(blob['SET_CORRECTIONS'], empty_card_list)
async def test_w17(event_loop: asyncio.AbstractEventLoop) -> None: """ Very basic test. Can the scraper scrape Gatherer? """ w17 = mtg_builder.determine_gatherer_sets({'sets': ['W17'], 'all_sets': False}) builder = mtg_builder.MTGJSON(w17, loop=event_loop) json = await builder.build_set(w17[0], 'en') assert json["block"] == 'Amonkhet' assert json["border"] == 'black' assert len(json['cards']) == 30 assert json['code'] == 'W17'
async def test_chk(event_loop: asyncio.AbstractEventLoop) -> None: """ Scrape Champions of Kamigawa. Make sure those Flip Cards work. """ chk = mtg_builder.determine_gatherer_sets({'sets': ['CHK'], 'all_sets': False}) builder = mtg_builder.MTGJSON(chk, loop=event_loop) json = await builder.build_set(chk[0], 'en') lavarunner = [c for c in json['cards'] if c['multiverseid'] == 78694][0] assert lavarunner['name'] == 'Akki Lavarunner' assert lavarunner['names'] == ["Akki Lavarunner", "Tok-Tok, Volcano Born"] assert lavarunner["number"] == "153a" toktok = [c for c in json['cards'] if c['multiverseid'] == 78694][1] assert toktok['name'] == 'Tok-Tok, Volcano Born' assert toktok['names'] == ["Akki Lavarunner", "Tok-Tok, Volcano Born"] assert toktok["number"] == "153b"
async def test_emn(event_loop: asyncio.AbstractEventLoop) -> None: """ Eldrich Moon is a messy set. """ emn = mtg_builder.determine_gatherer_sets({ 'sets': ['EMN'], 'all_sets': False }) builder = mtg_builder.MTGJSON(emn, loop=event_loop) json = await builder.build_set(emn[0], 'en') chittering = [c for c in json['cards'] if c['name'] == "Chittering Host"] # assert len(chittering) == 1 assert chittering[0]['names'] == [ "Graf Rats", "Midnight Scavengers", "Chittering Host" ]
async def test_isd(event_loop: asyncio.AbstractEventLoop) -> None: """ Scrape Innistrad. Make sure those DFCs work. """ isd = mtg_builder.determine_gatherer_sets({'sets': ['ISD'], 'all_sets': False}) builder = mtg_builder.MTGJSON(isd, loop=event_loop) json = await builder.build_set(isd[0], 'en') assert len(json['cards']) == 284 delver = [c for c in json['cards'] if c['multiverseid'] == 226749][0] assert delver['name'] == 'Delver of Secrets' assert delver['names'] == ["Delver of Secrets", "Insectile Aberration"] assert delver["number"] == "51a" aberration = [c for c in json['cards'] if c['multiverseid'] == 226755][0] assert aberration['name'] == 'Insectile Aberration' assert aberration['names'] == ["Delver of Secrets", "Insectile Aberration"] assert aberration['number'] == '51b'
async def test_inv(event_loop: asyncio.AbstractEventLoop) -> None: """ Scrape Invasion. Make sure those Split Cards work. """ inv = mtg_builder.determine_gatherer_sets({ 'sets': ['INV'], 'all_sets': False }) builder = mtg_builder.MTGJSON(inv, loop=event_loop) json = await builder.build_set(inv[0], 'en') stand = [c for c in json['cards'] if c['multiverseid'] == 20573][0] assert stand['name'] == 'Stand' assert stand['names'] == ["Stand", "Deliver"] assert stand["number"] == "292a" assert stand["layout"] == 'split' deliver = [c for c in json['cards'] if c['multiverseid'] == 20573][1] assert deliver['name'] == 'Deliver' assert deliver['names'] == ["Stand", "Deliver"] assert deliver["number"] == "292b" assert deliver["layout"] == 'split'
cl_args = vars(arg_parser.parse_args()) # Get version info and exit if cl_args['version']: print(mtg_global.VERSION_INFO) exit(0) # If only full out, just build from what's there and exit if (cl_args['sets'] is None) and (not cl_args['all_sets']) and cl_args['full_out']: mtg_builder.create_combined_outputs() exit(0) # Global of all sets to build SETS_TO_BUILD = mtg_builder.determine_gatherer_sets(cl_args) # Start the build process start_time = time.time() card_loop: asyncio.AbstractEventLoop = asyncio.get_event_loop() # card_loop.set_debug(enabled=True) card_session = aiohttp.ClientSession( loop=card_loop, conn_timeout=60, read_timeout=60, raise_for_status=True, connector=aiohttp.TCPConnector(limit=200)) card_loop.run_until_complete(main(card_loop, card_session, cl_args)) if cl_args['full_out']: