import pytest import os import glob import yaml import subprocess project_root_path = os.path.realpath(os.path.join(__file__, '..', '..')) script_path = os.path.join(project_root_path, 'scripts', 'order-confirmation-mail-parser') test_data_path = os.path.join(project_root_path, 'tests', 'data') def test_integration_stdin(): for mail_path in glob.glob(os.path.join(test_data_path, '*', 'mail_*.eml')): with open(mail_path, 'r') as mail_file: process = subprocess.Popen([script_path], stdin = subprocess.PIPE, stdout = subprocess.PIPE) script_stdout, script_stderr = process.communicate(input = mail_file.read()) result = yaml.load(script_stdout) with open(mail_path.replace('.eml', '.yml'), 'r') as expected_result_file: expected_result = yaml.load(expected_result_file.read()) assert result == expected_result, 'unexpected result for ' + os.path.basename(mail_path) def test_integration_path(): result = yaml.load(subprocess.check_output([ script_path, os.path.join(test_data_path, 'amazon', 'mail_1.eml'), os.path.join(test_data_path, 'oebb', 'mail_1.eml'), os.path.join(test_data_path, 'oebb', 'mail_2.eml'), ])) expected_result = [] for result_path in [ os.path.join(test_data_path, 'amazon', 'mail_1.yml'), os.path.join(test_data_path, 'oebb', 'mail_1.yml'), os.path.join(test_data_path, 'oebb', 'mail_2.yml'), ]: with open(result_path) as yaml_file: expected_result += yaml.load(yaml_file.read()) assert result == expected_result def test_catalogue(tmpdir): os.chdir(tmpdir.strpath) import shutil shutil.copyfile(os.path.join(test_data_path, 'amazon', 'mail_8.eml'), 'mail.eml') assert os.listdir('.') == ['mail.eml'] orders = yaml.load(subprocess.check_output([ script_path, '--catalogue', 'mail.eml', ])) assert os.listdir('.') == ['amazon.de'] assert os.listdir('amazon.de') == ['028-6176648-7157123', '028-0273468-3485109'] assert os.listdir(os.path.join('amazon.de', '028-6176648-7157123')) == ['mail.eml'] assert os.listdir(os.path.join('amazon.de', '028-0273468-3485109')) == ['mail.eml']