Skip to content
This repository was archived by the owner on Aug 30, 2024. It is now read-only.

Commit 06735af

Browse files
CodipherXdipjyoti bisharad
andauthored
Fixed design document creation when partitioned parameter is false (#467)
Set default value for 'partitioned' parameter to false when creating a design document. Co-authored-by: dipjyoti bisharad <[email protected]> #466
1 parent a45d219 commit 06735af

File tree

5 files changed

+37
-13
lines changed

5 files changed

+37
-13
lines changed

CHANGES.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# UNRELEASED
2+
3+
- [FIXED] Set default value for `partitioned` parameter to false when creating a design document.
4+
15
# 2.13.0 (2020-04-16)
26

37
- [FIXED] Correctly raise exceptions from `create_database` calls.

src/cloudant/design_document.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ def __init__(self, database, document_id=None, partitioned=False):
5050

5151
if partitioned:
5252
self.setdefault('options', {'partitioned': True})
53+
else:
54+
self.setdefault('options', {'partitioned': False})
5355

5456
self._nested_object_names = frozenset(['views', 'indexes', 'lists', 'shows'])
5557
for prop in self._nested_object_names:

tests/unit/database_partition_tests.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,17 @@ def test_create_partitioned_design_document(self):
4848
r.raise_for_status()
4949

5050
self.assertTrue(r.json()['options']['partitioned'])
51+
52+
def test_create_non_partitioned_design_document(self):
53+
ddoc_id = 'empty_ddoc'
54+
55+
ddoc = DesignDocument(self.db, ddoc_id, partitioned=False)
56+
ddoc.save()
57+
58+
r = self.db.r_session.get(ddoc.document_url)
59+
r.raise_for_status()
60+
61+
self.assertFalse(r.json()['options']['partitioned'])
5162

5263
def test_partitioned_all_docs(self):
5364
for partition_key in self.populate_db_with_partitioned_documents(5, 25):

tests/unit/database_tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ def test_retrieve_design_document(self):
364364
"""
365365
# Get an empty design document object that does not exist remotely
366366
local_ddoc = self.db.get_design_document('_design/ddoc01')
367-
self.assertEqual(local_ddoc, {'_id': '_design/ddoc01', 'indexes': {},
367+
self.assertEqual(local_ddoc, {'_id': '_design/ddoc01', 'indexes': {}, 'options': {'partitioned': False},
368368
'views': {}, 'lists': {}, 'shows': {}})
369369
# Add the design document to the database
370370
map_func = 'function(doc) {\n emit(doc._id, 1); \n}'

tests/unit/design_document_tests.py

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,7 @@ def test_fetch_map_reduce(self):
353353
self.assertEqual(ddoc_remote, {
354354
'_id': '_design/ddoc001',
355355
'_rev': ddoc['_rev'],
356+
'options': {'partitioned': False},
356357
'lists': {},
357358
'shows': {},
358359
'indexes': {},
@@ -415,7 +416,7 @@ def test_fetch_no_views(self):
415416
ddoc_remote = DesignDocument(self.db, '_design/ddoc001')
416417
ddoc_remote.fetch()
417418
self.assertEqual(set(ddoc_remote.keys()),
418-
{'_id', '_rev', 'indexes', 'views', 'lists', 'shows'})
419+
{'_id', '_rev', 'indexes', 'views', 'options', 'lists', 'shows'})
419420
self.assertEqual(ddoc_remote['_id'], '_design/ddoc001')
420421
self.assertTrue(ddoc_remote['_rev'].startswith('1-'))
421422
self.assertEqual(ddoc_remote['_rev'], ddoc['_rev'])
@@ -432,6 +433,7 @@ def test_fetch_query_views(self):
432433
data = {
433434
'_id': '_design/ddoc001',
434435
'indexes': {},
436+
'options': {'partitioned': False},
435437
'lists': {},
436438
'shows': {},
437439
'language': 'query',
@@ -463,6 +465,7 @@ def test_fetch_text_indexes(self):
463465
data = {
464466
'_id': '_design/ddoc001',
465467
'language': 'query',
468+
'options': {'partitioned': False},
466469
'lists': {},
467470
'shows': {},
468471
'indexes': {'index001':
@@ -499,6 +502,7 @@ def test_fetch_text_indexes_and_query_views(self):
499502
'language': 'query',
500503
'lists': {},
501504
'shows': {},
505+
'options': {'partitioned': False},
502506
'views': {
503507
'view001': {'map': {'fields': {'name': 'asc', 'age': 'asc'}},
504508
'reduce': '_count',
@@ -687,15 +691,15 @@ def test_save_with_no_views(self):
687691
ddoc.save()
688692
# Ensure that locally cached DesignDocument contains an
689693
# empty views dict.
690-
self.assertEqual(set(ddoc.keys()), {'_id', '_rev', 'indexes', 'views', 'lists', 'shows'})
694+
self.assertEqual(set(ddoc.keys()), {'_id', '_rev', 'indexes', 'options', 'views', 'lists', 'shows'})
691695
self.assertEqual(ddoc['_id'], '_design/ddoc001')
692696
self.assertTrue(ddoc['_rev'].startswith('1-'))
693697
self.assertEqual(ddoc.views, {})
694698
# Ensure that remotely saved design document does not
695699
# include a views sub-document.
696700
resp = self.client.r_session.get(ddoc.document_url)
697701
raw_ddoc = response_to_json_dict(resp)
698-
self.assertEqual(set(raw_ddoc.keys()), {'_id', '_rev'})
702+
self.assertEqual(set(raw_ddoc.keys()), {'_id', '_rev','options'})
699703
self.assertEqual(raw_ddoc['_id'], ddoc['_id'])
700704
self.assertEqual(raw_ddoc['_rev'], ddoc['_rev'])
701705

@@ -1076,6 +1080,7 @@ def test_fetch_search_index(self):
10761080
self.assertEqual(ddoc_remote, {
10771081
'_id': '_design/ddoc001',
10781082
'_rev': ddoc['_rev'],
1083+
'options': {'partitioned': False},
10791084
'indexes': {
10801085
'search001': {'index': search_index},
10811086
'search002': {'index': search_index, 'analyzer': 'simple'},
@@ -1100,7 +1105,7 @@ def test_fetch_no_search_index(self):
11001105
ddoc_remote = DesignDocument(self.db, '_design/ddoc001')
11011106
ddoc_remote.fetch()
11021107
self.assertEqual(set(ddoc_remote.keys()),
1103-
{'_id', '_rev', 'indexes', 'views', 'lists', 'shows'})
1108+
{'_id', '_rev', 'indexes', 'options', 'views', 'lists', 'shows'})
11041109
self.assertEqual(ddoc_remote['_id'], '_design/ddoc001')
11051110
self.assertTrue(ddoc_remote['_rev'].startswith('1-'))
11061111
self.assertEqual(ddoc_remote['_rev'], ddoc['_rev'])
@@ -1183,14 +1188,14 @@ def test_save_with_no_search_indexes(self):
11831188
ddoc.save()
11841189
# Ensure that locally cached DesignDocument contains an
11851190
# empty search indexes and views dict.
1186-
self.assertEqual(set(ddoc.keys()), {'_id', '_rev', 'indexes', 'views', 'lists', 'shows'})
1191+
self.assertEqual(set(ddoc.keys()), {'_id', '_rev', 'indexes','options', 'views', 'lists', 'shows'})
11871192
self.assertEqual(ddoc['_id'], '_design/ddoc001')
11881193
self.assertTrue(ddoc['_rev'].startswith('1-'))
11891194
# Ensure that remotely saved design document does not
11901195
# include a search indexes sub-document.
11911196
resp = self.client.r_session.get(ddoc.document_url)
11921197
raw_ddoc = response_to_json_dict(resp)
1193-
self.assertEqual(set(raw_ddoc.keys()), {'_id', '_rev'})
1198+
self.assertEqual(set(raw_ddoc.keys()), {'_id', '_rev','options'})
11941199
self.assertEqual(raw_ddoc['_id'], ddoc['_id'])
11951200
self.assertEqual(raw_ddoc['_rev'], ddoc['_rev'])
11961201

@@ -1413,6 +1418,7 @@ def test_fetch_list_functions(self):
14131418
self.assertEqual(ddoc_remote, {
14141419
'_id': '_design/ddoc001',
14151420
'_rev': ddoc['_rev'],
1421+
'options': {'partitioned': False},
14161422
'lists': {
14171423
'list001': list_func,
14181424
'list002': list_func,
@@ -1437,7 +1443,7 @@ def test_fetch_no_list_functions(self):
14371443
ddoc_remote = DesignDocument(self.db, '_design/ddoc001')
14381444
ddoc_remote.fetch()
14391445
self.assertEqual(set(ddoc_remote.keys()),
1440-
{'_id', '_rev', 'indexes', 'views', 'lists', 'shows'})
1446+
{'_id', '_rev', 'options', 'indexes', 'views', 'lists', 'shows'})
14411447
self.assertEqual(ddoc_remote['_id'], '_design/ddoc001')
14421448
self.assertTrue(ddoc_remote['_rev'].startswith('1-'))
14431449
self.assertEqual(ddoc_remote['_rev'], ddoc['_rev'])
@@ -1452,14 +1458,14 @@ def test_save_with_no_list_functions(self):
14521458
ddoc = DesignDocument(self.db, '_design/ddoc001')
14531459
ddoc.save()
14541460
# Ensure that locally cached DesignDocument contains lists dict
1455-
self.assertEqual(set(ddoc.keys()), {'_id', '_rev', 'lists', 'shows', 'indexes', 'views'})
1461+
self.assertEqual(set(ddoc.keys()), {'_id', '_rev', 'lists', 'options', 'shows', 'indexes', 'views'})
14561462
self.assertEqual(ddoc['_id'], '_design/ddoc001')
14571463
self.assertTrue(ddoc['_rev'].startswith('1-'))
14581464
# Ensure that remotely saved design document does not
14591465
# include a lists sub-document.
14601466
resp = self.client.r_session.get(ddoc.document_url)
14611467
raw_ddoc = response_to_json_dict(resp)
1462-
self.assertEqual(set(raw_ddoc.keys()), {'_id', '_rev'})
1468+
self.assertEqual(set(raw_ddoc.keys()), {'_id', '_rev','options'})
14631469
self.assertEqual(raw_ddoc['_id'], ddoc['_id'])
14641470
self.assertEqual(raw_ddoc['_rev'], ddoc['_rev'])
14651471

@@ -1714,6 +1720,7 @@ def test_fetch_show_functions(self):
17141720
self.assertEqual(ddoc_remote, {
17151721
'_id': '_design/ddoc001',
17161722
'_rev': ddoc['_rev'],
1723+
'options': {'partitioned': False},
17171724
'lists': {},
17181725
'shows': {
17191726
'show001': show_func,
@@ -1738,7 +1745,7 @@ def test_fetch_no_show_functions(self):
17381745
ddoc_remote = DesignDocument(self.db, '_design/ddoc001')
17391746
ddoc_remote.fetch()
17401747
self.assertEqual(set(ddoc_remote.keys()),
1741-
{'_id', '_rev', 'indexes', 'views', 'lists', 'shows'})
1748+
{'_id', '_rev', 'indexes', 'options', 'views', 'lists', 'shows'})
17421749
self.assertEqual(ddoc_remote['_id'], '_design/ddoc001')
17431750
self.assertTrue(ddoc_remote['_rev'].startswith('1-'))
17441751
self.assertEqual(ddoc_remote['_rev'], ddoc['_rev'])
@@ -1753,14 +1760,14 @@ def test_save_with_no_show_functions(self):
17531760
ddoc = DesignDocument(self.db, '_design/ddoc001')
17541761
ddoc.save()
17551762
# Ensure that locally cached DesignDocument contains shows dict
1756-
self.assertEqual(set(ddoc.keys()), {'_id', '_rev', 'lists', 'shows', 'indexes', 'views'})
1763+
self.assertEqual(set(ddoc.keys()), {'_id', '_rev', 'lists','options', 'shows', 'indexes', 'views'})
17571764
self.assertEqual(ddoc['_id'], '_design/ddoc001')
17581765
self.assertTrue(ddoc['_rev'].startswith('1-'))
17591766
# Ensure that remotely saved design document does not
17601767
# include a shows sub-document.
17611768
resp = self.client.r_session.get(ddoc.document_url)
17621769
raw_ddoc = response_to_json_dict(resp)
1763-
self.assertEqual(set(raw_ddoc.keys()), {'_id', '_rev'})
1770+
self.assertEqual(set(raw_ddoc.keys()), {'_id', '_rev','options'})
17641771
self.assertEqual(raw_ddoc['_id'], ddoc['_id'])
17651772
self.assertEqual(raw_ddoc['_rev'], ddoc['_rev'])
17661773

0 commit comments

Comments
 (0)