← back to Dw Repair Debug TK11314

test_worklist_progress.py

37 lines

import unittest
from worklist_progress import split_work, summarize


class ProgressTests(unittest.TestCase):
    def test_shared_or_blank_sku_does_not_complete_other_products(self):
        for sku in ('DW-SHARED', None):
            work = [{'shopify_id': 'gid://shopify/Product/1', 'dw_sku': sku, 'fix_type': 'add-sample'},
                    {'shopify_id': 'gid://shopify/Product/2', 'dw_sku': sku, 'fix_type': 'add-sample'}]
            audit = [{'product_id': '1', 'dw_sku': sku, 'fix': 'add-sample', 'status': 'fixed'}]
            self.assertEqual(split_work(work, audit)[1], [work[1]])

    def test_sample_completion_does_not_complete_roll_repair(self):
        work = [{'shopify_id': '1', 'fix_type': 'add-sample'}, {'shopify_id': '1', 'fix_type': 'build-roll'}]
        audit = [{'product_id': '1', 'fix': 'add-sample', 'status': 'skipped'}]
        self.assertEqual(split_work(work, audit)[1], [work[1]])

    def test_duplicates_and_unrelated_audit_do_not_distort_remaining(self):
        row = {'shopify_id': '1', 'fix_type': 'add-sample'}
        audit = [{'product_id': '2', 'fix': 'add-sample', 'status': 'fixed'}] * 20
        self.assertEqual(summarize([row, row], audit), {'source_rows': 2, 'total': 1, 'done': 0, 'remaining': 1})

    def test_errors_and_incomplete_history_cannot_complete_a_task(self):
        row = {'shopify_id': '1', 'fix_type': 'add-sample'}
        audit = [{'product_id': '1', 'fix': 'add-sample', 'status': 'errored'},
                 {'dw_sku': 'DW-1', 'fix': 'add-sample', 'status': 'fixed'}]
        self.assertEqual(split_work([row], audit)[1], [row])

    def test_completed_tasks_are_idempotent(self):
        row = {'shopify_id': 'gid://shopify/Product/1', 'fix_type': 'add-sample'}
        audit = [{'product_id': '1', 'fix': 'add-sample', 'status': 'fixed'}] * 2
        self.assertEqual(summarize([row], audit)['remaining'], 0)


if __name__ == '__main__':
    unittest.main()