import test from 'ava' import { graphql } from 'graphql' import extension from '../../../src/extensions/cover-art-archive' import baseSchema, { applyExtension } from '../../../src/schema' import baseContext from '../../helpers/context' const schema = applyExtension(extension, baseSchema) const context = extension.extendContext(baseContext) function testData(t, query, handler) { return graphql(schema, query, null, context).then(result => { if (result.errors !== undefined) { console.log(result.errors) } 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 t.true(coverArtArchive.artwork) t.is( coverArtArchive.front, 'http://coverartarchive.org/release/25fbfbb4-b1ee-4448-aadf-ae3bc2e2dd27/1675312275.jpg' ) t.is(coverArtArchive.release.mbid, '25fbfbb4-b1ee-4448-aadf-ae3bc2e2dd27') 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 t.is( coverArtArchive.small, 'http://coverartarchive.org/release/25fbfbb4-b1ee-4448-aadf-ae3bc2e2dd27/1675312275-250.jpg' ) t.is( coverArtArchive.large, 'http://coverartarchive.org/release/25fbfbb4-b1ee-4448-aadf-ae3bc2e2dd27/1675312275-500.jpg' ) } ) 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)) } )