Skip to content

Commit 262164c

Browse files
author
Clement Denoix
committed
feat(tests) Refactor tests using mocks
1 parent b55113c commit 262164c

File tree

3 files changed

+31
-15
lines changed

3 files changed

+31
-15
lines changed

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ wheel
66
tox
77
twine
88
factory_boy
9+
mock

tests/test_signal.py

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import time
2+
from mock import patch, call, ANY
23

3-
from django.test import TestCase
4+
from django.test import TestCase, override_settings
45

56
from algoliasearch_django import algolia_engine
67
from algoliasearch_django import get_adapter
78
from algoliasearch_django import raw_search
89
from algoliasearch_django import clear_index
910
from algoliasearch_django import update_records
1011

12+
from .factories import WebsiteFactory
1113
from .models import Website
1214

1315

@@ -21,25 +23,37 @@ def tearDown(self):
2123
clear_index(Website)
2224

2325
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)
2728

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+
)
3043

3144
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)
3546

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()
3850

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+
)
4357

4458
def test_update_records(self):
4559
Website.objects.create(name='Algolia', url='https://www.algolia.com')

tox.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ skip_missing_interpreters = True
1212
[testenv]
1313
deps =
1414
six
15+
mock
1516
factory_boy
1617
django17: Django>=1.7,<1.8
1718
django18: Django>=1.8,<1.9

0 commit comments

Comments
 (0)