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