def test_sorted_filtered_model_updates_when_data_item_exits_filter(self): def sort_by_date_key(data_item): return data_item.created with TestContext.create_memory_context() as test_context: document_model = test_context.create_document_model() filtered_data_items = ListModel.FilteredListModel(items_key="data_items") filtered_data_items.container = document_model filtered_data_items.filter = ListModel.NotFilter(ListModel.EqFilter("is_live", True)) filtered_data_items.sort_key = sort_by_date_key for _ in range(4): data_item = DataItem.DataItem(numpy.zeros((16, 16), numpy.uint32)) document_model.append_data_item(data_item) self.assertEqual(len(filtered_data_items.items), 4) with document_model.data_item_live(document_model.data_items[0]): document_model.data_items[0].data_item_changed_event.fire() self.assertEqual(len(filtered_data_items.items), 3)
def test_inserting_items_into_model_index0_without_sort_key__but_with_filter_puts_them_in_same_order(self): values = ["DEF", "ABC", "GHI", "DFG", "ACD", "GIJ"] indexes = [0, 0, 1, 1, 2, 4] result = ["ABC", "DFG", "ACD", "GHI", "GIJ", "DEF"] list_model = ListModel.ListModel("data_items") filtered_data_items = ListModel.FilteredListModel(items_key="data_items") filtered_data_items.container = list_model filtered_data_items.filter = ListModel.NotFilter(ListModel.StartsWithFilter("title", "D")) data_items = list() for index, value in enumerate(values): data_item = DataItem.DataItem(numpy.zeros((16, 16), numpy.uint32)) data_item.title = value list_model.insert_item(indexes[index], data_item) data_items.append(data_item) self.assertEqual([d.title for d in filtered_data_items.items], [v for v in result if not v.startswith("D")]) for data_item in data_items: data_item.close()