Skip to content

Commit 494c9b7

Browse files
authored
Merge pull request #160 from rethinkdb/add-2.4.x-integration-test
Add write hook tests
2 parents d30c30b + 4d3ebd8 commit 494c9b7

File tree

3 files changed

+65
-9
lines changed

3 files changed

+65
-9
lines changed

Makefile

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,15 @@ default: help
3232
help:
3333
@echo "Usage:"
3434
@echo
35-
@echo " make help Print this help message"
36-
@echo " make test-unit Run unit tests"
37-
@echo " make test-integration Run integration tests"
38-
@echo " make test-remote Run tests on digital ocean"
39-
@echo " make upload-coverage Upload unit test coverage"
40-
@echo " make upload-pypi Release ${PACKAGE_NAME} package to PyPi"
41-
@echo " make clean Cleanup source directory"
42-
@echo " make prepare Prepare ${PACKAGE_NAME} for build"
35+
@echo " make help Print this help message"
36+
@echo " make test-unit Run unit tests"
37+
@echo " make test-integration Run integration tests"
38+
@echo " make test-integration-2.4 Run integration tests"
39+
@echo " make test-remote Run tests on digital ocean"
40+
@echo " make upload-coverage Upload unit test coverage"
41+
@echo " make upload-pypi Release ${PACKAGE_NAME} package to PyPi"
42+
@echo " make clean Cleanup source directory"
43+
@echo " make prepare Prepare ${PACKAGE_NAME} for build"
4344

4445
test-unit:
4546
pytest -v -m unit
@@ -49,9 +50,12 @@ test-integration:
4950
pytest -v -m integration
5051
@killall rethinkdb
5152

53+
test-integration-2.4:
54+
pytest -v -m integration_v2_4_x
55+
5256
test-ci:
5357
@rethinkdb&
54-
pytest -v --cov rethinkdb --cov-report xml
58+
pytest -v --cov rethinkdb --cov-report xml --ignore=tests/integration/test_write_hooks.py
5559
@killall rethinkdb
5660

5761
test-remote:

pytest.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ python_files = test_*.py
33
markers =
44
unit: Run unit tests
55
integration: Run integration tests
6+
integration_v2_4_x: Run 2.4.x only integration tests
67
trio: Run trio related tests
78
tornado: Run tornado related tests
89
asyncio: Run asyncio related tests
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import pytest
2+
3+
from tests.helpers import IntegrationTestCaseBase
4+
5+
@pytest.mark.integration_v2_4_x
6+
class TestWriteHooks(IntegrationTestCaseBase):
7+
def setup_method(self):
8+
super(TestWriteHooks, self).setup_method()
9+
10+
self.table_name = 'test_write_hooks'
11+
self.documents = [
12+
{'id': 1, 'name': 'Testing write hooks 1'},
13+
]
14+
15+
self.r.table_create(self.table_name).run(self.conn)
16+
self.r.table(self.table_name).insert(self.documents).run(self.conn)
17+
18+
def test_set_write_hook(self):
19+
response = self.r.table(self.table_name).set_write_hook(lambda context, old_val, new_val:
20+
new_val.merge({
21+
'modified_at': context['timestamp']
22+
})
23+
).run(self.conn)
24+
25+
assert response == {'created': 1}
26+
27+
def test_write_hook_add_extra_data(self):
28+
self.r.table(self.table_name).set_write_hook(lambda context, old_val, new_val:
29+
new_val.merge({
30+
'modified_at': context['timestamp']
31+
})
32+
).run(self.conn)
33+
34+
self.r.table(self.table_name).insert({
35+
'id': 2, 'name': 'Testing write hooks 1'
36+
}).run(self.conn)
37+
38+
document = self.r.table(self.table_name).get(2).run(self.conn)
39+
40+
assert document.get('modified_at') != None
41+
42+
def test_get_write_hook(self):
43+
self.r.table(self.table_name).set_write_hook(lambda context, old_val, new_val:
44+
new_val.merge({
45+
'modified_at': context['timestamp']
46+
})
47+
).run(self.conn)
48+
49+
hook = self.r.table(self.table_name).get_write_hook().run(self.conn)
50+
51+
assert list(hook.keys()) == ['function', 'query']

0 commit comments

Comments
 (0)