diff --git a/packages/observe-sequence/observe_sequence.js b/packages/observe-sequence/observe_sequence.js index 687bf4882f..769f75e93c 100644 --- a/packages/observe-sequence/observe_sequence.js +++ b/packages/observe-sequence/observe_sequence.js @@ -9,6 +9,8 @@ var warn = function () { } }; +function isArray(arr) {return arr instanceof Array || _.isArray(arr)} + var idStringify = MongoID.idStringify; var idParse = MongoID.idParse; @@ -94,7 +96,7 @@ ObserveSequence = { if (!seq) { seqArray = seqChangedToEmpty(lastSeqArray, callbacks); - } else if (seq instanceof Array || _.isArray(seq)) { + } else if (isArray(seq)) { seqArray = seqChangedToArray(lastSeqArray, seq, callbacks); } else if (isStoreCursor(seq)) { var result /* [seqArray, activeObserveHandle] */ = @@ -126,7 +128,7 @@ ObserveSequence = { fetch: function (seq) { if (!seq) { return []; - } else if (seq instanceof Array || _.isArray(seq)) { + } else if (isArray(seq)) { return seq; } else if (isStoreCursor(seq)) { return seq.fetch(); diff --git a/packages/observe-sequence/observe_sequence_tests.js b/packages/observe-sequence/observe_sequence_tests.js index f746636cec..c82bb17dce 100644 --- a/packages/observe-sequence/observe_sequence_tests.js +++ b/packages/observe-sequence/observe_sequence_tests.js @@ -147,6 +147,14 @@ Tinytest.add('observe-sequence - initial data for all sequence types', function {addedAt: ["37", {_id: "37", bar: 2}, 1, null]} ]); + // sub-classed arrays + runOneObserveSequenceTestCase(test, function () { + return new ArraySubclass({_id: "13", foo: 1}, {_id: "37", bar: 2}); + }, function () {}, [ + {addedAt: ["13", {_id: "13", foo: 1}, 0, null]}, + {addedAt: ["37", {_id: "37", bar: 2}, 1, null]} + ]); + runOneObserveSequenceTestCase(test, function () { var coll = new Mongo.Collection(null); coll.insert({_id: "13", foo: 1}); @@ -609,7 +617,7 @@ Tinytest.add('observe-sequence - subclassed number arrays', function (test) { dep.depend(); return seq; }, function () { - seq = [1, 3, 2, 3]; + seq = new ArraySubclass(1, 3, 2, 3); dep.changed(); }, [ {addedAt: [1, 1, 0, null]},