 
   testAsyncMulti 'related - basic', [
     (test, expect) ->
-      Meteor.subscribe 'users-posts', expect()
-      Meteor.subscribe 'users-posts-count', expect()
-  ,
-    (test, expect) ->
-      test.equal Posts.find().fetch(), []
-      test.equal Counts.findOne()?.count, 0
+      @userId = Random.id()
+      @countId = Random.id()
+
+      Meteor.subscribe 'users-posts', @userId, expect()
+      Meteor.subscribe 'users-posts-count', @userId, @countId, expect()
+  ,
+    (test, expect) ->
+      test.equal Posts.find().fetch(), []
+      test.equal Counts.findOne(@countId)?.count, 0
 
       @posts = []
 

  ,
    (test, expect) ->
      testSetEqual test, _.pluck(Posts.find().fetch(), '_id'), []
      test.equal Counts.findOne()?.count, 0
  ]

  Meteor.publish null, ->
    Users.find()

  Meteor.publish 'posts', (ids) ->
     Posts.find
      _id:
        $in: ids

  Meteor.publish 'users-posts', (userId) ->
    @related (user) ->
      Posts.find(
        _id:
          $in: user?.posts or []
      ).observeChanges
        added: (id, fields) =>
          fields.dummyField = true
          @added 'Posts_meteor_related_tests', id, fields
        changed: (id, fields) =>
          @changed 'Posts_meteor_related_tests', id, fields
        removed: (id) =>
          @removed 'Posts_meteor_related_tests', id

      @ready()
    ,
      Users.find userId,
        fields:
          posts: 1

  Meteor.publish 'users-posts-count', (userId, countId) ->
    @related (user) ->
      count = 0
      initializing = true

      Posts.find(
        _id:
