feat: sync latest ARR implementation
This commit is contained in:
@@ -134,9 +134,11 @@ class FakeBuilder:
|
||||
def __init__(self, failing_company: Optional[str] = None):
|
||||
self.failing_company = failing_company
|
||||
self.companies = []
|
||||
self.reports = []
|
||||
|
||||
def build(self, report, work_dir: Path) -> BuiltWorkbook:
|
||||
self.companies.append(report.company)
|
||||
self.reports.append(report)
|
||||
if report.company == self.failing_company:
|
||||
raise BuildError(
|
||||
ErrorCode.OUTPUT_VALIDATION_FAILED,
|
||||
@@ -180,8 +182,16 @@ class FakePublisher:
|
||||
|
||||
|
||||
class CompanyReportServiceTests(unittest.TestCase):
|
||||
def test_invalid_company_is_isolated_while_valid_company_succeeds(self):
|
||||
repository = FakeRepository(synthetic_snapshot(include_invalid_hana=True))
|
||||
def test_missing_and_unmatched_group_codes_succeed_with_blank_booking_room(self):
|
||||
source_snapshot = synthetic_snapshot(include_invalid_hana=True)
|
||||
repository = FakeRepository(
|
||||
BatchSnapshot(
|
||||
facts=source_snapshot.facts,
|
||||
room_items=(),
|
||||
daily_versions=source_snapshot.daily_versions,
|
||||
group_parse_versions={},
|
||||
)
|
||||
)
|
||||
builder = FakeBuilder()
|
||||
publisher = FakePublisher()
|
||||
with tempfile.TemporaryDirectory(prefix="company-report-service-test-") as temp_dir:
|
||||
@@ -200,12 +210,20 @@ class CompanyReportServiceTests(unittest.TestCase):
|
||||
)
|
||||
)
|
||||
|
||||
self.assertEqual(result.status, "partial_failure")
|
||||
self.assertEqual(result.exit_code, 2)
|
||||
self.assertEqual([item.status for item in result.companies], ["success", "failed"])
|
||||
self.assertEqual(builder.companies, ["QBD"])
|
||||
self.assertEqual(publisher.companies, ["QBD"])
|
||||
self.assertEqual(result.companies[1].errors[0]["code"], ErrorCode.GROUP_CODE_MISSING)
|
||||
self.assertEqual(result.status, "success")
|
||||
self.assertEqual(result.exit_code, 0)
|
||||
self.assertEqual([item.status for item in result.companies], ["success", "success"])
|
||||
self.assertEqual(builder.companies, ["QBD", "HanaTour"])
|
||||
self.assertEqual(publisher.companies, ["QBD", "HanaTour"])
|
||||
qbd_report, hana_report = builder.reports
|
||||
self.assertEqual(qbd_report.row_count, 1)
|
||||
self.assertEqual(qbd_report.periods[0].rows[0].res_comment, "SYN-GROUP-A")
|
||||
self.assertEqual(qbd_report.periods[0].rows[0].booking_room, "")
|
||||
self.assertEqual(hana_report.row_count, 1)
|
||||
self.assertEqual(hana_report.periods[0].rows[0].res_comment, "")
|
||||
self.assertEqual(hana_report.periods[0].rows[0].booking_room, "")
|
||||
self.assertEqual(result.companies[0].errors, ())
|
||||
self.assertEqual(result.companies[1].errors, ())
|
||||
serialized = json.dumps(result.to_dict(), ensure_ascii=False)
|
||||
self.assertNotIn("SYN-GROUP-A", serialized)
|
||||
self.assertNotIn("SYN-BLOCK", serialized)
|
||||
|
||||
Reference in New Issue
Block a user