mirror of
https://github.com/BradNut/graphbrainz
synced 2025-09-08 17:40:32 +00:00
Reconsider test indentation
This commit is contained in:
parent
b2ec20ed2c
commit
195e9fdb7c
1 changed files with 398 additions and 419 deletions
817
test/schema.js
817
test/schema.js
|
|
@ -18,122 +18,115 @@ function testError (t, query, handler) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
test('schema has a node field', testData,
|
test('schema has a node field', testData, `
|
||||||
`
|
{
|
||||||
{
|
node(id: "UmVsZWFzZUdyb3VwOmUzN2QyNzQwLTQ1MDMtNGUzZi1hYjZkLWU2MjJhMjVlOTY0ZA==") {
|
||||||
node(id: "UmVsZWFzZUdyb3VwOmUzN2QyNzQwLTQ1MDMtNGUzZi1hYjZkLWU2MjJhMjVlOTY0ZA==") {
|
__typename
|
||||||
__typename
|
... on ReleaseGroup {
|
||||||
... on ReleaseGroup {
|
mbid
|
||||||
mbid
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, (t, data) => {
|
|
||||||
t.deepEqual(data, {
|
|
||||||
node: {
|
|
||||||
__typename: 'ReleaseGroup',
|
|
||||||
mbid: 'e37d2740-4503-4e3f-ab6d-e622a25e964d'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
)
|
`, (t, data) => {
|
||||||
|
t.deepEqual(data, {
|
||||||
|
node: {
|
||||||
|
__typename: 'ReleaseGroup',
|
||||||
|
mbid: 'e37d2740-4503-4e3f-ab6d-e622a25e964d'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
test('schema has a lookup query', testData,
|
test('schema has a lookup query', testData, `
|
||||||
`
|
{
|
||||||
{
|
lookup {
|
||||||
lookup {
|
artist (mbid: "c8da2e40-bd28-4d4e-813a-bd2f51958ba8") {
|
||||||
artist (mbid: "c8da2e40-bd28-4d4e-813a-bd2f51958ba8") {
|
mbid
|
||||||
mbid
|
name
|
||||||
name
|
type
|
||||||
type
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, (t, data) => {
|
}
|
||||||
t.deepEqual(data, {
|
`, (t, data) => {
|
||||||
lookup: {
|
t.deepEqual(data, {
|
||||||
artist: {
|
lookup: {
|
||||||
mbid: 'c8da2e40-bd28-4d4e-813a-bd2f51958ba8',
|
artist: {
|
||||||
name: 'Lures',
|
mbid: 'c8da2e40-bd28-4d4e-813a-bd2f51958ba8',
|
||||||
type: 'Group'
|
name: 'Lures',
|
||||||
}
|
type: 'Group'
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
})
|
})
|
||||||
|
})
|
||||||
|
|
||||||
test('schema has a search query', testData,
|
test('schema has a search query', testData, `
|
||||||
`
|
{
|
||||||
{
|
search {
|
||||||
search {
|
recordings (query: "Burn the Witch") {
|
||||||
recordings (query: "Burn the Witch") {
|
totalCount
|
||||||
totalCount
|
edges {
|
||||||
edges {
|
score
|
||||||
score
|
node {
|
||||||
node {
|
mbid
|
||||||
mbid
|
title
|
||||||
title
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, (t, data) => {
|
}
|
||||||
const { recordings } = data.search
|
`, (t, data) => {
|
||||||
t.true(recordings.totalCount > 0)
|
const { recordings } = data.search
|
||||||
t.true(recordings.edges.length === 25)
|
t.true(recordings.totalCount > 0)
|
||||||
recordings.edges.forEach(edge => t.true(edge.score > 0))
|
t.true(recordings.edges.length === 25)
|
||||||
})
|
recordings.edges.forEach(edge => t.true(edge.score > 0))
|
||||||
|
})
|
||||||
|
|
||||||
test('schema has a browse query', testData,
|
test('schema has a browse query', testData, `
|
||||||
`
|
{
|
||||||
{
|
browse {
|
||||||
browse {
|
releaseGroups (artist: "c8da2e40-bd28-4d4e-813a-bd2f51958ba8") {
|
||||||
releaseGroups (artist: "c8da2e40-bd28-4d4e-813a-bd2f51958ba8") {
|
totalCount
|
||||||
totalCount
|
edges {
|
||||||
edges {
|
node {
|
||||||
node {
|
mbid
|
||||||
mbid
|
title
|
||||||
title
|
artistCredit {
|
||||||
artistCredit {
|
artist {
|
||||||
artist {
|
mbid
|
||||||
mbid
|
|
||||||
}
|
|
||||||
name
|
|
||||||
joinPhrase
|
|
||||||
}
|
}
|
||||||
|
name
|
||||||
|
joinPhrase
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, (t, data) => {
|
}
|
||||||
const { releaseGroups } = data.browse
|
`, (t, data) => {
|
||||||
t.true(releaseGroups.totalCount > 0)
|
const { releaseGroups } = data.browse
|
||||||
t.true(releaseGroups.edges.length > 0)
|
t.true(releaseGroups.totalCount > 0)
|
||||||
releaseGroups.edges.forEach(edge => t.truthy(edge.node.title))
|
t.true(releaseGroups.edges.length > 0)
|
||||||
})
|
releaseGroups.edges.forEach(edge => t.truthy(edge.node.title))
|
||||||
|
})
|
||||||
|
|
||||||
test('supports deeply nested queries', testData,
|
test('supports deeply nested queries', testData, `
|
||||||
`
|
query AppleRecordsMarriages {
|
||||||
query AppleRecordsMarriages {
|
search {
|
||||||
search {
|
labels(query: "Apple Records", first: 1) {
|
||||||
labels(query: "Apple Records", first: 1) {
|
edges {
|
||||||
edges {
|
node {
|
||||||
node {
|
name
|
||||||
name
|
disambiguation
|
||||||
disambiguation
|
country
|
||||||
country
|
releases(first: 1) {
|
||||||
releases(first: 1) {
|
edges {
|
||||||
edges {
|
node {
|
||||||
node {
|
title
|
||||||
title
|
date
|
||||||
date
|
artists {
|
||||||
artists {
|
edges {
|
||||||
edges {
|
node {
|
||||||
node {
|
name
|
||||||
name
|
...bandMembers
|
||||||
...bandMembers
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -144,394 +137,380 @@ test('supports deeply nested queries', testData,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fragment bandMembers on Artist {
|
fragment bandMembers on Artist {
|
||||||
relationships {
|
relationships {
|
||||||
artists(direction: "backward", type: "member of band") {
|
artists(direction: "backward", type: "member of band") {
|
||||||
edges {
|
edges {
|
||||||
node {
|
node {
|
||||||
type
|
type
|
||||||
target {
|
target {
|
||||||
... on Artist {
|
... on Artist {
|
||||||
name
|
name
|
||||||
...marriages
|
...marriages
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fragment marriages on Artist {
|
fragment marriages on Artist {
|
||||||
relationships {
|
relationships {
|
||||||
artists(type: "married") {
|
artists(type: "married") {
|
||||||
edges {
|
edges {
|
||||||
node {
|
node {
|
||||||
type
|
type
|
||||||
direction
|
direction
|
||||||
begin
|
begin
|
||||||
end
|
end
|
||||||
target {
|
target {
|
||||||
... on Artist {
|
... on Artist {
|
||||||
name
|
name
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, (t, data) => {
|
}
|
||||||
const { labels } = data.search
|
`, (t, data) => {
|
||||||
t.true(labels.edges.length > 0)
|
const { labels } = data.search
|
||||||
t.is(labels.edges[0].node.releases.edges.length, 1)
|
t.true(labels.edges.length > 0)
|
||||||
})
|
t.is(labels.edges[0].node.releases.edges.length, 1)
|
||||||
|
})
|
||||||
|
|
||||||
test('throws an error if given a malformed MBID', testError,
|
test('throws an error if given a malformed MBID', testError, `
|
||||||
`
|
{
|
||||||
{
|
lookup {
|
||||||
lookup {
|
artist(mbid: "ABC123") {
|
||||||
artist(mbid: "ABC123") {
|
name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`, (t, errors) => {
|
||||||
|
const err = errors[0]
|
||||||
|
t.true(err instanceof TypeError)
|
||||||
|
t.is(err.message, 'Malformed MBID: ABC123')
|
||||||
|
})
|
||||||
|
|
||||||
|
test('Artist beginArea/endArea pulls from begin_area/end_area for lookup queries', testData, `
|
||||||
|
{
|
||||||
|
lookup {
|
||||||
|
artist(mbid: "65314b12-0e08-43fa-ba33-baaa7b874c15") {
|
||||||
|
beginArea {
|
||||||
|
name
|
||||||
|
}
|
||||||
|
endArea {
|
||||||
name
|
name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, (t, errors) => {
|
}
|
||||||
const err = errors[0]
|
`, (t, data) => {
|
||||||
t.true(err instanceof TypeError)
|
const { artist } = data.lookup
|
||||||
t.is(err.message, 'Malformed MBID: ABC123')
|
t.is(artist.beginArea.name, 'Westmount')
|
||||||
})
|
t.is(artist.endArea.name, 'Los Angeles')
|
||||||
|
})
|
||||||
|
|
||||||
test('Artist beginArea/endArea pulls from begin_area/end_area for lookup queries', testData,
|
test('Artist beginArea/endArea pull from begin_area/end_area for browse queries', testData, `
|
||||||
`
|
{
|
||||||
{
|
browse {
|
||||||
lookup {
|
artists(area: "3f504d54-c40c-487d-bc16-c1990eac887f") {
|
||||||
artist(mbid: "65314b12-0e08-43fa-ba33-baaa7b874c15") {
|
edges {
|
||||||
beginArea {
|
node {
|
||||||
name
|
beginArea {
|
||||||
}
|
name
|
||||||
endArea {
|
}
|
||||||
name
|
endArea {
|
||||||
}
|
name
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`, (t, data) => {
|
|
||||||
const { artist } = data.lookup
|
|
||||||
t.is(artist.beginArea.name, 'Westmount')
|
|
||||||
t.is(artist.endArea.name, 'Los Angeles')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('Artist beginArea/endArea pull from begin_area/end_area for browse queries', testData,
|
|
||||||
`
|
|
||||||
{
|
|
||||||
browse {
|
|
||||||
artists(area: "3f504d54-c40c-487d-bc16-c1990eac887f") {
|
|
||||||
edges {
|
|
||||||
node {
|
|
||||||
beginArea {
|
|
||||||
name
|
|
||||||
}
|
|
||||||
endArea {
|
|
||||||
name
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, (t, data) => {
|
}
|
||||||
const artists = data.browse.artists.edges.map(edge => edge.node)
|
`, (t, data) => {
|
||||||
t.true(artists.length > 1)
|
const artists = data.browse.artists.edges.map(edge => edge.node)
|
||||||
t.true(artists.some(artist => artist.beginArea))
|
t.true(artists.length > 1)
|
||||||
t.true(artists.some(artist => artist.endArea))
|
t.true(artists.some(artist => artist.beginArea))
|
||||||
})
|
t.true(artists.some(artist => artist.endArea))
|
||||||
|
})
|
||||||
|
|
||||||
test('Artist beginArea/endArea pulls from begin-area/end-area for search queries', testData,
|
test('Artist beginArea/endArea pulls from begin-area/end-area for search queries', testData, `
|
||||||
`
|
{
|
||||||
{
|
search {
|
||||||
search {
|
artists(query: "Leonard Cohen", first: 1) {
|
||||||
artists(query: "Leonard Cohen", first: 1) {
|
edges {
|
||||||
edges {
|
node {
|
||||||
node {
|
beginArea {
|
||||||
beginArea {
|
name
|
||||||
name
|
}
|
||||||
}
|
endArea {
|
||||||
endArea {
|
name
|
||||||
name
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, (t, data) => {
|
}
|
||||||
const artists = data.search.artists.edges.map(edge => edge.node)
|
`, (t, data) => {
|
||||||
t.true(artists.length === 1)
|
const artists = data.search.artists.edges.map(edge => edge.node)
|
||||||
t.is(artists[0].beginArea.name, 'Westmount')
|
t.true(artists.length === 1)
|
||||||
t.is(artists[0].endArea.name, 'Los Angeles')
|
t.is(artists[0].beginArea.name, 'Westmount')
|
||||||
})
|
t.is(artists[0].endArea.name, 'Los Angeles')
|
||||||
|
})
|
||||||
|
|
||||||
test('relationships filter by type', testData,
|
test('relationships filter by type', testData, `
|
||||||
`
|
{
|
||||||
{
|
lookup {
|
||||||
lookup {
|
artist(mbid: "65314b12-0e08-43fa-ba33-baaa7b874c15") {
|
||||||
artist(mbid: "65314b12-0e08-43fa-ba33-baaa7b874c15") {
|
relationships {
|
||||||
relationships {
|
artists(first: 5) {
|
||||||
artists(first: 5) {
|
edges {
|
||||||
edges {
|
node {
|
||||||
node {
|
target {
|
||||||
target {
|
__typename
|
||||||
__typename
|
|
||||||
}
|
|
||||||
targetType
|
|
||||||
}
|
}
|
||||||
|
targetType
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
recordings(first: 5) {
|
}
|
||||||
edges {
|
recordings(first: 5) {
|
||||||
node {
|
edges {
|
||||||
target {
|
node {
|
||||||
__typename
|
target {
|
||||||
}
|
__typename
|
||||||
targetType
|
|
||||||
}
|
}
|
||||||
|
targetType
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
releases(first: 5) {
|
}
|
||||||
edges {
|
releases(first: 5) {
|
||||||
node {
|
edges {
|
||||||
target {
|
node {
|
||||||
__typename
|
target {
|
||||||
}
|
__typename
|
||||||
targetType
|
|
||||||
}
|
}
|
||||||
|
targetType
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, (t, data) => {
|
}
|
||||||
const { relationships } = data.lookup.artist
|
`, (t, data) => {
|
||||||
t.is(relationships.artists.edges.length, 5)
|
const { relationships } = data.lookup.artist
|
||||||
relationships.artists.edges.forEach(edge => {
|
t.is(relationships.artists.edges.length, 5)
|
||||||
t.is(edge.node.targetType, 'artist')
|
relationships.artists.edges.forEach(edge => {
|
||||||
t.is(edge.node.target.__typename, 'Artist')
|
t.is(edge.node.targetType, 'artist')
|
||||||
})
|
t.is(edge.node.target.__typename, 'Artist')
|
||||||
t.is(relationships.recordings.edges.length, 5)
|
|
||||||
relationships.recordings.edges.forEach(edge => {
|
|
||||||
t.is(edge.node.targetType, 'recording')
|
|
||||||
t.is(edge.node.target.__typename, 'Recording')
|
|
||||||
})
|
|
||||||
t.is(relationships.releases.edges.length, 5)
|
|
||||||
relationships.releases.edges.forEach(edge => {
|
|
||||||
t.is(edge.node.targetType, 'release')
|
|
||||||
t.is(edge.node.target.__typename, 'Release')
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
t.is(relationships.recordings.edges.length, 5)
|
||||||
|
relationships.recordings.edges.forEach(edge => {
|
||||||
|
t.is(edge.node.targetType, 'recording')
|
||||||
|
t.is(edge.node.target.__typename, 'Recording')
|
||||||
|
})
|
||||||
|
t.is(relationships.releases.edges.length, 5)
|
||||||
|
relationships.releases.edges.forEach(edge => {
|
||||||
|
t.is(edge.node.targetType, 'release')
|
||||||
|
t.is(edge.node.target.__typename, 'Release')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
test('Area maps iso-3166-1-codes to isoCodes', testData,
|
test('Area maps iso-3166-1-codes to isoCodes', testData, `
|
||||||
`
|
{
|
||||||
{
|
lookup {
|
||||||
lookup {
|
area(mbid: "489ce91b-6658-3307-9877-795b68554c98") {
|
||||||
area(mbid: "489ce91b-6658-3307-9877-795b68554c98") {
|
name
|
||||||
|
isoCodes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`, (t, data) => {
|
||||||
|
t.deepEqual(data.lookup.area.isoCodes, ['US'])
|
||||||
|
})
|
||||||
|
|
||||||
|
test('Alias locales use the Locale scalar', testData, `
|
||||||
|
{
|
||||||
|
lookup {
|
||||||
|
artist(mbid: "f99b7d67-4e63-4678-aa66-4c6ac0f7d24a") {
|
||||||
|
aliases {
|
||||||
name
|
name
|
||||||
isoCodes
|
locale
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, (t, data) => {
|
}
|
||||||
t.deepEqual(data.lookup.area.isoCodes, ['US'])
|
`, (t, data) => {
|
||||||
})
|
const { aliases } = data.lookup.artist
|
||||||
|
t.is(aliases.find(alias => alias.locale === 'en').name, 'PSY')
|
||||||
|
t.is(aliases.find(alias => alias.locale === 'ko').name, '싸이')
|
||||||
|
})
|
||||||
|
|
||||||
test('Alias locales use the Locale scalar', testData,
|
test('Work ISWCs use the ISWC scalar', testData, `
|
||||||
`
|
{
|
||||||
{
|
lookup {
|
||||||
lookup {
|
work(mbid: "ef7d0814-da6a-32f5-a600-ff81cffd1aed") {
|
||||||
artist(mbid: "f99b7d67-4e63-4678-aa66-4c6ac0f7d24a") {
|
title
|
||||||
aliases {
|
iswcs
|
||||||
name
|
}
|
||||||
locale
|
}
|
||||||
|
}
|
||||||
|
`, (t, data) => {
|
||||||
|
const { work } = data.lookup
|
||||||
|
t.is(work.title, 'Song of the French Partisan')
|
||||||
|
t.deepEqual(work.iswcs, ['T-900.755.682-3'])
|
||||||
|
})
|
||||||
|
|
||||||
|
test('URLs may be looked up by resource', testData, `
|
||||||
|
{
|
||||||
|
lookup {
|
||||||
|
url(resource: "http://www.nirvana.com/") {
|
||||||
|
mbid
|
||||||
|
resource
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`, (t, data) => {
|
||||||
|
const { url } = data.lookup
|
||||||
|
t.is(url.mbid, '4347ffe2-82ec-4059-9520-6a1a3f73a304')
|
||||||
|
t.is(url.resource, 'http://www.nirvana.com/')
|
||||||
|
})
|
||||||
|
|
||||||
|
test('throws an error if given a malformed URLString', testError, `
|
||||||
|
{
|
||||||
|
lookup {
|
||||||
|
url(resource: "http:foo") {
|
||||||
|
mbid
|
||||||
|
resource
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`, (t, errors) => {
|
||||||
|
const err = errors[0]
|
||||||
|
t.true(err instanceof TypeError)
|
||||||
|
t.is(err.message, 'Malformed URL: http:foo')
|
||||||
|
})
|
||||||
|
|
||||||
|
test('Release groups can be browsed by type', testData, `
|
||||||
|
{
|
||||||
|
browse {
|
||||||
|
releaseGroups(artist: "5b11f4ce-a62d-471e-81fc-a69a8278c7da", type: EP) {
|
||||||
|
edges {
|
||||||
|
node {
|
||||||
|
primaryType
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, (t, data) => {
|
}
|
||||||
const { aliases } = data.lookup.artist
|
`, (t, data) => {
|
||||||
t.is(aliases.find(alias => alias.locale === 'en').name, 'PSY')
|
const releaseGroups = data.browse.releaseGroups.edges.map(edge => edge.node)
|
||||||
t.is(aliases.find(alias => alias.locale === 'ko').name, '싸이')
|
t.is(releaseGroups.length, 8)
|
||||||
})
|
releaseGroups.forEach(releaseGroup => t.is(releaseGroup.primaryType, 'EP'))
|
||||||
|
})
|
||||||
|
|
||||||
test('Work ISWCs use the ISWC scalar', testData,
|
test('Releases can be browsed by type and status', testData, `
|
||||||
`
|
{
|
||||||
{
|
browse {
|
||||||
lookup {
|
releases(artist: "5b11f4ce-a62d-471e-81fc-a69a8278c7da", type: EP, status: BOOTLEG) {
|
||||||
work(mbid: "ef7d0814-da6a-32f5-a600-ff81cffd1aed") {
|
edges {
|
||||||
title
|
node {
|
||||||
iswcs
|
status
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`, (t, data) => {
|
|
||||||
const { work } = data.lookup
|
|
||||||
t.is(work.title, 'Song of the French Partisan')
|
|
||||||
t.deepEqual(work.iswcs, ['T-900.755.682-3'])
|
|
||||||
})
|
|
||||||
|
|
||||||
test('URLs may be looked up by resource', testData,
|
|
||||||
`
|
|
||||||
{
|
|
||||||
lookup {
|
|
||||||
url(resource: "http://www.nirvana.com/") {
|
|
||||||
mbid
|
|
||||||
resource
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`, (t, data) => {
|
|
||||||
const { url } = data.lookup
|
|
||||||
t.is(url.mbid, '4347ffe2-82ec-4059-9520-6a1a3f73a304')
|
|
||||||
t.is(url.resource, 'http://www.nirvana.com/')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('throws an error if given a malformed URLString', testError,
|
|
||||||
`
|
|
||||||
{
|
|
||||||
lookup {
|
|
||||||
url(resource: "http:foo") {
|
|
||||||
mbid
|
|
||||||
resource
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`, (t, errors) => {
|
|
||||||
const err = errors[0]
|
|
||||||
t.true(err instanceof TypeError)
|
|
||||||
t.is(err.message, 'Malformed URL: http:foo')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('Release groups can be browsed by type', testData,
|
|
||||||
`
|
|
||||||
{
|
|
||||||
browse {
|
|
||||||
releaseGroups(artist: "5b11f4ce-a62d-471e-81fc-a69a8278c7da", type: EP) {
|
|
||||||
edges {
|
|
||||||
node {
|
|
||||||
primaryType
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, (t, data) => {
|
}
|
||||||
const releaseGroups = data.browse.releaseGroups.edges.map(edge => edge.node)
|
`, (t, data) => {
|
||||||
t.is(releaseGroups.length, 8)
|
const releases = data.browse.releases.edges.map(edge => edge.node)
|
||||||
releaseGroups.forEach(releaseGroup => t.is(releaseGroup.primaryType, 'EP'))
|
t.is(releases.length, 6)
|
||||||
})
|
releases.forEach(release => t.is(release.status, 'BOOTLEG'))
|
||||||
|
})
|
||||||
|
|
||||||
test('Releases can be browsed by type and status', testData,
|
test('Releases have an ASIN field', testData, `
|
||||||
`
|
{
|
||||||
{
|
lookup {
|
||||||
browse {
|
release(mbid: "d5cdb7fd-c7e9-460a-9549-8a369655cc52") {
|
||||||
releases(artist: "5b11f4ce-a62d-471e-81fc-a69a8278c7da", type: EP, status: BOOTLEG) {
|
asin
|
||||||
edges {
|
}
|
||||||
node {
|
}
|
||||||
status
|
}
|
||||||
}
|
`, (t, data) => {
|
||||||
}
|
const { release } = data.lookup
|
||||||
|
t.is(release.asin, 'B01KN6XDS6')
|
||||||
|
})
|
||||||
|
|
||||||
|
test('Artists have a list of ISNIs and IPIs', testData, `
|
||||||
|
{
|
||||||
|
lookup {
|
||||||
|
artist(mbid: "65314b12-0e08-43fa-ba33-baaa7b874c15") {
|
||||||
|
ipis
|
||||||
|
isnis
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`, (t, data) => {
|
||||||
|
const { artist } = data.lookup
|
||||||
|
t.deepEqual(artist.ipis, ['00006457004'])
|
||||||
|
t.deepEqual(artist.isnis, ['0000000110273481'])
|
||||||
|
})
|
||||||
|
|
||||||
|
test('artistCredits is an alias for artistCredit', testData, `
|
||||||
|
{
|
||||||
|
lookup {
|
||||||
|
recording(mbid: "07649758-09c8-4d70-bc6f-5c37ab36334d") {
|
||||||
|
artistCredit {
|
||||||
|
name
|
||||||
|
joinPhrase
|
||||||
|
}
|
||||||
|
artistCredits {
|
||||||
|
name
|
||||||
|
joinPhrase
|
||||||
|
}
|
||||||
|
}
|
||||||
|
release(mbid: "d5cdb7fd-c7e9-460a-9549-8a369655cc52") {
|
||||||
|
artistCredit {
|
||||||
|
name
|
||||||
|
joinPhrase
|
||||||
|
}
|
||||||
|
artistCredits {
|
||||||
|
name
|
||||||
|
joinPhrase
|
||||||
|
}
|
||||||
|
}
|
||||||
|
releaseGroup(mbid: "53614893-6f25-4519-9cae-b1db904e2887") {
|
||||||
|
artistCredit {
|
||||||
|
name
|
||||||
|
joinPhrase
|
||||||
|
}
|
||||||
|
artistCredits {
|
||||||
|
name
|
||||||
|
joinPhrase
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, (t, data) => {
|
}
|
||||||
const releases = data.browse.releases.edges.map(edge => edge.node)
|
`, (t, data) => {
|
||||||
t.is(releases.length, 6)
|
const { recording, release, releaseGroup } = data.lookup
|
||||||
releases.forEach(release => t.is(release.status, 'BOOTLEG'))
|
t.deepEqual(recording.artistCredit, [
|
||||||
})
|
{ name: 'Holly Golightly', joinPhrase: ' & ' },
|
||||||
|
{ name: 'The Brokeoffs', joinPhrase: '' }
|
||||||
|
])
|
||||||
|
t.deepEqual(recording.artistCredits, recording.artistCredit)
|
||||||
|
|
||||||
test('Releases have an ASIN field', testData,
|
t.deepEqual(release.artistCredit, [
|
||||||
`
|
{ name: 'Leonard Cohen', joinPhrase: '' }
|
||||||
{
|
])
|
||||||
lookup {
|
t.deepEqual(release.artistCredits, release.artistCredit)
|
||||||
release(mbid: "d5cdb7fd-c7e9-460a-9549-8a369655cc52") {
|
|
||||||
asin
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`, (t, data) => {
|
|
||||||
const { release } = data.lookup
|
|
||||||
t.is(release.asin, 'B01KN6XDS6')
|
|
||||||
})
|
|
||||||
|
|
||||||
test('Artists have a list of ISNIs and IPIs', testData,
|
t.deepEqual(releaseGroup.artistCredit, [
|
||||||
`
|
{ name: 'DJ Muggs', joinPhrase: ' vs. ' },
|
||||||
{
|
{ name: 'Ill Bill', joinPhrase: '' }
|
||||||
lookup {
|
])
|
||||||
artist(mbid: "65314b12-0e08-43fa-ba33-baaa7b874c15") {
|
t.deepEqual(releaseGroup.artistCredits, releaseGroup.artistCredit)
|
||||||
ipis
|
})
|
||||||
isnis
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`, (t, data) => {
|
|
||||||
const { artist } = data.lookup
|
|
||||||
t.deepEqual(artist.ipis, ['00006457004'])
|
|
||||||
t.deepEqual(artist.isnis, ['0000000110273481'])
|
|
||||||
})
|
|
||||||
|
|
||||||
test('artistCredits is an alias for artistCredit', testData,
|
|
||||||
`
|
|
||||||
{
|
|
||||||
lookup {
|
|
||||||
recording(mbid: "07649758-09c8-4d70-bc6f-5c37ab36334d") {
|
|
||||||
artistCredit {
|
|
||||||
name
|
|
||||||
joinPhrase
|
|
||||||
}
|
|
||||||
artistCredits {
|
|
||||||
name
|
|
||||||
joinPhrase
|
|
||||||
}
|
|
||||||
}
|
|
||||||
release(mbid: "d5cdb7fd-c7e9-460a-9549-8a369655cc52") {
|
|
||||||
artistCredit {
|
|
||||||
name
|
|
||||||
joinPhrase
|
|
||||||
}
|
|
||||||
artistCredits {
|
|
||||||
name
|
|
||||||
joinPhrase
|
|
||||||
}
|
|
||||||
}
|
|
||||||
releaseGroup(mbid: "53614893-6f25-4519-9cae-b1db904e2887") {
|
|
||||||
artistCredit {
|
|
||||||
name
|
|
||||||
joinPhrase
|
|
||||||
}
|
|
||||||
artistCredits {
|
|
||||||
name
|
|
||||||
joinPhrase
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`, (t, data) => {
|
|
||||||
const { recording, release, releaseGroup } = data.lookup
|
|
||||||
t.deepEqual(recording.artistCredit, [
|
|
||||||
{ name: 'Holly Golightly', joinPhrase: ' & ' },
|
|
||||||
{ name: 'The Brokeoffs', joinPhrase: '' }
|
|
||||||
])
|
|
||||||
t.deepEqual(recording.artistCredits, recording.artistCredit)
|
|
||||||
|
|
||||||
t.deepEqual(release.artistCredit, [
|
|
||||||
{ name: 'Leonard Cohen', joinPhrase: '' }
|
|
||||||
])
|
|
||||||
t.deepEqual(release.artistCredits, release.artistCredit)
|
|
||||||
|
|
||||||
t.deepEqual(releaseGroup.artistCredit, [
|
|
||||||
{ name: 'DJ Muggs', joinPhrase: ' vs. ' },
|
|
||||||
{ name: 'Ill Bill', joinPhrase: '' }
|
|
||||||
])
|
|
||||||
t.deepEqual(releaseGroup.artistCredits, releaseGroup.artistCredit)
|
|
||||||
})
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue