graphbrainz/test/extensions/cover-art-archive/client.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

87 lines
2.3 KiB
JavaScript

import test from 'ava';
import client from '../../helpers/client/cover-art-archive.js';
test('can retrieve a front image URL', async (t) => {
const url = await client.imageURL(
'release',
'76df3287-6cda-33eb-8e9a-044b5e15ffdd',
'front'
);
t.is(
url,
'http://archive.org/download/mbid-76df3287-6cda-33eb-8e9a-044b5e15ffdd/mbid-76df3287-6cda-33eb-8e9a-044b5e15ffdd-829521842.jpg'
);
});
test('can retrieve a back image URL', async (t) => {
const url = await client.imageURL(
'release',
'76df3287-6cda-33eb-8e9a-044b5e15ffdd',
'back'
);
t.is(
url,
'http://archive.org/download/mbid-76df3287-6cda-33eb-8e9a-044b5e15ffdd/mbid-76df3287-6cda-33eb-8e9a-044b5e15ffdd-5769317885.jpg'
);
});
test('can retrieve a list of release images', async (t) => {
const data = await client.images(
'release',
'76df3287-6cda-33eb-8e9a-044b5e15ffdd'
);
t.is(
data.release,
'https://musicbrainz.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd'
);
t.true(data.images.length >= 3);
data.images.forEach((image) => {
t.true(image.approved);
t.truthy(image.image);
t.truthy(image.id);
t.truthy(image.thumbnails.small);
t.truthy(image.thumbnails.large);
});
t.true(data.images.some((image) => image.front));
t.true(data.images.some((image) => image.back));
t.true(data.images.some((image) => image.types.indexOf('Front') !== -1));
t.true(data.images.some((image) => image.types.indexOf('Back') !== -1));
t.true(data.images.some((image) => image.types.indexOf('Medium') !== -1));
});
test('throws an error if given an invalid MBID', (t) => {
return t.throwsAsync(client.images('release', 'xyz'), {
name: 'CoverArtArchiveError',
message: 'Bad Request: invalid MBID specified',
});
});
test('uses the default error impementation if there is no HTML error', (t) => {
let error = {
name: 'HTTPError',
response: {
statusCode: 501,
body: 'yikes',
},
};
t.is(client.parseErrorMessage(error), error);
error = {
name: 'HTTPError',
response: {
statusCode: 500,
body: '',
},
};
t.is(client.parseErrorMessage(error), error);
error = {
name: 'HTTPError',
response: {
statusCode: 500,
body: null,
},
};
t.is(client.parseErrorMessage(error), error);
});