← back to Dw Five Field Step0
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()