def test_generate_report(self, workflow, default_options): user_args = default_options.copy() results = [ tasks.Result(workflow_ocr.GenerateOCRFileTask, {}), tasks.Result(workflow_ocr.GenerateOCRFileTask, {}), ] report = workflow.generate_report(results=results, **user_args) assert "Completed generating OCR 2 files" in report
def test_generate_report_creates_a_report(unconfigured_workflow): workflow, user_options = unconfigured_workflow job_args = {} results = [ tasks.Result(workflow_hathiprep.GenerateChecksumTask, data={"package_id": "123"}), tasks.Result(workflow_hathiprep.MakeYamlTask, data={"package_id": "123"}), ] message = workflow.generate_report(results, **job_args) assert "Report" in message
def test_generate_report(unconfigured_workflow): workflow, user_options = unconfigured_workflow job_args = {} results = [ tasks.Result(wf.TransformPackageTask, data=[]), tasks.Result(workflow_get_marc.MarcGeneratorTask, data=[]), tasks.Result(wf.MakeYamlTask, data=[]), tasks.Result(wf.GenerateChecksumTask, data=[]), ] message = workflow.generate_report(results, **job_args) assert isinstance(message, str) assert message.startswith("Results") and \ "1 objects transformed" in message and \ "1 marc.xml files generated" in message
def test_discover_task_metadata(monkeypatch, unconfigured_workflow): workflow, user_options = unconfigured_workflow additional_data = { 'title_pages': { '99423682912205899': "99423682912205899_0001.tif" } } initial_results = [ tasks.Result( wf.FindPackageTask, data=[Mock(metadata={ PackageMetadata.ID: "99423682912205899", })]) ] user_options["Source"] = "./some_real_source_folder" user_options["Destination"] = "./some_real_folder/", with monkeypatch.context() as mp: new_task_md = workflow.discover_task_metadata( initial_results=initial_results, additional_data=additional_data, **user_options) assert \ len(new_task_md) == 1 and \ new_task_md[0]['title_page'] == "99423682912205899_0001.tif" and \ new_task_md[0]['server_url'] == "http://fake.com" and \ new_task_md[0]['identifier_type'] == user_options['Identifier type']
def test_generate_report(self, workflow, default_options): ResultsValues = workflow_make_checksum.ResultsValues user_args = default_options.copy() results = [ tasks.Result( workflow_make_checksum.checksum_tasks.MakeChecksumTask, {ResultsValues.CHECKSUM_FILE: "checksum.md5"}) ] report = workflow.generate_report(results=results, **user_args) assert "Checksum values for" in report
def test_generate_report_success(unconfigured_workflow): workflow, user_options = unconfigured_workflow report = workflow.generate_report(results=[ tasks.Result(None, data={ "success": True, "identifier": "097" }) ]) assert "Success" in report
def test_generate_report_failure(self, workflow, default_options): user_args = default_options.copy() ResultValues = workflow_verify_checksums.ResultValues results = [ tasks.Result( workflow_verify_checksums.ChecksumTask, { ResultValues.CHECKSUM_REPORT_FILE: "checksum.md5", ResultValues.FILENAME: "file1.jp2", ResultValues.VALID: False, }), tasks.Result( workflow_verify_checksums.ChecksumTask, { ResultValues.CHECKSUM_REPORT_FILE: "checksum.md5", ResultValues.FILENAME: "file2.jp2", ResultValues.VALID: False, }), ] report = workflow.generate_report(results=results, **user_args) assert "2 files failed checksum validation." in report
def test_completion_task(self, workflow, default_options): user_args = default_options.copy() task_builder = Mock() ResultsValues = workflow_make_checksum.ResultsValues results = [ tasks.Result( workflow_make_checksum.checksum_tasks.MakeChecksumTask, {ResultsValues.CHECKSUM_FILE: "checksum.md5"}) ] workflow.completion_task(task_builder, results, **user_args) assert task_builder.add_subtask.called is True
def test_generate_report_on_success(self, workflow, default_options): user_options = default_options.copy() user_options["Input"] = os.path.join("some", "valid", "path") user_options['Profile'] = 'HathiTrust JPEG 2000' ResultValues = workflow_validate_metadata.ResultValues results = [ tasks.Result(workflow_validate_metadata.ValidateImageMetadataTask, {ResultValues.VALID: True}) ] report = workflow.generate_report(results, **user_options) assert isinstance(report, str) assert "Total files checked: 1" in report
def test_generate_report_failure(unconfigured_workflow): workflow, user_options = unconfigured_workflow report = workflow.generate_report(results=[ tasks.Result(None, data={ "success": False, "identifier": "097", "output": "Something bad happened" }) ]) assert "Warning" in report
def test_generator_report_success(self, workflow, default_options): result_enums = workflow_verify_checksums.ResultValues results = [ tasks.Result( workflow_verify_checksums.ValidateChecksumTask, { result_enums.VALID: True, result_enums.CHECKSUM_REPORT_FILE: "SomeFile.md5", result_enums.FILENAME: "somefile.txt" }) ] report = workflow.generate_report(results=results) assert isinstance(report, str) assert "passed checksum validation" in report
def test_generate_report_on_failure(self, workflow, default_options): user_options = default_options.copy() user_options["Input"] = os.path.join("some", "valid", "path") user_options['Profile'] = 'HathiTrust JPEG 2000' ResultValues = workflow_validate_metadata.ResultValues results = [ tasks.Result( workflow_validate_metadata.ValidateImageMetadataTask, { ResultValues.VALID: False, ResultValues.FILENAME: "MyFailingFile.jp2", ResultValues.REPORT: "spam.txt" }) ] report = workflow.generate_report(results, **user_options) assert isinstance(report, str) assert "MyFailingFile.jp2" in report
def test_get_additional_info(qtbot, monkeypatch): workflow = wf.CaptureOneBatchToHathiComplete() mock_package = MagicMock() mock_data = { "ID": "99423682912205899", "ITEM_NAME": "", "TITLE_PAGE": "99423682912205899_0001.tif", "PATH": "/some/random/path/" } def mock_get_item(obj, key): return mock_data.get(key.name, str(key)) mock_package.metadata.__getitem__ = mock_get_item mock_package.__len__ = lambda x: 1 pretask_result = tasks.Result(source=wf.FindPackageTask, data=[mock_package]) def patched_package_browser(packages, parent): patched_browser = \ speedwagon.workflows.title_page_selection.PackageBrowser( packages, parent ) patched_browser.exec = Mock() patched_browser.result = Mock(return_value=patched_browser.Accepted) data = MagicMock() data.metadata = MagicMock() data.metadata.__getitem__ = \ lambda _, k: mock_data.get(k.name, str(k)) patched_browser.data = Mock(return_value=[data]) return patched_browser with monkeypatch.context() as mp: mp.setattr(wf, "PackageBrowser", patched_package_browser) extra_data = workflow.get_additional_info( parent=None, options={}, pretask_results=[pretask_result]) assert extra_data['title_pages']['99423682912205899'] == \ "99423682912205899_0001.tif" assert isinstance(extra_data, dict)
def test_discover_task_metadata(self, workflow, default_options): user_options = default_options.copy() user_options["Language"] = "English" user_options["Path"] = os.path.join("some", "path") initial_results = [ tasks.Result(workflow_ocr.FindImagesTask, ["spam.jp2"]) ] additional_data = {} tasks_generated = workflow.discover_task_metadata( initial_results=initial_results, additional_data=additional_data, **user_options) assert len(tasks_generated) == 1 task = tasks_generated[0] assert task['lang_code'] == "eng" and \ task['source_file_path'] == "spam.jp2" and \ task["output_file_name"] == "spam.txt"
def test_generate_report_creates_a_report(unconfigured_workflow): workflow, user_options = unconfigured_workflow job_args = {} results = [ tasks.Result(workflow_completeness.HathiCheckMissingPackageFilesTask, data=[]), tasks.Result(workflow_completeness.HathiManifestGenerationTask, data="Manifest"), tasks.Result(workflow_completeness.HathiCheckMissingComponentsTask, data=[]), tasks.Result(workflow_completeness.ValidateChecksumsTask, data=[]), tasks.Result(workflow_completeness.ValidateMarcTask, data=[]), tasks.Result(workflow_completeness.ValidateYMLTask, data=[]), tasks.Result(workflow_completeness.ValidateExtraSubdirectoriesTask, data=[]), tasks.Result(workflow_completeness.PackageNamingConventionTask, data=[]), ] message = workflow.generate_report(results, **job_args) assert "Report" in message
def test_discover_task_metadata(self, workflow, default_options): initial_results = [ tasks.Result( source=workflow_verify_checksums.ReadChecksumReportTask, data=[{ 'expected_hash': 'something', 'filename': "somefile.txt", 'path': os.path.join("some", "path"), 'source_report': "checksums.md5" }]) ] additional_data = {} user_args = default_options.copy() job_metadata = workflow.discover_task_metadata( initial_results=initial_results, additional_data=additional_data, **user_args) assert len(job_metadata) == 1
def test_completion_task(self, monkeypatch, workflow, default_options): user_args = default_options.copy() task_builder = Mock() ResultsValues = workflow_make_checksum.ResultsValues results = [ tasks.Result( workflow_make_checksum.checksum_tasks.MakeChecksumTask, {ResultsValues.CHECKSUM_FILE: "checksum.md5"}) ] MakeCheckSumReportTask = Mock() monkeypatch.setattr(workflow_make_checksum.checksum_tasks, "MakeCheckSumReportTask", MakeCheckSumReportTask) workflow.completion_task(task_builder, results, **user_args) assert task_builder.add_subtask.called is True assert MakeCheckSumReportTask.called is True MakeCheckSumReportTask.assert_called_with("checksum.md5", ANY)
def test_discover_task_metadata(self, workflow, default_options): user_options = default_options.copy() user_options["Input"] = os.path.join("some", "valid", "path") user_options['Profile'] = 'HathiTrust JPEG 2000' initial_results = [ tasks.Result(workflow_validate_metadata.LocateImagesTask, ["spam.jp2"]) ] additional_data = {} tasks_generated = workflow.discover_task_metadata( initial_results=initial_results, additional_data=additional_data, **user_options) JobValues = workflow_validate_metadata.JobValues assert len(tasks_generated) == 1 assert tasks_generated[0] == { JobValues.ITEM_FILENAME.value: "spam.jp2", JobValues.PROFILE_NAME.value: user_options["Profile"] }