Exemplo n.º 1
0
    def test_base_deck_from_json(self):
        deck = BaseDeck.generate_deck(card_cls=PlayingCard,
                                      card_config=self.card_config)
        deck_json = deck.to_json()

        new_deck = BaseDeck.from_json(card_cls=PlayingCard,
                                      deck_json=deck_json)
        self.assertEqual(new_deck.cards_remaining, 1)

        card = new_deck.draw_card()
        self.assertEqual(card.suit, 'SPADES')
        self.assertEqual(card.rank, 'ACE')
Exemplo n.º 2
0
    def test_base_deck_from_json(self):
        deck = BaseDeck.generate_deck(
            card_cls=PlayingCard,
            card_config=self.card_config)
        deck_json = deck.to_json()

        new_deck = BaseDeck.from_json(card_cls=PlayingCard, deck_json=deck_json)
        self.assertEqual(new_deck.cards_remaining, 1)

        card = new_deck.draw_card()
        self.assertEqual(card.suit, 'SPADES')
        self.assertEqual(card.rank, 'ACE')
Exemplo n.º 3
0
    def on_post(self, req, res):
        count = req.context["data"]["count"]
        api_key = req.context["api_key"]

        cards = list(PlayingCardWithImages.generate_cards(config=DEFAULT_CARDS_CONFIG))
        deck = BaseDeck(cards=cards, count=count)
        deck.shuffle()

        sql_params = [api_key, deck.to_json()]
        self.cursor.callproc("sp_app_deck_insert", sql_params)
        result = self.cursor.fetchone()

        req.context["result"] = to_deck_response(id=result[0]["id"], deck=deck)
        res.status = falcon.HTTP_201
Exemplo n.º 4
0
 def test_base_deck_to_dict(self):
     deck = BaseDeck.generate_deck(
         card_cls=PlayingCard,
         card_config=self.card_config)
     deck_dict = deck.to_dict()
     self.assertEqual(deck_dict['cards_remaining'][0]['rank'], 'ACE')
     self.assertEqual(deck_dict['cards_remaining'][0]['suit'], 'SPADES')
Exemplo n.º 5
0
 def test_base_deck_to_json(self):
     deck = BaseDeck.generate_deck(card_cls=PlayingCard,
                                   card_config=self.card_config)
     deck_json = deck.to_json()
     deck_dict = json.loads(deck_json)
     self.assertEqual(deck_dict['cards_remaining'][0]['rank'], 'ACE')
     self.assertEqual(deck_dict['cards_remaining'][0]['suit'], 'SPADES')
Exemplo n.º 6
0
    def test_drawing_from_empty_base_deck(self):
        deck = BaseDeck.generate_deck(card_cls=PlayingCard,
                                      card_config=self.card_config)
        self.assertEqual(deck.cards_remaining, 1)
        self.assertEqual(deck.cards_removed, 0)

        deck.draw_card()
        self.assertRaises(NoCardsRemaining, deck.draw_card)
Exemplo n.º 7
0
    def test_drawing_from_empty_base_deck(self):
        deck = BaseDeck.generate_deck(
            card_cls=PlayingCard,
            card_config=self.card_config)
        self.assertEqual(deck.cards_remaining, 1)
        self.assertEqual(deck.cards_removed, 0)

        deck.draw_card()
        self.assertRaises(NoCardsRemaining, deck.draw_card)
Exemplo n.º 8
0
    def on_get(self, req, res, deck_id):
        api_key = req.context["api_key"]

        self.cursor.callproc("sp_app_deck_select", [deck_id, api_key])
        result = self.cursor.fetchone()
        if not result:
            raise falcon.HTTPNotFound

        deck = BaseDeck.from_dict(card_cls=PlayingCardWithImages, deck_dict=result[0]["deck"])
        req.context["result"] = to_deck_response(id=result[0]["id"], deck=deck)
        res.status = falcon.HTTP_200
Exemplo n.º 9
0
    def on_get(self, req, res):
        api_key = req.context["api_key"]

        self.cursor.callproc("sp_app_deck_list", [api_key])
        result = self.cursor.fetchone()

        req.context["result"] = []
        for r in result[1]:
            deck = BaseDeck.from_dict(card_cls=PlayingCardWithImages, deck_dict=r["deck"])
            req.context["result"].append(to_deck_response(id=r["id"], deck=deck))
        res.status = falcon.HTTP_200
Exemplo n.º 10
0
    def test_generate_base_deck(self):
        deck = BaseDeck.generate_deck(card_cls=PlayingCard,
                                      card_config=self.card_config)
        self.assertEqual(deck.cards_remaining, 1)
        self.assertEqual(deck.cards_removed, 0)

        card = deck.draw_card()
        self.assertTrue(isinstance(card, PlayingCard))
        self.assertEqual(card.rank, 'ACE')
        self.assertEqual(card.suit, 'SPADES')
        self.assertEqual(deck.cards_remaining, 0)
        self.assertEqual(deck.cards_removed, 1)

        deck.shuffle()
        self.assertEqual(deck.cards_remaining, 1)
        self.assertEqual(deck.cards_removed, 0)
Exemplo n.º 11
0
    def test_generate_base_deck(self):
        deck = BaseDeck.generate_deck(
            card_cls=PlayingCard,
            card_config=self.card_config)
        self.assertEqual(deck.cards_remaining, 1)
        self.assertEqual(deck.cards_removed, 0)

        card = deck.draw_card()
        self.assertTrue(isinstance(card, PlayingCard))
        self.assertEqual(card.rank, 'ACE')
        self.assertEqual(card.suit, 'SPADES')
        self.assertEqual(deck.cards_remaining, 0)
        self.assertEqual(deck.cards_removed, 1)

        deck.shuffle()
        self.assertEqual(deck.cards_remaining, 1)
        self.assertEqual(deck.cards_removed, 0)
Exemplo n.º 12
0
    def on_post(self, req, res, deck_id):
        api_key = req.context["api_key"]
        count = req.context["data"]["count"]

        self.cursor.callproc("sp_app_deck_select", [deck_id, api_key])
        result = self.cursor.fetchone()
        if not result:
            raise falcon.HTTPNotFound

        deck = BaseDeck.from_dict(card_cls=PlayingCardWithImages, deck_dict=result[0]["deck"])
        try:
            cards = [deck.draw_card() for _ in range(count)]
        except NoCardsRemaining:
            raise falcon.HTTPConflict(title="Conflict", description="Deck is empty")

        self.cursor.callproc("sp_app_deck_update", [deck_id, api_key, deck.to_json()])

        req.context["result"] = {
            "deck": to_deck_response(id=result[0]["id"], deck=deck),
            "cards": [card.to_dict() for card in cards],
        }
        res.status = falcon.HTTP_200