"""Unit tests for DynamoDB task status management functions.""" from unittest.mock import patch from analytics_aggregation.util import task_status @patch('analytics_aggregation.util.task_status.feed_status') def test_get_completed_tasks(feed_status): """Test get_completed_tasks.""" # some tasks exist feed_status._get_item.return_value = { 'completed_tasks_status': 'foo,bar,baz'} tasks = task_status.get_completed_tasks('unit test', 'today') assert tasks == ['foo', 'bar', 'baz'] assert feed_status._get_item.called_with('unit test', 'today') feed_status._get_item.return_value = {'completed_tasks_status': 'foo'} tasks = task_status.get_completed_tasks('unit test', 'today') assert tasks == ['foo'] # no tasks exist but DynamoDB item exists feed_status._get_item.return_value = {'completed_tasks_status': ''} tasks = task_status.get_completed_tasks('unit test', 'today') assert tasks == [] # DynamoDB item does not exists feed_status._get_item.return_value = False tasks = task_status.get_completed_tasks('unit test', 'today') assert tasks == [] @patch('analytics_aggregation.util.task_status.feed_status') def test_is_completed_task(feed_status): """Test is_completed_task.""" feed_status._get_item.return_value = { 'completed_tasks_status': 'foo,bar,baz'} assert task_status.is_completed_task('unit test', 'today', 'foo') assert feed_status._get_item.called_with('unit test', 'today') feed_status._get_item.return_value = { 'completed_tasks_status': 'foo,bar,baz'} assert not task_status.is_completed_task( 'unit test', 'today', 'does not exist') # no recorded item feed_status._get_item.return_value = False assert not task_status.is_completed_task( 'unit test', 'today', 'does not exist') @patch('analytics_aggregation.util.task_status.feed_status') def test_mark_completed_task(feed_status): """Test mark_completed_task.""" # append additional task feed_status._get_item.return_value = {'completed_tasks_status': 'foo,bar'} task_status.mark_completed_task('unit test', 'today', 'baz') assert feed_status.set_status.called_with( 'unit test', 'today', 'foo,bar,baz') # first task feed_status._get_item.return_value = {'completed_tasks_status': ''} task_status.mark_completed_task('unit test', 'today', 'first') assert feed_status.set_status.called_with('unit test', 'today', 'first') feed_status._get_item.return_value = False task_status.mark_completed_task('unit test', 'today', 'first') assert feed_status.set_status.called_with('unit test', 'today', 'first')