def one_value_param(name):
def wrap(func):
def f(self):
tests = func(self)
# 0 values: should fail
with self.subTest(test='0 values'):
try:
PackagesSearcher({
name: []
})()
except HTTPBadRequest as e:
if e.detail == Messages.no_values % name:
# Expected exception
pass
else:
raise e
else:
raise AssertionError()
# 2, 3 values: should fail
for i in range(2, 4):
with self.subTest(test='%s values' % i):
try:
PackagesSearcher({
name: ['hel'] * i
})()
except HTTPBadRequest as e:
if e.detail == Messages.too_many_values % (1, i):
# Expected exception
pass
else:
raise e
else:
raise AssertionError()
for test_case in tests:
with self.subTest(test=test_case):
value, expected = test_case
searcher = PackagesSearcher({
name: [value]
})
searcher()
packages = [x for x in self.db['packages'].find({})]
search_result = searcher.search(packages)
for num, doc in enumerate(search_result):
if '_id' in search_result[num]:
del search_result[num]['_id']
self.assertTrue(are_equal(search_result, expected))
return f
return wrap
评论列表
文章目录