def should_render_all_cards(self): self.assertEqual( CardList(self.cards).render(), [ separator, u'Name 2UUU', u'Legendary Creature — Human Wizard', u'Text: (3/4) Rules Text (This is just an example.)', u'Time Spiral (Rare)', separator, u'Worldspine Wurm 8GGG', u'Creature — Wurm', u'Text: (15/15) Trample ; When Worldspine Wurm dies, put three 5/5 green', u'Wurm creature tokens with trample onto the battlefield. ; When', u'Worldspine Wurm is put into a graveyard from anywhere, shuffle it into', u'its owner\'s library.', u'Return to Ravnica (Mythic Rare)', u'\n2 results found.' ])
def lookup_card_(cardname): """ cardname = 'Wasteland' """ print('Lookup cardname = %r' % (cardname,)) from mtglib.gatherer_request import SearchRequest from mtglib.card_extractor import CardExtractor from mtglib.card_renderer import CardList from mtgmonte import mtgobjs #keys = ['block', 'cmc', 'color', 'colourize', 'exact', # 'exclude_other_colors', 'exclude_other_types', 'flavor', 'format', # 'hidesets', 'json', 'name', 'power', 'random', 'rarity', # 'reminder', 'rulings', 'set', 'special', 'text', 'tough', 'type'] with ut.Timer('Downloading card %s' % (cardname,)): request = SearchRequest({'name': cardname, 'exact': True}) card_source = request.url cards = CardExtractor(card_source).cards double_sided_cards = { 'Jace, Vryn\'s Prodigy', } assert len(cards) != 0, 'no match' if len(cards) == 2: # check if double sided. card = cards[0] if card.name in double_sided_cards: card.other_side = cards[1] cards = [card] cards = [card_ for card_ in cards if card_.name == cardname] if len(cards) != 1: cardlist = CardList(cards) cardlist.render() print('cards = %r' % (cards,)) assert len(cards) == 1, 'should only be one card' assert len(cards) != 0, 'no match' card2 = mtgobjs.Card2() card2.__dict__.update(cards[0].__dict__) return card2
def should_remove_empty_json_keys(self): cardlist = CardList(self.cards, json=True) cards = json.loads(''.join(cardlist.render())) self.assertTrue('loyalty' not in cards[0])
def should_render_json_lists(self): cardlist = CardList(self.cards, json=True) cards = json.loads(''.join(cardlist.render())) self.assertTrue('name' in cards[0])
def should_give_message_if_no_results(self): cardlist = CardList([]) self.assertEqual(cardlist.render(), ['No results found.'])
def should_correctly_pluralize_results(self): cardlist = CardList([Card(), Card(), Card()]) self.assertEqual(cardlist.num_results(), '\n3 results found.')
def should_correctly_singularize_results(self): cardlist = CardList([Card()]) self.assertEqual(cardlist.num_results(), '\n1 result found.')