def test_remove_filtered(self, dao: TinyDbDao): ids = dao.filter(pred_a).remove() assert ids == [1] assert list(dao.all()) == [ {'char': 'b', 'is_a': False}, {'char': 'c', 'is_a': False}, ]
def test_remove_filtered_by_id(self, dao: TinyDbDao): ids = dao.filter(pred_not_a).filter_by(id_=2).remove() assert ids == [2] assert list(dao.all()) == [ {'char': 'a', 'is_a': True}, {'char': 'c', 'is_a': False}, ]
def test_update_filtered(self, dao: TinyDbDao): ids = dao.filter(pred_not_a).update(char='z') assert ids == [2, 3] assert list(dao.all()) == [ {'char': 'a', 'is_a': True}, {'char': 'z', 'is_a': False}, {'char': 'z', 'is_a': False}, ]
def test_update_all(self, dao: TinyDbDao): ids = dao.all().update(char='z') assert ids == [1, 2, 3] assert list(dao.all()) == [ {'char': 'z', 'is_a': True}, {'char': 'z', 'is_a': False}, {'char': 'z', 'is_a': False}, ]
def test_update_all(self, dao: TinyDbDao): ids = dao.all().update(char='z') assert ids == [1, 2, 3] assert list(dao.all()) == [ {'char': 'z', 'is_a': True}, {'char': 'z', 'is_a': False}, {'char': 'z', 'is_a': False}, ]
def test_update_filtered(self, dao: TinyDbDao): ids = dao.filter(pred_not_a).update(char='z') assert ids == [2, 3] assert list(dao.all()) == [ {'char': 'a', 'is_a': True}, {'char': 'z', 'is_a': False}, {'char': 'z', 'is_a': False}, ]
def test_remove_none(self, dao: TinyDbDao): ids = dao.filter(pred_z).remove() assert ids == [] assert list(dao.all()) == [ {'char': 'a', 'is_a': True}, {'char': 'b', 'is_a': False}, {'char': 'c', 'is_a': False}, ]
def dao(self, mock_container): """ In-memory table that has three documents pre-assigned: {'char': 'a', 'is_a': True}, {'char': 'b', 'is_a': False}, {'char': 'c', 'is_a': False} """ dao = TinyDbDao(mock_container, table_name='table_name') dao.batch_insert([ {'char': c, 'is_a': c == 'a'} for c in 'abc' ]) return dao
def test_insert(self, dao: TinyDbDao): id_ = dao.insert(foo='bar') assert id_ == 4
def json_dao(self, mock_container, path): dao = TinyDbDao(mock_container, path=path, table_name='table_name') yield dao dao.clear_db_cache()
def test_dao_filter_by_success(self, dao: TinyDbDao): assert list(dao.filter_by(id_=3)) == [{'char': 'c', 'is_a': False}]
def test_get_success(self, dao: TinyDbDao): assert dao.get(1) == {'char': 'a', 'is_a': True}
def test_filtered_get_fail(self, dao: TinyDbDao): assert dao.filter(pred_not_a).get(1) is None
def test_multiple_filter_success(self, dao: TinyDbDao): assert list(dao.filter(pred_not_a).filter(pred_c)) == [ {'char': 'c', 'is_a': False} ]
def test_filtered_count(self, dao: TinyDbDao): assert dao.filter(pred_not_a).count() == 2
def test_batch_insert(self, dao: TinyDbDao): batch = [{'foo': 'bar'}, {'foo': 'baz'}] result = dao.batch_insert(batch) assert result == (4, 5) assert list(dao.filter(where('foo').exists())) == batch
def test_count_all(self, dao: TinyDbDao): assert dao.all().count() == 3
def test_exists_filtered_fail(self, dao: TinyDbDao): assert not dao.filter(pred_z).exists()
def test_exists_filtered_success(self, dao: TinyDbDao): assert dao.filter(pred_c).exists()
def test_exists_empty_fail(self, dao: TinyDbDao): dao.clear() assert not dao.all().exists()
def test_exists_all_success(self, dao: TinyDbDao): assert dao.all().exists()
def test_clear(self, dao: TinyDbDao): dao.clear() assert list(dao.all()) == []
def test_filter_by_both_arguments_error(self, dao: TinyDbDao): with pytest.raises(QueryError) as error_info: assert dao.all().filter_by(id_=3, ids=[3, 5]) assert error_info.value == QueryErrors.CONFLICTING_QUERY_ARGUMENTS
def test_all(self, dao: TinyDbDao): assert list(dao.all()) == [ {'char': 'a', 'is_a': True}, {'char': 'b', 'is_a': False}, {'char': 'c', 'is_a': False}, ]
def test_get_fail(self, dao: TinyDbDao): assert dao.get(42) is None
def test_filter_by_success(self, dao: TinyDbDao): not_a = pred_not_a assert list(dao.filter(not_a).filter_by(id_=3)) == [{'char': 'c', 'is_a': False}]
def test_filtered_get_success(self, dao: TinyDbDao): object_2 = dao.get(2) assert dao.filter(pred_not_a).get(2) == object_2
def test_filter_by_two_times_error(self, dao: TinyDbDao): with pytest.raises(QueryError) as error_info: assert dao.all().filter_by(id_=3).filter_by(id_=5) assert error_info.value == QueryErrors.CONFLICTING_QUERY_ARGUMENTS
def test_remove_all_error(self, dao: TinyDbDao): with pytest.raises(QueryError) as error_info: dao.all().remove() assert error_info.value == QueryErrors.UNRESTRICTED_REMOVE