From 65406f7b72f4004e4483573640cf0d555877dd55 Mon Sep 17 00:00:00 2001 From: Olivier Gayot Date: Sat, 25 Dec 2021 13:40:58 +0100 Subject: Make sure unit tests can be run from outside the package The cards from usr/share are not accessible when running the tests from a temporary directory. This happens for instance when running $ pybuild --test --test-pytest Make sure that this command would succeed by mocking the calls to open. Signed-off-by: Olivier Gayot --- tests/test_cards.py | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'tests') diff --git a/tests/test_cards.py b/tests/test_cards.py index a5e4437..73f42a0 100644 --- a/tests/test_cards.py +++ b/tests/test_cards.py @@ -1,19 +1,26 @@ +import json import unittest +from unittest.mock import patch, mock_open from swiftstory.cards import Cards class TestCards(unittest.TestCase): - def test_get_cards_fr(self): - self.assertTrue(Cards.get_white_cards("fr")) - self.assertTrue(Cards.get_black_cards("fr")) + def test_get_cards_supported_language(self): + white_cards = json.dumps([ + "White Card 1", "White Card 2", + "White Card 3", "White Card 4", + ]) + black_cards = json.dumps(["Black Card 1", "Black Card 2"]) - def test_get_cards_en(self): - self.assertTrue(Cards.get_white_cards("en")) - self.assertTrue(Cards.get_black_cards("en")) + with patch("swiftstory.cards.open", mock_open(read_data=white_cards)): + self.assertIn("White Card 2", Cards.get_white_cards("en")) + with patch("swiftstory.cards.open", mock_open(read_data=black_cards)): + self.assertIn("Black Card 1", Cards.get_black_cards("en")) def test_get_cards_unknown_language(self): - with self.assertRaises(FileNotFoundError): - Cards.get_white_cards("zz") - with self.assertRaises(FileNotFoundError): - Cards.get_black_cards("zz") + with patch("swiftstory.cards.open", side_effect=FileNotFoundError): + with self.assertRaises(FileNotFoundError): + Cards.get_white_cards("zz") + with self.assertRaises(FileNotFoundError): + Cards.get_black_cards("zz") -- cgit v1.2.3