Feature/test print (#137)
* new: test: test for delete_rec (#132) * chg: dev: add db instance for delay_commit check * chg: dev: remove unused delete_rec test * chg: test: not check delay commit on empty db test. * chg: test: use simpler precise test for delete_rec * fix: test: change pytest parametrize arg * fix: test: fix instance of BukuDb * fix: test: fix test. * fix: test: logic on expected db len * new: test: test for delete_rec * new: test: test for delete_rec on empty database * Needs timely commitment. Removing the base implementation for rest APIs. At this point I believe it will Be better handled by someone who needs it. The current contributions in this area are very very infrequent. Defects and PRs remain pen over fortnights. It's difficult to expect the same team to maintain the piece of code even if we ever receive the full implementation from them. * Roll ToDo list * Feature/delete rec additional test data set (#133) * new: test: additional data test set. * new: test: test on non integer. * chg: test: rename function for consistency. * chg: test: change normalize function. * chg: test: change max value for high var * fix: test: use normalized index * fix: test: remove 'max' as valid value * chg: test: use hypothesis to test delete_rec index * new: test: add hypothesis package * chg: test: use hypothesis to test delete_rec index * chg: test: add hypothesis to travis * chg: test: limit integer test. * chg: dev: remove unused test * fix: test: fix test on non integer. * new: test: add big integer test on range in delete_rec method. * fix: test: fix high low diff * fix: test: skip only for python<3.5 * chg: test: change test_delete_rec_range_and_big_int - remove skip - use constant value instead sys.maxsize - fix assert * chg: test: use setup.py to manage test package instead travis * chg: test: add tests extras on setup.py * chg: test: change install test package. * fix: test: fix whitespace * fix: test: MAX_SQLITE_INT value * chg: test: skip test for python<3.5 * fix: test: fix import * chg: test: skip Impossible test * chg: test: simplify test_delete_rec_on_non_interger * Feature/tox test (#138) * chg: test: mark slow test * new: test: config for tox * chg: test: mark function as non tox * new: test: test print_rec with hypothesis * chg: test: simplify test for print_single_rec * fix: test: fix index test on test_print_rec_hypothesis * fix: test: fix tox setting. * fix: test: change test_print_single_rec to python3.5 only
This commit is contained in:
parent
e2989b0dcc
commit
7be3acc53e
@ -1,19 +0,0 @@
|
||||
appdirs==1.4.1
|
||||
beautifulsoup4==4.5.3
|
||||
buku==2.9
|
||||
cffi==1.9.1
|
||||
click==6.7
|
||||
cryptography==1.7.2
|
||||
Flask==0.12
|
||||
idna==2.2
|
||||
itsdangerous==0.24
|
||||
Jinja2==2.9.5
|
||||
MarkupSafe==0.23
|
||||
packaging==16.8
|
||||
pyasn1==0.2.2
|
||||
pycparser==2.17
|
||||
pyparsing==2.1.10
|
||||
requests==2.13.0
|
||||
six==1.10.0
|
||||
urllib3==1.20
|
||||
Werkzeug==0.11.15
|
@ -1,78 +0,0 @@
|
||||
from buku import BukuDb
|
||||
from flask import Flask, jsonify, request
|
||||
|
||||
|
||||
bukudb = BukuDb()
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
|
||||
@app.route('/api/tags', methods=['GET'])
|
||||
def get_tags():
|
||||
tags = bukudb.get_tag_all()
|
||||
result = {
|
||||
'tags': tags[0]
|
||||
}
|
||||
return jsonify(result)
|
||||
|
||||
|
||||
@app.route('/api/bookmarks', methods=['GET', 'POST'])
|
||||
def bookmarks():
|
||||
if request.method == 'GET':
|
||||
bookmarks = bukudb.get_rec_all()
|
||||
result = {
|
||||
'bookmarks': []
|
||||
}
|
||||
for bookmark in bookmarks:
|
||||
result_bookmark = {
|
||||
'url': bookmark[1],
|
||||
'title': bookmark[2],
|
||||
'tags': list(filter(None, bookmark[3].split(','))),
|
||||
'description': bookmark[4]
|
||||
}
|
||||
result['bookmarks'].append(result_bookmark)
|
||||
return jsonify(result)
|
||||
elif request.method == 'POST':
|
||||
result_flag = bukudb.add_rec(request.form['url'], request.form['title'],
|
||||
request.form['tags'], request.form['description'])
|
||||
if result_flag:
|
||||
return jsonify({'status': 0, 'message': 'success'}), 200, {'ContentType': 'application/json'}
|
||||
else:
|
||||
return jsonify({'status': 1, 'message': 'failure'}), 400, {'ContentType': 'application/json'}
|
||||
|
||||
@app.route('/api/bookmarks/<id>', methods=['GET', 'PUT', 'DELETE'])
|
||||
def bookmark_api(id):
|
||||
try:
|
||||
id = int(id)
|
||||
except ValueError:
|
||||
return jsonify({'status': 1, 'message': 'failure'}), 400, {'ContentType': 'application/json'}
|
||||
if request.method == 'GET':
|
||||
bookmark = bukudb.get_rec_by_id(id)
|
||||
if bookmark is not None:
|
||||
result = {
|
||||
'url': bookmark[1],
|
||||
'title': bookmark[2],
|
||||
'tags': list(filter(None, bookmark[3].split(','))),
|
||||
'description': bookmark[4]
|
||||
}
|
||||
return jsonify(result)
|
||||
else:
|
||||
return jsonify({'status': 1, 'message': 'failure'}), 400, {'ContentType': 'application/json'}
|
||||
elif request.method == 'PUT':
|
||||
result_flag = bukudb.update_rec(id, request.form['url'], request.form.get('title'),
|
||||
request.form['tags'], request.form['description'])
|
||||
if result_flag:
|
||||
return jsonify({'status': 0, 'message': 'success'}), 200, {'ContentType': 'application/json'}
|
||||
else:
|
||||
return jsonify({'status': 1, 'message': 'failure'}), 400, {'ContentType': 'application/json'}
|
||||
else:
|
||||
result_flag = bukudb.delete_rec(id)
|
||||
if result_flag:
|
||||
return jsonify({'status': 0, 'message': 'success'}), 200, {'ContentType': 'application/json'}
|
||||
else:
|
||||
return jsonify({'status': 1, 'message': 'failure'}), 400, {'ContentType': 'application/json'}
|
||||
|
||||
def run():
|
||||
app.run(debug=True)
|
||||
|
||||
run()
|
@ -9,6 +9,8 @@ import unittest
|
||||
import pytest
|
||||
|
||||
from buku import is_int, parse_tags
|
||||
from hypothesis import given
|
||||
from hypothesis import strategies as st
|
||||
|
||||
only_python_3_5 = pytest.mark.skipif(sys.version_info < (3, 5), reason="requires python3.5")
|
||||
|
||||
@ -134,17 +136,15 @@ def test_edit_at_prompt(nav, is_editor_valid_retval, edit_rec_retval):
|
||||
|
||||
|
||||
@only_python_3_5
|
||||
@pytest.mark.parametrize(
|
||||
'idx, row0, row1, row2, row3, row4, row5',
|
||||
product(
|
||||
[0, 1],
|
||||
[0],
|
||||
['', 'row1'],
|
||||
['', 'row2'],
|
||||
[',', 'row3'],
|
||||
['', 'row4'],
|
||||
[0, 1],
|
||||
)
|
||||
@given(
|
||||
idx=st.integers(),
|
||||
row0=st.integers(),
|
||||
row1=st.text(),
|
||||
row2=st.text(),
|
||||
row3=st.text(),
|
||||
row4=st.text(),
|
||||
row5=st.integers(),
|
||||
|
||||
)
|
||||
def test_print_single_rec(idx, row0, row1, row2, row3, row4, row5):
|
||||
"""test func."""
|
||||
|
@ -466,6 +466,57 @@ def test_print_rec(capsys, caplog, setup):
|
||||
assert err == ''
|
||||
|
||||
|
||||
@given(
|
||||
index=st.integers(min_value=-10, max_value=10),
|
||||
low=st.integers(min_value=-10, max_value=10),
|
||||
high=st.integers(min_value=-10, max_value=10),
|
||||
is_range=st.booleans(),
|
||||
)
|
||||
def test_print_rec_hypothesis(caplog, setup, index, low, high, is_range):
|
||||
"""test when index, low or high is less than 0."""
|
||||
bdb = BukuDb()
|
||||
if high < low:
|
||||
n_high, n_low = low, high
|
||||
else:
|
||||
n_high, n_low = high, low
|
||||
|
||||
bdb.add_rec("http://one.com", "", parse_tags(['cat,ant,bee,1']), "")
|
||||
db_len = 1
|
||||
|
||||
bdb.print_rec(index=index, low=low, high=high, is_range=is_range)
|
||||
|
||||
check_print = False
|
||||
err_msg = ['Actual log:']
|
||||
err_msg.extend(['{}:{}'.format(x.levelname, x.getMessage()) for x in caplog.records])
|
||||
|
||||
# negative index/range
|
||||
if (is_range and any([low < 0, high < 0])):
|
||||
assert any(x.levelname == "ERROR" for x in caplog.records)
|
||||
assert any([x.getMessage() == "Negative range boundary" for x in caplog.records]), \
|
||||
'\n'.join(err_msg)
|
||||
# is_range
|
||||
elif is_range:
|
||||
check_print = True
|
||||
# is_range == False
|
||||
elif not is_range and 0 <= index <= db_len:
|
||||
check_print = True
|
||||
# no matching index
|
||||
else:
|
||||
assert any([x.levelname == "ERROR" for x in caplog.records]), \
|
||||
'\n'.join(err_msg)
|
||||
assert any([x.getMessage().startswith("No matching index") for x in caplog.records]), \
|
||||
'\n'.join(err_msg)
|
||||
|
||||
if check_print:
|
||||
assert not any([x.levelname == "ERROR" for x in caplog.records]), \
|
||||
'\n'.join(err_msg)
|
||||
|
||||
# teardown
|
||||
bdb.delete_rec(index=1)
|
||||
caplog.handler.records.clear()
|
||||
caplog.records.clear()
|
||||
|
||||
|
||||
def test_list_tags(capsys, setup):
|
||||
bdb = BukuDb()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user