| # Function
|
| def identify(self, file) -> bool:
|
| """ Identifiyes if given file is a MyEdenred JSON file
|
|
|
| The file must be named myendeenred-*.json to ben open
|
| The card number and holder must match the Class Initialized Ones
|
|
|
| Returns
|
| -------
|
| Bool if the file is valied
|
| """
|
| if re.match("my_edenred_file.*.json", os.path.basename(file.name)):
|
| with open(file.name, "r") as my_edenred_file:
|
| try:
|
| json_data = json.load(my_edenred_file)
|
|
|
| account_data = json_data["data"]["account"]
|
|
|
| if account_data["cardNumber"] == self.card_number and account_data["cardHolderFirstName"] == self.card_holder:
|
| print("File {f}, matches card number {c}".format(
|
| f = file.name,
|
| c = self.card_number
|
| ))
|
| return True
|
| except json.JSONDecodeError as error:
|
| print("Not a valid json:", error)
|
|
|
| return False
|
|
|
| # Test
|
| def test_identify_header_file(tmp_file):
|
| importer = MyEdenredImporter(card_number = card_number, card_holder = card_holder)
|
| dumb_importer = MyEdenredImporter(card_number = 17278787989898, card_holder = "Ze Berto")
|
|
|
| tmp_file.write_text(
|
| dedent(
|
| """
|
| {
|
| "data": {
|
| "account": {
|
| "iban": null,
|
| "cardNumber": "6368250092183460",
|
| "availableBalance": 135.15,
|
| "cardHolderFirstName": "CATIA VALE",
|
| "cardHolderLastName": "WESTRAGS LDA",
|
| "cardActivated": true
|
| },
|
| }
|
| }
|
| """
|
| ).strip()
|
| )
|
|
|
| with tmp_file.open() as file:
|
| assert not dumb_importer.identify(file)
|
| assert importer.identify(file)
|
|
|
| # Error
|
| test/test_MyEdenrend.py::test_identify_not_correct PASSED
|
| test/test_MyEdenrend.py::test_identify_header_file FAILED
|
|
|
| ===================================================== FAILURES =====================================================
|
| ____________________________________________ test_identify_header_file _____________________________________________
|
|
|
| tmp_file = PosixPath('/tmp/pytest-of-masterkorp/pytest-2/test_identify_header_file0/myedenred20230806.json')
|
|
|
| def test_identify_header_file(tmp_file):
|
| importer = MyEdenredImporter(card_number = card_number, card_holder = card_holder)
|
| dumb_importer = MyEdenredImporter(card_number = 17278787989898, card_holder = "Ze Berto")
|
|
|
| tmp_file.write_text(
|
| dedent(
|
| """
|
| {
|
| "data": {
|
| "account": {
|
| "iban": null,
|
| "cardNumber": "6368250092183460",
|
| "availableBalance": 135.15,
|
| "cardHolderFirstName": "CATIA VALE",
|
| "cardHolderLastName": "WESTRAGS LDA",
|
| "cardActivated": true
|
| },
|
| }
|
| }
|
| """
|
| ).strip()
|
| )
|
|
|
| with tmp_file.open() as file:
|
| assert not dumb_importer.identify(file)
|
| > assert importer.identify(file)
|
| E AssertionError: assert False
|
| E + where False = <bound method MyEdenredImporter.identify of <importers.myedenred.MyEdenredImporter object at 0x7f7b1ce45890>>(<_io.TextIOWrapper name='/tmp/pytest-of-masterkorp/pytest-2/test_identify_header_file0/myedenred20230806.json' mode='r' encoding='UTF-8'>)
|
| E + where <bound method MyEdenredImporter.identify of <importers.myedenred.MyEdenredImporter object at 0x7f7b1ce45890>> = <importers.myedenred.MyEdenredImporter object at 0x7f7b1ce45890>.identify
|
|
|
| test/test_MyEdenrend.py:60: AssertionError
|
| ============================================= short test summary info ==============================================
|
| FAILED test/test_MyEdenrend.py::test_identify_header_file - AssertionError: assert False
|
| =========================================== 1 failed, 8 passed in 0.53s ============================================
|
| task: Failed to run task "test": exit status 1
|