Skip to content

Commit e574128

Browse files
committed
Retrieve information about view definition synchronization (fixes #183).
1 parent f82619d commit e574128

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

couchdb/design.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ class ViewDefinition(object):
3838
The view is not yet stored in the database, in fact, design doc doesn't
3939
even exist yet. That can be fixed using the `sync` method:
4040
41-
>>> view.sync(db)
42-
41+
>>> view.sync(db) #doctest: +ELLIPSIS
42+
[(True, '_design/tests', ...)]
4343
>>> design_doc = view.get_doc(db)
4444
>>> design_doc #doctest: +ELLIPSIS
4545
<Document '_design/tests'@'...' {...}>
@@ -54,7 +54,8 @@ class ViewDefinition(object):
5454
>>> def my_map(doc):
5555
... yield doc['somekey'], doc['somevalue']
5656
>>> view = ViewDefinition('test2', 'somename', my_map, language='python')
57-
>>> view.sync(db)
57+
>>> view.sync(db) #doctest: +ELLIPSIS
58+
[(True, '_design/test2', ...)]
5859
>>> design_doc = view.get_doc(db)
5960
>>> design_doc #doctest: +ELLIPSIS
6061
<Document '_design/test2'@'...' {...}>
@@ -139,7 +140,7 @@ def sync(self, db):
139140
140141
:param db: the `Database` instance
141142
"""
142-
type(self).sync_many(db, [self])
143+
return type(self).sync_many(db, [self])
143144

144145
@staticmethod
145146
def sync_many(db, views, remove_missing=False, callback=None):
@@ -197,7 +198,7 @@ def sync_many(db, views, remove_missing=False, callback=None):
197198
callback(doc)
198199
docs.append(doc)
199200

200-
db.update(docs)
201+
return db.update(docs)
201202

202203

203204
def _strip_decorators(code):

couchdb/tests/design.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,16 @@ def test_options(self):
2626
design_doc = db.get('_design/foo')
2727
self.assertTrue(design_doc['views']['foo']['options'] == options)
2828

29+
def test_retrieve_view_defn(self):
30+
'''see issue 183'''
31+
view_def = design.ViewDefinition('foo', 'bar', 'baz')
32+
result = view_def.sync(self.db)
33+
self.assertTrue(isinstance(result, list))
34+
self.assertEqual(result[0][0], True)
35+
self.assertEqual(result[0][1], '_design/foo')
36+
doc = self.db[result[0][1]]
37+
self.assertEqual(result[0][2], doc['_rev'])
38+
2939

3040
def suite():
3141
suite = unittest.TestSuite()

0 commit comments

Comments
 (0)