graphbrainz/test/extensions/cover-art-archive/schema.js
Brian Beck f095cd4de7
Modernize dependencies, syntax, imports (#93)
* wip: Modernize dependencies, syntax, imports

* Use final release of ava-nock v2

* Update Travis config

* Remove Node 13 from test matrix

* Replace errorClass with parseErrorMessage in subclasses

* define exports, apply updated lint rules

* Remove markdown eslint plugin

* Update README

* v9.0.0-beta.1

* Add gql tag to exports

* v9.0.0-beta.2

* Bump ava-nock, add test

* Update dataloader loadMany usage

* Add modules note to README

* Add retry option to got calls
2021-04-15 21:34:29 -07:00

249 lines
6.1 KiB
JavaScript

import test from 'ava';
import GraphQL from 'graphql';
import extension from '../../../src/extensions/cover-art-archive/index.js';
import { baseSchema, applyExtension } from '../../../src/schema.js';
import baseContext from '../../helpers/context.js';
const { graphql } = GraphQL;
const schema = applyExtension(extension, baseSchema);
const context = extension.extendContext(baseContext, {
coverArtArchive: {
limit: Infinity,
period: 0,
},
});
function testData(t, query, handler) {
return graphql(schema, query, null, context).then((result) => {
if (result.errors !== undefined) {
result.errors.forEach((error) => t.log(error));
}
t.is(result.errors, undefined);
return handler(t, result.data);
});
}
test(
'releases have a cover art summary',
testData,
`
{
lookup {
release(mbid: "b84ee12a-09ef-421b-82de-0441a926375b") {
coverArtArchive {
artwork
count
}
}
}
}
`,
(t, data) => {
const { coverArtArchive } = data.lookup.release;
t.true(coverArtArchive.artwork);
t.true(coverArtArchive.count >= 10);
}
);
test(
'releases have a set of cover art images',
testData,
`
{
lookup {
release(mbid: "b84ee12a-09ef-421b-82de-0441a926375b") {
coverArtArchive {
front
back
images {
front
back
types
approved
edit
comment
fileID
image
thumbnails {
small
large
}
}
}
}
}
}
`,
(t, data) => {
const { coverArtArchive } = data.lookup.release;
t.is(
coverArtArchive.front,
'http://coverartarchive.org/release/b84ee12a-09ef-421b-82de-0441a926375b/1611507818.jpg'
);
t.is(
coverArtArchive.back,
'http://coverartarchive.org/release/b84ee12a-09ef-421b-82de-0441a926375b/13536418798.jpg'
);
t.true(coverArtArchive.images.length >= 10);
t.true(coverArtArchive.images.some((image) => image.front === true));
t.true(coverArtArchive.images.some((image) => image.back === true));
t.true(
coverArtArchive.images.some((image) => image.types.indexOf('Front') >= 0)
);
t.true(
coverArtArchive.images.some((image) => image.types.indexOf('Back') >= 0)
);
t.true(
coverArtArchive.images.some((image) => image.types.indexOf('Liner') >= 0)
);
t.true(
coverArtArchive.images.some((image) => image.types.indexOf('Poster') >= 0)
);
t.true(
coverArtArchive.images.some((image) => image.types.indexOf('Medium') >= 0)
);
t.true(coverArtArchive.images.some((image) => image.edit === 18544122));
t.true(coverArtArchive.images.some((image) => image.comment === ''));
t.true(
coverArtArchive.images.some((image) => image.fileID === '1611507818')
);
t.true(
coverArtArchive.images.some(
(image) =>
image.image ===
'http://coverartarchive.org/release/b84ee12a-09ef-421b-82de-0441a926375b/13536422691.jpg'
)
);
t.true(coverArtArchive.images.every((image) => image.approved === true));
t.true(coverArtArchive.images.every((image) => image.thumbnails.small));
t.true(coverArtArchive.images.every((image) => image.thumbnails.large));
}
);
test(
'can request a size for front and back cover art',
testData,
`
{
lookup {
release(mbid: "b84ee12a-09ef-421b-82de-0441a926375b") {
coverArtArchive {
front(size: LARGE)
back(size: SMALL)
fullFront: front(size: FULL)
}
}
}
}
`,
(t, data) => {
const { coverArtArchive } = data.lookup.release;
t.is(
coverArtArchive.front,
'http://coverartarchive.org/release/b84ee12a-09ef-421b-82de-0441a926375b/1611507818-500.jpg'
);
t.is(
coverArtArchive.back,
'http://coverartarchive.org/release/b84ee12a-09ef-421b-82de-0441a926375b/13536418798-250.jpg'
);
t.is(
coverArtArchive.fullFront,
'http://coverartarchive.org/release/b84ee12a-09ef-421b-82de-0441a926375b/1611507818.jpg'
);
}
);
test(
'release groups have a front cover art image',
testData,
`
{
lookup {
releaseGroup(mbid: "f5093c06-23e3-404f-aeaa-40f72885ee3a") {
coverArtArchive {
artwork
front
images {
front
image
}
release {
mbid
title
}
}
}
}
}
`,
(t, data) => {
const { coverArtArchive } = data.lookup.releaseGroup;
const { front } = coverArtArchive;
t.true(coverArtArchive.artwork);
t.snapshot({ front });
t.is(coverArtArchive.release.mbid, '6ef6e6cd-ad36-4c2f-816d-121bfb2f6774');
t.is(coverArtArchive.release.title, 'The Dark Side of the Moon');
t.is(coverArtArchive.images.length, 1);
t.true(coverArtArchive.images[0].front);
}
);
test(
'release groups have different cover art sizes available',
testData,
`
{
lookup {
releaseGroup(mbid: "f5093c06-23e3-404f-aeaa-40f72885ee3a") {
coverArtArchive {
small: front(size: SMALL)
large: front(size: LARGE)
}
}
}
}
`,
(t, data) => {
const { coverArtArchive } = data.lookup.releaseGroup;
const { small, large } = coverArtArchive;
t.snapshot({ small, large });
}
);
test(
'can retrieve cover art in searches',
testData,
`
{
search {
releases(query: "You Want It Darker") {
edges {
node {
coverArtArchive {
artwork
front
back
images {
image
}
}
}
}
}
}
}
`,
(t, data) => {
const releases = data.search.releases.edges.map((edge) => edge.node);
t.is(releases.length, 25);
t.true(
releases.some((release) => release.coverArtArchive.artwork === true)
);
t.true(
releases.some((release) => release.coverArtArchive.images.length > 0)
);
t.true(releases.some((release) => release.coverArtArchive.front === null));
t.true(releases.some((release) => release.coverArtArchive.back === null));
}
);