From 6dcf5e9b7a965097abd1fbbfc5fe0fd68fc76741 Mon Sep 17 00:00:00 2001 From: Theodor Diaconu Date: Tue, 17 Apr 2018 11:17:26 +0300 Subject: [PATCH] Added test for deepReducer 1-direct --- lib/query/testing/reducers.server.test.js | 111 +++++++++++++--------- 1 file changed, 66 insertions(+), 45 deletions(-) diff --git a/lib/query/testing/reducers.server.test.js b/lib/query/testing/reducers.server.test.js index eab14db..ac9f4cd 100755 --- a/lib/query/testing/reducers.server.test.js +++ b/lib/query/testing/reducers.server.test.js @@ -2,12 +2,12 @@ import { createQuery } from 'meteor/cultofcoders:grapher'; import Authors from './bootstrap/authors/collection'; import Comments from './bootstrap/comments/collection'; -describe('Reducers', function () { - it('Should work with field only reducers', function () { +describe('Reducers', function() { + it('Should work with field only reducers', function() { const data = createQuery({ authors: { - fullName: 1 - } + fullName: 1, + }, }).fetch(); assert.isTrue(data.length > 0); @@ -15,15 +15,15 @@ describe('Reducers', function () { data.forEach(author => { assert.isString(author.fullName); assert.isUndefined(author.name); - assert.isTrue(author.fullName.substr(0, 7) === 'full - ') - }) + assert.isTrue(author.fullName.substr(0, 7) === 'full - '); + }); }); - it('Should work with nested fields reducers', function () { + it('Should work with nested fields reducers', function() { const data = createQuery({ authors: { - fullNameNested: 1 - } + fullNameNested: 1, + }, }).fetch(); assert.isTrue(data.length > 0); @@ -33,17 +33,38 @@ describe('Reducers', function () { assert.isString(author.fullNameNested); assert.isFalse(author.fullNameNested === 'undefined undefined'); assert.isUndefined(author.profile); - }) + }); }); - it('Should work with nested fields reducers', function () { + it('Should work with deep reducers', function() { + const data = createQuery({ + posts: { + $options: { limit: 5 }, + author: { + fullName: 1, + fullNameNested: 1, + }, + }, + }).fetch(); + + assert.isTrue(data.length > 0); + + data.forEach(post => { + console.log(post); + const author = post.author; + assert.isUndefined(author.name); + assert.isTrue(author.fullName.substr(0, 7) === 'full - '); + }); + }); + + it('Should work with nested fields reducers', function() { const data = createQuery({ authors: { profile: { - firstName: 1 + firstName: 1, }, fullNameNested: 1, - } + }, }).fetch(); assert.isTrue(data.length > 0); @@ -55,14 +76,14 @@ describe('Reducers', function () { assert.isObject(author.profile); assert.isString(author.profile.firstName); assert.isUndefined(author.profile.lastName); - }) + }); }); - it('Should work with links reducers', function () { + it('Should work with links reducers', function() { const data = createQuery({ authors: { - groupNames: 1 - } + groupNames: 1, + }, }).fetch(); assert.isTrue(data.length > 0); @@ -70,10 +91,10 @@ describe('Reducers', function () { data.forEach(author => { assert.isArray(author.groupNames); assert.isUndefined(author.groups); - }) + }); }); - it('Should work with One link reducers', function () { + it('Should work with One link reducers', function() { const sampleComment = Comments.findOne(); const comment = createQuery({ @@ -82,18 +103,18 @@ describe('Reducers', function () { _id: sampleComment._id, }, authorLinkReducer: 1, - } + }, }).fetchOne(); assert.isObject(comment); assert.isObject(comment.authorLinkReducer); }); - it('Should work with links and nested reducers', function () { + it('Should work with links and nested reducers', function() { const data = createQuery({ authors: { - referenceReducer: 1 - } + referenceReducer: 1, + }, }).fetch(); assert.isTrue(data.length > 0); @@ -101,16 +122,16 @@ describe('Reducers', function () { data.forEach(author => { assert.isString(author.referenceReducer); assert.isUndefined(author.fullName); - assert.isTrue(author.referenceReducer.substr(0, 9) === 'nested - ') - }) + assert.isTrue(author.referenceReducer.substr(0, 9) === 'nested - '); + }); }); - it('Should not clean nested reducers if not specified', function () { + it('Should not clean nested reducers if not specified', function() { const data = createQuery({ authors: { referenceReducer: 1, fullName: 1, - } + }, }).fetch(); assert.isTrue(data.length > 0); @@ -118,19 +139,19 @@ describe('Reducers', function () { data.forEach(author => { assert.isString(author.referenceReducer); assert.isString(author.fullName); - }) + }); }); - it('Should keep previously used items - Part 1', function () { + it('Should keep previously used items - Part 1', function() { const data = createQuery({ authors: { fullName: 1, name: 1, groupNames: 1, groups: { - name: 1 - } - } + name: 1, + }, + }, }).fetch(); assert.isTrue(data.length > 0); @@ -140,18 +161,18 @@ describe('Reducers', function () { assert.isDefined(author.groups); assert.isArray(author.groupNames); assert.isString(author.fullName); - assert.isTrue(author.fullName.substr(0, 7) === 'full - ') - }) + assert.isTrue(author.fullName.substr(0, 7) === 'full - '); + }); }); - it('Should keep previously used items - Part 2', function () { + it('Should keep previously used items - Part 2', function() { const data = createQuery({ authors: { groupNames: 1, groups: { - _id: 1 - } - } + _id: 1, + }, + }, }).fetch(); assert.isTrue(data.length > 0); @@ -169,20 +190,20 @@ describe('Reducers', function () { author.groups.forEach(group => { assert.isDefined(group._id); assert.isUndefined(group.name); - }) - }) + }); + }); }); - it('Should work with params reducers', function () { + it('Should work with params reducers', function() { const query = createQuery({ authors: { - $options: {limit: 1}, + $options: { limit: 1 }, paramBasedReducer: 1, - } + }, }); query.setParams({ - element: 'TEST_STRING' + element: 'TEST_STRING', }); const data = query.fetch(); @@ -190,6 +211,6 @@ describe('Reducers', function () { assert.isTrue(data.length > 0); data.forEach(author => { assert.equal(author.paramBasedReducer, 'TEST_STRING'); - }) + }); }); });