def test_should_show_all_completed_items_if_there_are_three_or_fewer(): items = [ Item(1, 'Task 1', date.today(), 'Done'), Item(2, 'Task 2', date.today(), 'Done'), Item(3, 'Task 3', date.today(), 'Doing'), Item(4, 'Task 4', date.today(), 'Done'), ] view_model = ViewModel(items) assert view_model.show_all_done_items is True
def test_should_not_show_all_completed_items_if_there_are_more_than_three(): items = [ Item(1, 'Task 1', date.today(), 'Done'), Item(2, 'Task 2', date.today(), 'Done'), Item(3, 'Task 3', date.today(), 'Done'), Item(4, 'Task 4', date.today(), 'Done'), ] view_model = ViewModel(items) assert view_model.show_all_done_items is False
def test_recent_items_contain_only_items_last_modified_today(): items = [ Item(1, 'Done Yesterday', datetime(2020, 6, 15, 23, 59, 59), 'Done'), Item(2, 'Done Today', datetime(2020, 6, 16, 0, 0, 0), 'Done'), Item(3, 'Doing Today', datetime(2020, 6, 16, 9, 0, 0), 'Doing'), ] with freeze_time("2020-06-16 09:30:00"): view_model = ViewModel(items) assert view_model.recent_done_items == [ Item(2, 'Done Today', datetime(2020, 6, 16, 0, 0, 0), 'Done'), ]
def test_categories_are_empty_if_no_matching_items(): items = [Item(1, 'Task 1', date.today(), 'Other Status')] view_model = ViewModel(items) assert len(view_model.to_do_items) == 0 assert len(view_model.doing_items) == 0 assert len(view_model.done_items) == 0
def test_items_are_split_into_categories(): items = [ Item(1, 'Task 1', date.today(), 'Other Status'), Item(2, 'Task 2', date.today(), 'To Do'), Item(3, 'Task 3', date.today(), 'Done'), Item(4, 'Task 4', date.today(), 'To Do'), Item(5, 'Task 5', date.today(), 'Doing') ] view_model = ViewModel(items) assert view_model.to_do_items == [ Item(2, 'Task 2', date.today(), 'To Do'), Item(4, 'Task 4', date.today(), 'To Do') ] assert view_model.doing_items == [Item(5, 'Task 5', date.today(), 'Doing')] assert view_model.done_items == [Item(3, 'Task 3', date.today(), 'Done')]
def uncomplete_item(id): """ Moves the item with the specified ID to the "To-Do" list in Trello. Args: id (str): The ID of the item. Returns: item: The saved item, or None if no items match the specified ID. """ todo_list = get_list('To Do') card = move_card_to_list(id, todo_list) return Item.fromTrelloCard(card, todo_list)
def start_item(id): """ Moves the item with the specified ID to the "Doing" list in Trello. Args: id (str): The ID of the item. Returns: item: The saved item, or None if no items match the specified ID. """ doing_list = get_list('Doing') card = move_card_to_list(id, doing_list) return Item.fromTrelloCard(card, doing_list)
def get_items(): """ Fetches all items (known as "cards") from Trello. Returns: list: The list of saved items. """ lists = get_lists() items = [] for card_list in lists: for card in card_list['cards']: items.append(Item.fromTrelloCard(card, card_list)) return items
def add_item(name): """ Adds a new item with the specified name as a Trello card. Args: name (str): The name of the item. Returns: item: The saved item. """ todo_list = get_list('To Do') params = build_params({'name': name, 'idList': todo_list['id']}) url = build_url('/cards') response = requests.post(url, params=params) card = response.json() return Item.fromTrelloCard(card, todo_list)