mirror of
https://github.com/wassname/talk.git
synced 2026-07-03 18:58:39 +08:00
Merge branch 'master' into lint-upgrade
This commit is contained in:
@@ -10,10 +10,13 @@ const CommentsService = require('../../../../services/comments');
|
||||
const {expect} = require('chai');
|
||||
|
||||
describe('graph.queries.asset', () => {
|
||||
let asset, users;
|
||||
let assets, users, comments;
|
||||
beforeEach(async () => {
|
||||
await SettingsService.init();
|
||||
asset = await Asset.create({id: '1', url: 'https://example.com'});
|
||||
assets = await Asset.create([
|
||||
{id: '1', url: 'https://example.com/?id=1'},
|
||||
{id: '2', url: 'https://example.com/?id=2'}
|
||||
]);
|
||||
users = await UsersService.createLocalUsers([
|
||||
{
|
||||
email: 'usernameA@example.com',
|
||||
@@ -31,17 +34,63 @@ describe('graph.queries.asset', () => {
|
||||
username: 'usernameC'
|
||||
}
|
||||
]);
|
||||
comments = await CommentsService.publicCreate([0, 1, 0, 1].map((idx) => ({
|
||||
author_id: users[idx].id,
|
||||
asset_id: assets[idx].id,
|
||||
body: `hello there! ${String(Math.random()).slice(2)}`,
|
||||
})));
|
||||
});
|
||||
|
||||
it('will not show the same asset stream across multiple assets', async () => {
|
||||
const context = new Context({user: users[0]});
|
||||
|
||||
const query = `
|
||||
fragment assetFragment on Asset {
|
||||
comments(query: {limit: 2}) {
|
||||
nodes {
|
||||
id
|
||||
}
|
||||
hasNextPage
|
||||
}
|
||||
}
|
||||
|
||||
query assetQuery($id: ID!, $otherID: ID!) {
|
||||
asset(id: $id) {
|
||||
...assetFragment
|
||||
}
|
||||
otherAsset: asset(id: $otherID) {
|
||||
...assetFragment
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
let res = await graphql(schema, query, {}, context, {id: assets[0].id, otherID: assets[1].id});
|
||||
if (res.errors) {
|
||||
console.error(res.errors);
|
||||
}
|
||||
expect(res.errors).is.empty;
|
||||
|
||||
let {asset: {comments: asset}, otherAsset: {comments: otherAsset}} = res.data;
|
||||
|
||||
expect(asset.nodes).to.have.length(2);
|
||||
expect(asset.hasNextPage).to.be.false;
|
||||
expect(asset.nodes[0]).to.have.property('id', comments[2].id);
|
||||
expect(asset.nodes[1]).to.have.property('id', comments[0].id);
|
||||
expect(otherAsset.nodes).to.have.length(2);
|
||||
expect(otherAsset.hasNextPage).to.be.false;
|
||||
expect(otherAsset.nodes[0]).to.have.property('id', comments[3].id);
|
||||
expect(otherAsset.nodes[1]).to.have.property('id', comments[1].id);
|
||||
|
||||
for (let node of asset.nodes) {
|
||||
for (let otherNode of otherAsset.nodes) {
|
||||
expect(node.id).to.not.equal(otherNode.id);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it('can get comments edge', async () => {
|
||||
const context = new Context({user: users[0]});
|
||||
|
||||
await CommentsService.publicCreate([1, 2].map(() => ({
|
||||
author_id: users[0].id,
|
||||
asset_id: asset.id,
|
||||
body: `hello there! ${String(Math.random()).slice(2)}`,
|
||||
})));
|
||||
|
||||
const assetCommentsQuery = `
|
||||
query assetCommentsQuery($id: ID!) {
|
||||
asset(id: $id) {
|
||||
@@ -58,8 +107,7 @@ describe('graph.queries.asset', () => {
|
||||
}
|
||||
}
|
||||
`;
|
||||
const res = await graphql(schema, assetCommentsQuery, {}, context, {id: asset.id});
|
||||
expect(res.errors).is.empty;
|
||||
const res = await graphql(schema, assetCommentsQuery, {}, context, {id: assets[0].id});
|
||||
const {nodes, startCursor, endCursor, hasNextPage} = res.data.asset.comments;
|
||||
expect(nodes.length).to.equal(2);
|
||||
expect(startCursor).to.equal(nodes[0].created_at);
|
||||
@@ -70,12 +118,6 @@ describe('graph.queries.asset', () => {
|
||||
it('can query comments edge to exclude comments ignored by user', async () => {
|
||||
const context = new Context({user: users[0]});
|
||||
|
||||
await Promise.all(users.slice(1, 3).map((user) => CommentsService.publicCreate({
|
||||
author_id: user.id,
|
||||
asset_id: asset.id,
|
||||
body: `hello there! ${String(Math.random()).slice(2)}`,
|
||||
})));
|
||||
|
||||
// Add the second user to the list of ignored users.
|
||||
context.user.ignoresUsers.push(users[1].id);
|
||||
|
||||
@@ -94,16 +136,13 @@ describe('graph.queries.asset', () => {
|
||||
|
||||
{
|
||||
const res = await graphql(schema, query, {}, context, {
|
||||
id: asset.id,
|
||||
url: asset.url,
|
||||
id: assets[0].id,
|
||||
url: assets[0].url,
|
||||
excludeIgnored: true
|
||||
});
|
||||
if (res.errors && res.errors.length) {
|
||||
console.error(res.errors);
|
||||
}
|
||||
expect(res.errors).is.empty;
|
||||
const nodes = res.data.asset.comments.nodes;
|
||||
expect(nodes.length).to.equal(1);
|
||||
const {nodes} = res.data.asset.comments;
|
||||
expect(nodes.length).to.equal(2);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user