1
1
import time
2
+ from mock import patch , call , ANY
2
3
3
- from django .test import TestCase
4
+ from django .test import TestCase , override_settings
4
5
5
6
from algoliasearch_django import algolia_engine
6
7
from algoliasearch_django import get_adapter
7
8
from algoliasearch_django import raw_search
8
9
from algoliasearch_django import clear_index
9
10
from algoliasearch_django import update_records
10
11
12
+ from .factories import WebsiteFactory
11
13
from .models import Website
12
14
13
15
@@ -21,25 +23,37 @@ def tearDown(self):
21
23
clear_index (Website )
22
24
23
25
def test_save_signal (self ):
24
- Website .objects .create (name = 'Algolia' , url = 'https://www.algolia.com' )
25
- Website .objects .create (name = 'Google' , url = 'https://www.google.com' )
26
- Website .objects .create (name = 'Facebook' , url = 'https://www.facebook.com' )
26
+ with patch .object (algolia_engine , 'save_record' ) as mocked_save_record :
27
+ websites = WebsiteFactory .create_batch (3 )
27
28
28
- time .sleep (10 ) # FIXME: Expose last task's ID so we can waitTask instead of sleeping
29
- self .assertEqual (raw_search (Website )['nbHits' ], 3 )
29
+ mocked_save_record .assert_has_calls (
30
+ [
31
+ call (
32
+ website ,
33
+ created = True ,
34
+ raw = False ,
35
+ sender = ANY ,
36
+ signal = ANY ,
37
+ update_fields = None ,
38
+ using = ANY
39
+ )
40
+ for website in websites
41
+ ]
42
+ )
30
43
31
44
def test_delete_signal (self ):
32
- Website .objects .create (name = 'Algolia' , url = 'https://www.algolia.com' )
33
- Website .objects .create (name = 'Google' , url = 'https://www.google.com' )
34
- Website .objects .create (name = 'Facebook' , url = 'https://www.facebook.com' )
45
+ websites = WebsiteFactory .create_batch (3 )
35
46
36
- Website .objects .get (name = 'Algolia' ).delete ()
37
- Website .objects .get (name = 'Facebook' ).delete ()
47
+ with patch .object (algolia_engine , 'delete_record' ) as mocked_delete_record :
48
+ websites [0 ].delete ()
49
+ websites [1 ].delete ()
38
50
39
- time .sleep (10 )
40
- result = raw_search (Website )
41
- self .assertEqual (result ['nbHits' ], 1 )
42
- self .assertEqual (result ['hits' ][0 ]['name' ], 'Google' )
51
+ mocked_delete_record .assert_has_calls (
52
+ [
53
+ call (websites [0 ]),
54
+ call (websites [1 ])
55
+ ]
56
+ )
43
57
44
58
def test_update_records (self ):
45
59
Website .objects .create (name = 'Algolia' , url = 'https://www.algolia.com' )
0 commit comments