text: import test from 'ava';
  import MusicBrainz from '../../src/api/index.js';
  import client from '../helpers/client/musicbrainz.js';
  
  test('getLookupURL() generates a lookup URL', (t) => {
    t.is(
      client.getLookupURL('artist', 'c8da2e40-bd28-4d4e-813a-bd2f51958ba8', {
        inc: ['recordings', 'release-groups'],
      }),
      'artist/c8da2e40-bd28-4d4e-813a-bd2f51958ba8?inc=recordings%2Brelease-groups'
    );
  });
  
  test('getBrowseURL() generates a browse URL', (t) => {
    t.is(
      client.getBrowseURL('recording', {
        artist: 'c8da2e40-bd28-4d4e-813a-bd2f51958ba8',
        limit: null,
        offset: 0,
      }),
      'recording?artist=c8da2e40-bd28-4d4e-813a-bd2f51958ba8&offset=0'
    );
  });
  
  test('getSearchURL() generates a search URL', (t) => {
    t.is(
      client.getSearchURL('artist', 'Lures', { inc: null }),
      'artist?query=Lures'
    );
  });
  
  test('lookup() sends a lookup query', async (t) => {
    const response = await client.lookup(
      'artist',
      'c8da2e40-bd28-4d4e-813a-bd2f51958ba8'
    );
  
    t.is(response.id, 'c8da2e40-bd28-4d4e-813a-bd2f51958ba8');
    t.is(response.type, 'Group');
  });
  
  test('rejects the promise when the API returns an error', (t) => {
    const req = client.lookup('artist', '5b11f4ce-a62d-471e-81fc-a69a8278c7da', {
      inc: ['foobar'],
    });
    return t.throwsAsync(req, {
      name: 'MusicBrainzError',
      message: 'foobar is not a valid inc parameter for the artist resource.',
    });
  });
  
  test('rejects non-MusicBrainz errors', (t) => {
    const client = new MusicBrainz({ baseURL: '$!@#$' });
    return t.throwsAsync(
      client.get('artist/5b11f4ce-a62d-471e-81fc-a69a8278c7da'),
      {
        name: 'TypeError',
      }
    );
  });
  
  test('uses the default error impementation if there is no JSON 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: 404,
        body: null,
      },
    };
    t.is(client.parseErrorMessage(error), error);
  });
  