mirror of
https://github.com/vale981/grapher
synced 2025-03-06 10:01:40 -05:00
242 lines
No EOL
6.8 KiB
JavaScript
242 lines
No EOL
6.8 KiB
JavaScript
import { createQuery } from 'meteor/cultofcoders:grapher';
|
|
import Comments from './bootstrap/comments/collection.js';
|
|
|
|
describe('Hypernova', function () {
|
|
it('Should fetch One links correctly', function () {
|
|
const data = createQuery({
|
|
comments: {
|
|
text: 1,
|
|
author: {
|
|
name: 1
|
|
}
|
|
}
|
|
}).fetch();
|
|
|
|
assert.lengthOf(data, Comments.find().count());
|
|
assert.isTrue(data.length > 0);
|
|
|
|
_.each(data, comment => {
|
|
assert.isObject(comment.author);
|
|
assert.isString(comment.author.name);
|
|
assert.isString(comment.author._id);
|
|
assert.isTrue(_.keys(comment.author).length == 2);
|
|
})
|
|
});
|
|
|
|
it('Should fetch One links with limit and options', function () {
|
|
const data = createQuery({
|
|
comments: {
|
|
$options: {limit: 5},
|
|
text: 1
|
|
}
|
|
}).fetch();
|
|
|
|
assert.lengthOf(data, 5);
|
|
});
|
|
|
|
it('Should fetch One-Inversed links with limit and options', function () {
|
|
const data = createQuery({
|
|
authors: {
|
|
$options: {limit: 5},
|
|
comments: {
|
|
$filters: {text: 'Good'},
|
|
$options: {limit: 2},
|
|
text: 1
|
|
}
|
|
}
|
|
}).fetch();
|
|
|
|
assert.lengthOf(data, 5);
|
|
_.each(data, author => {
|
|
assert.lengthOf(author.comments, 2);
|
|
_.each(author.comments, comment => {
|
|
assert.equal('Good', comment.text);
|
|
})
|
|
})
|
|
});
|
|
|
|
it('Should fetch Many links correctly', function () {
|
|
const data = createQuery({
|
|
posts: {
|
|
$options: {limit: 5},
|
|
title: 1,
|
|
tags: {
|
|
text: 1
|
|
}
|
|
}
|
|
}).fetch();
|
|
|
|
assert.lengthOf(data, 5);
|
|
_.each(data, post => {
|
|
assert.isString(post.title);
|
|
assert.isArray(post.tags);
|
|
assert.isTrue(post.tags.length > 0);
|
|
})
|
|
});
|
|
|
|
it('Should fetch Many - inversed links correctly', function () {
|
|
const data = createQuery({
|
|
tags: {
|
|
name: 1,
|
|
posts: {
|
|
$options: {limit: 5},
|
|
title: 1
|
|
}
|
|
}
|
|
}).fetch();
|
|
|
|
_.each(data, tag => {
|
|
assert.isString(tag.name);
|
|
assert.isArray(tag.posts);
|
|
assert.lengthOf(tag.posts, 5);
|
|
_.each(tag.posts, post => {
|
|
assert.isString(post.title);
|
|
})
|
|
})
|
|
});
|
|
|
|
it('Should fetch One-Meta links correctly', function () {
|
|
const data = createQuery({
|
|
posts: {
|
|
$options: {limit: 5},
|
|
title: 1,
|
|
group: {
|
|
name: 1
|
|
}
|
|
}
|
|
}).fetch();
|
|
|
|
assert.lengthOf(data, 5);
|
|
_.each(data, post => {
|
|
assert.isString(post.title);
|
|
assert.isString(post._id);
|
|
assert.isObject(post.group);
|
|
assert.isString(post.group._id);
|
|
assert.isString(post.group.name);
|
|
})
|
|
});
|
|
|
|
it('Should fetch One-Meta inversed links correctly', function () {
|
|
const data = createQuery({
|
|
groups: {
|
|
name: 1,
|
|
posts: {
|
|
title: 1
|
|
}
|
|
}
|
|
}).fetch();
|
|
|
|
_.each(data, group => {
|
|
assert.isString(group.name);
|
|
assert.isString(group._id);
|
|
assert.lengthOf(_.keys(group), 3);
|
|
assert.isArray(group.posts);
|
|
_.each(group.posts, post => {
|
|
assert.isString(post.title);
|
|
assert.isString(post._id);
|
|
})
|
|
})
|
|
});
|
|
|
|
it('Should fetch Many-Meta links correctly', function () {
|
|
const data = createQuery({
|
|
authors: {
|
|
name: 1,
|
|
groups: {
|
|
$options: {limit: 1},
|
|
name: 1
|
|
}
|
|
}
|
|
}).fetch();
|
|
|
|
_.each(data, author => {
|
|
assert.isArray(author.groups);
|
|
assert.lengthOf(author.groups, 1);
|
|
|
|
_.each(author.groups, group => {
|
|
assert.isObject(group);
|
|
assert.isString(group._id);
|
|
assert.isString(group.name);
|
|
})
|
|
})
|
|
});
|
|
|
|
it('Should fetch Many-Meta inversed links correctly', function () {
|
|
const data = createQuery({
|
|
groups: {
|
|
name: 1,
|
|
authors: {
|
|
$options: {limit: 2},
|
|
name: 1
|
|
}
|
|
}
|
|
}).fetch();
|
|
|
|
_.each(data, group => {
|
|
assert.isArray(group.authors);
|
|
assert.isTrue(group.authors.length <= 2);
|
|
|
|
_.each(group.authors, author => {
|
|
assert.isObject(author);
|
|
assert.isString(author._id);
|
|
assert.isString(author.name);
|
|
})
|
|
})
|
|
});
|
|
|
|
it('Should fetch Resolver links properly', function () {
|
|
const data = createQuery({
|
|
posts: {
|
|
$options: {limit: 5},
|
|
commentsCount: 1
|
|
}
|
|
}).fetch();
|
|
|
|
assert.lengthOf(data, 5);
|
|
_.each(data, post => {
|
|
assert.equal(10, post.commentsCount);
|
|
})
|
|
})
|
|
|
|
it('Should fetch in depth properly at any given level.', function () {
|
|
const data = createQuery({
|
|
authors: {
|
|
$options: {limit: 5},
|
|
posts: {
|
|
$options: {limit: 5},
|
|
comments: {
|
|
$options: {limit: 5},
|
|
author: {
|
|
groups: {
|
|
posts: {
|
|
$options: {limit: 5},
|
|
author: {
|
|
name: 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}).fetch();
|
|
|
|
assert.lengthOf(data, 5);
|
|
let arrivedInDepth = false;
|
|
|
|
_.each(data, author => {
|
|
_.each(author.posts, post => {
|
|
_.each(post.comments, comment => {
|
|
_.each(comment.author.groups, group => {
|
|
_.each(group.posts, post => {
|
|
assert.isString(post.author.name);
|
|
arrivedInDepth = true;
|
|
})
|
|
})
|
|
})
|
|
})
|
|
});
|
|
|
|
assert.isTrue(arrivedInDepth);
|
|
})
|
|
}); |