Check for clauses and filters in delete
Guard against wrong API use before dropping all data
This commit is contained in:
parent
5fd8b3ef3e
commit
3f330df20f
@ -249,7 +249,7 @@ class Table(object):
|
|||||||
If no arguments are given, all records are deleted.
|
If no arguments are given, all records are deleted.
|
||||||
"""
|
"""
|
||||||
self._check_dropped()
|
self._check_dropped()
|
||||||
if _filter:
|
if _filter or _clauses:
|
||||||
q = self._args_to_clause(_filter, clauses=_clauses)
|
q = self._args_to_clause(_filter, clauses=_clauses)
|
||||||
stmt = self.table.delete(q)
|
stmt = self.table.delete(q)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@ -7,7 +7,7 @@ try:
|
|||||||
except ImportError: # pragma: no cover
|
except ImportError: # pragma: no cover
|
||||||
from ordereddict import OrderedDict # Python < 2.7 drop-in
|
from ordereddict import OrderedDict # Python < 2.7 drop-in
|
||||||
|
|
||||||
from sqlalchemy.exc import IntegrityError, SQLAlchemyError
|
from sqlalchemy.exc import IntegrityError, SQLAlchemyError, ArgumentError
|
||||||
|
|
||||||
from dataset import connect
|
from dataset import connect
|
||||||
from dataset.util import DatasetException
|
from dataset.util import DatasetException
|
||||||
@ -251,7 +251,13 @@ class TableTestCase(unittest.TestCase):
|
|||||||
'temperature': -10,
|
'temperature': -10,
|
||||||
'place': 'Berlin'}
|
'place': 'Berlin'}
|
||||||
)
|
)
|
||||||
|
original_count = len(self.tbl)
|
||||||
assert len(self.tbl) == len(TEST_DATA) + 1, len(self.tbl)
|
assert len(self.tbl) == len(TEST_DATA) + 1, len(self.tbl)
|
||||||
|
# Test bad use of API
|
||||||
|
with self.assertRaises(ArgumentError):
|
||||||
|
self.tbl.delete({'place': 'Berlin'}) is True, 'should return 1'
|
||||||
|
assert len(self.tbl) == original_count, len(self.tbl)
|
||||||
|
|
||||||
assert self.tbl.delete(place='Berlin') is True, 'should return 1'
|
assert self.tbl.delete(place='Berlin') is True, 'should return 1'
|
||||||
assert len(self.tbl) == len(TEST_DATA), len(self.tbl)
|
assert len(self.tbl) == len(TEST_DATA), len(self.tbl)
|
||||||
assert self.tbl.delete() is True, 'should return non zero'
|
assert self.tbl.delete() is True, 'should return non zero'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user