def test_composites_by_sub(ctx): from melkman.db.bucket import NewsBucket from melkman.db.composite import Composite, view_composites_by_subscription c1 = Composite.create(ctx) c2 = Composite.create(ctx) bucket1 = NewsBucket.create(ctx) bucket1.save() bucket2 = NewsBucket.create(ctx) bucket2.save() bucket3 = NewsBucket.create(ctx) bucket3.save() c1.subscribe(bucket1) c1.save() c2.subscribe(bucket1) c2.subscribe(bucket2) c2.save() count = 0 seen = set() for r in view_composites_by_subscription(ctx.db, include_docs=True, startkey=bucket1.id, endkey=bucket1.id): comp = Composite.wrap(r.doc) seen.add(comp.id) count += 1 assert count == 2 assert c1.id in seen assert c2.id in seen count = 0 seen = set() for r in view_composites_by_subscription(ctx.db, include_docs=True, startkey=bucket2.id, endkey=bucket2.id): comp = Composite.from_doc(r.doc, ctx) seen.add(comp.id) count += 1 assert count == 1 assert c2.id in seen for r in view_composites_by_subscription(ctx.db, include_docs=True, startkey=bucket3.id, endkey=bucket3.id): assert False, 'unexpected subscription'