src/test/apitest.js
import should from 'should';
import HttpClient from '../api/HttpClient';
import SearchFetcher from '../api/SearchFetcher';
import AlbumFetcher from '../api/AlbumFetcher';
import ArtistFetcher from '../api/ArtistFetcher';
import FeaturedPlaylistFetcher from '../api/FeaturedPlaylistFetcher';
import FeaturedPlaylistCategoryFetcher from '../api/FeaturedPlaylistCategoryFetcher';
import NewReleaseCategoryFetcher from '../api/NewReleaseCategoryFetcher';
import NewHitsPlaylistFetcher from '../api/NewHitsPlaylistFetcher';
import SharedPlaylistFetcher from '../api/SharedPlaylistFetcher';
import MoodStationFetcher from '../api/MoodStationFetcher';
import GenreStationFetcher from '../api/GenreStationFetcher';
import ChartFetcher from '../api/ChartFetcher';
import TrackFetcher from '../api/TrackFetcher';
import TokenFetcher from '../auth/TokenFetcher';
import ClientCredentials from '../auth/ClientCredentialsFlow';
import { kkbox_sdk } from '../../client_secrets.json';
const CLIENT_ID = kkbox_sdk.client_id;
const CLIENT_SECRET = kkbox_sdk.client_secret;
describe('Api Begin to Test', () => {
describe('ClientCredentials', () => {
describe('#fetch the access token()', () => {
it('should fetch access token', () => {
const tokenFetcher = new TokenFetcher(CLIENT_ID, CLIENT_SECRET);
const clientCredentials = new ClientCredentials(tokenFetcher);
return clientCredentials.fetchAccessToken().then(
response => {
const access_token = response.data.access_token;
access_token.should.be.ok;
const httpClient = new HttpClient(access_token);
describe('Search', () => {
const searchFetcher = new SearchFetcher(
httpClient
).setSearchCriteria('Linkin Park');
describe('#fetchSearchResult()', () => {
it('should response status 200', () => {
return searchFetcher.fetchSearchResult().then(response => {
response.status.should.be.exactly(200),
reject => should.not.exists(reject);
});
});
});
describe('#filter()', () => {
it('should get result', () => {
return searchFetcher
.filter({
artist: 'Linkin Park',
album: 'One More Light',
available_territory: 'TW'
})
.fetchSearchResult()
.then(response => {
response.data.tracks.data.length.should.be.greaterThan(0);
});
});
});
});
describe('Track', () => {
const track_id = 'KpnEGVHEsGgkoB0MBk';
const trackFetcher = new TrackFetcher(httpClient).setTrackID(
track_id
);
it('should response status 200', () => {
return trackFetcher
.fetchMetadata()
.then(
response => response.status.should.be.exactly(200),
reject => should.not.exists(reject)
);
});
describe('#getWidgetUri', () => {
it('should return right uri', function(doneCb) {
trackFetcher
.getWidgetUri()
.should.be.exactly(
`https://widget.kkbox.com/v1/?id=${track_id}&type=song`
);
doneCb();
});
});
});
describe('Album', () => {
const album_id = 'KmRKnW5qmUrTnGRuxF';
const albumFetcher = new AlbumFetcher(httpClient).setAlbumID(
album_id
);
describe('#fetchMetadata()', () => {
it('should response status 200', () => {
return albumFetcher.fetchMetadata().then(
response => {
response.status.should.be.exactly(200);
},
reject => {
should.not.exist(reject);
}
);
});
});
describe('#fetchTracks()', () => {
var fulfillment = undefined;
it('should response status 200', () => {
return albumFetcher.fetchTracks().then(
response => {
response.status.should.be.exactly(200);
fulfillment = response;
},
reject => {
should.not.exist(reject);
}
);
});
it('fetch next page should fail', () => {
return albumFetcher.fetchNextPage(fulfillment).then(
response => {
throw new Error('Should not get response');
},
reject => {
should.exist(reject);
}
);
});
it('should not have next page', done => {
albumFetcher.hasNextPage(fulfillment).should.be.false;
done();
});
});
describe('#getWidgetUri', () => {
it('should return right uri', done => {
albumFetcher
.getWidgetUri()
.should.be.exactly(
`https://widget.kkbox.com/v1/?id=${album_id}&type=album`
);
done();
});
});
});
describe('Album fetch next tracks', () => {
const album_id = 'Ks8MAYNedkIB_sGajW'; // Cosmic Explorer from Perfume
const albumFetcher = new AlbumFetcher(httpClient).setAlbumID(
album_id
);
describe('#fetchTracks(1)', () => {
it('should succeed and should fetch next page succeed', done => {
albumFetcher.fetchTracks(1).then(
response => {
response.status.should.be.exactly(200);
albumFetcher.fetchNextPage(response).then(
response => {
response.data.data.should.be.an.instanceOf(Array);
response.data.data.length.should.be.equal(1);
response.status.should.be.exactly(200);
done();
},
reject => {
done(reject);
}
);
},
reject => {
done(reject);
}
);
});
});
});
describe('Album fetch next page', () => {
const album_id = 'Ks8MAYNedkIB_sGajW'; // Cosmic Explorer from Perfume
const albumFetcher = new AlbumFetcher(httpClient).setAlbumID(
album_id
);
it('fetch next page should response status 200', () => {
return albumFetcher.fetchTracks(1).then(
response => {
response.status.should.be.exactly(200);
albumFetcher.fetchNextPage(response).then(
response => {
response.status.should.be.exactly(200);
},
reject => {
should.not.exists(reject);
}
);
},
reject => {
should.not.exists(reject);
}
);
});
});
describe('Shared Playlists', () => {
const playlist_id = '4nUZM-TY2aVxZ2xaA-';
const sharedPlaylistFetcher = new SharedPlaylistFetcher(
httpClient
).setPlaylistID(playlist_id);
describe('#find and get()', () => {
it('should response status 200', done => {
sharedPlaylistFetcher
.fetchMetadata()
.then(response => {
response.status.should.be.exactly(200);
done();
})
.catch(error => {
should.not.exists(error);
done(error);
});
});
});
describe('#tracks()', () => {
it('should response status 200', done => {
sharedPlaylistFetcher.fetchTracks().then(
response => {
response.status.should.be.exactly(200);
done();
},
reject => {
done(reject);
}
);
});
});
describe('#getWidgetUri', () => {
it('should return right uri', done => {
sharedPlaylistFetcher
.getWidgetUri()
.should.be.exactly(
`https://widget.kkbox.com/v1/?id=${playlist_id}&type=playlist`
);
done();
});
});
});
describe('Artist', () => {
const artistFetcher = new ArtistFetcher(httpClient).setArtistID(
'Cnv_K6i5Ft4y41SxLy'
);
describe('#fetchMetadata()', () => {
it('should response status 200', () => {
return artistFetcher
.fetchMetadata()
.then(response => {
response.status.should.be.exactly(200);
return response;
})
.catch(error => should.not.exists(error));
});
});
describe('#fetchAlbums()', () => {
it('should succeed and fetch next page should fail', () => {
return artistFetcher
.fetchAlbums()
.then(response => {
response.status.should.be.exactly(200);
artistFetcher
.fetchNextPage(response)
.then(response => {
response.status.should.not.be.exactly(200);
return response;
})
.catch(error => should.exists(error));
return response;
})
.catch(error => should.not.exists(error));
});
});
describe('#fetchTopTracks()', () => {
it('should response status 200', done => {
artistFetcher.fetchTopTracks().then(
response => {
response.status.should.be.exactly(200);
done();
},
reject => {
should.not.exists(reject);
done();
}
);
});
});
describe('#fetchRelatedArtists()', () => {
it('should response status 200', done => {
artistFetcher.fetchRelatedArtists().then(
response => {
response.status.should.be.exactly(200);
done();
},
reject => {
should.not.exists(reject);
done();
}
);
});
});
});
describe('Artist fetch album tests', () => {
const artistFetcher = new ArtistFetcher(httpClient).setArtistID(
'Cnv_K6i5Ft4y41SxLy'
);
describe('#fetchAlbums(1)', () => {
it('should succeed and fetch next page shuold succeed', done => {
artistFetcher.fetchAlbums(1).then(response => {
response.status.should.be.exactly(200);
artistFetcher.fetchNextPage(response).then(
response => {
response.status.should.be.exactly(200);
done();
},
reject => {
done(reject);
}
);
});
});
});
describe('#fetchTopTracks(1)', () => {
it('should succeed and fetch next page shuold succeed', done => {
artistFetcher.fetchTopTracks(1).then(response => {
response.status.should.be.exactly(200);
artistFetcher.fetchNextPage(response).then(
response => {
response.status.should.be.exactly(200);
done();
},
reject => {
done(reject);
}
);
});
});
});
});
describe('Featured Playlists', () => {
const featuredPlaylistFetcher = new FeaturedPlaylistFetcher(
httpClient
);
describe('#fetchAllFeaturedPlaylists()', () => {
it('should response status 200', done => {
featuredPlaylistFetcher
.fetchAllFeaturedPlaylists(1)
.then(response => {
response.status.should.be.exactly(200);
featuredPlaylistFetcher.fetchNextPage(response).then(
response => {
response.status.should.be.exactly(200);
done();
},
reject => {
done(reject);
}
);
});
});
});
});
describe('Featured Playlist Category', () => {
const featuredPlaylistCategoryFetcher = new FeaturedPlaylistCategoryFetcher(
httpClient
);
describe('#fetchAll()', () => {
it('should response status 200', () => {
return featuredPlaylistCategoryFetcher
.fetchAllFeaturedPlaylistCategories()
.then(
response => response.status.should.be.exactly(200),
reject => should.not.exists(reject)
);
});
});
const f = featuredPlaylistCategoryFetcher.setCategoryID(
'LXUR688EBKRRZydAWb'
);
describe('#fetchMetadata()', () => {
it('should response status 200', () => {
return f
.fetchMetadata()
.then(
response => response.status.should.be.exactly(200),
reject => should.not.exists(reject)
);
});
});
describe('#fetchPlaylists()', () => {
it('should response status 200 and fetch next page should succeed', done => {
f.fetchPlaylists().then(response => {
response.status.should.be.exactly(200);
f.fetchNextPage(response).then(
response => {
response.status.should.be.exactly(200);
done();
},
reject => {
done(reject);
}
);
});
});
});
});
describe('Mood Station', () => {
const moodStationFetcher = new MoodStationFetcher(httpClient);
describe('#fetchAll()', () => {
it('should succeed', () => {
return moodStationFetcher
.fetchAllMoodStations()
.then(
response => response.status.should.be.exactly(200),
reject => should.not.exists(reject)
);
});
});
describe('#fetchMetadata()', () => {
it('should succeed', () => {
return moodStationFetcher
.setMoodStationID('StGZp2ToWq92diPHS7')
.fetchMetadata()
.then(
response => response.status.should.be.exactly(200),
reject => should.not.exists(reject)
);
});
});
});
describe('Genre Station', () => {
const genreStationFetcher = new GenreStationFetcher(httpClient);
describe('#fetchAllGenreStations()', () => {
it('should succeed and fetch next page should succeed', done => {
genreStationFetcher
.fetchAllGenreStations(1)
.then(response => {
response.status.should.be.exactly(200);
genreStationFetcher.fetchNextPage(response).then(
response => {
response.status.should.be.exactly(200);
done();
},
reject => {
done(reject);
}
);
});
});
});
describe('#fetchMetadata()', () => {
it('should succeed', () => {
return genreStationFetcher
.setGenreStationID('TYq3EHFTl-1EOvJM5Y')
.fetchMetadata()
.then(
response => response.status.should.be.exactly(200),
reject => should.not.exists(reject)
);
});
});
});
describe('Chart', () => {
const chartFetcher = new ChartFetcher(httpClient);
describe('#fetchCharts()', () => {
it('should succeed and fetch next page should fail', done => {
chartFetcher.fetchCharts().then(response => {
response.status.should.be.exactly(200);
chartFetcher.hasNextPage(response).should.be.false();
chartFetcher.fetchNextPage(response).then(
response => {
response.should.not.exists();
done(response);
},
reject => {
done();
}
);
});
});
});
describe('#fetchMetadata()', () => {
it('should succeed', done => {
chartFetcher
.setPlaylistID('4mJSYXvueA8t0odsny')
.fetchMetadata()
.then(
response => {
response.status.should.be.exactly(200);
done();
},
reject => {
should.not.exists(reject);
done();
}
);
});
});
describe('#fetchTracks()', () => {
it('should succeed', done => {
chartFetcher
.setPlaylistID('4mJSYXvueA8t0odsny')
.fetchTracks()
.then(
response => {
response.status.should.be.exactly(200);
done();
},
reject => {
should.not.exists(reject);
done();
}
);
});
});
});
describe('New Release Category', () => {
const newReleaseCategoryFetcher = new NewReleaseCategoryFetcher(
httpClient
);
describe('#fetchAll()', () => {
it('should succeed and fetch next page should succeed', done => {
newReleaseCategoryFetcher
.fetchAllNewReleaseCategories(1)
.then(
response => {
response.status.should.be.exactly(200);
newReleaseCategoryFetcher
.hasNextPage(response)
.should.be.true();
newReleaseCategoryFetcher.fetchNextPage(response).then(
response => {
response.status.should.be.ok();
done();
},
reject => {
done(reject);
}
);
},
reject => should.not.exists(reject)
);
});
});
const f = newReleaseCategoryFetcher.setCategoryID(
'Cng5IUIQhxb8w1cbsz'
);
describe('#fetchMetadata()', () => {
it('should response status 200', () => {
return f
.fetchMetadata()
.then(
response => response.status.should.be.exactly(200),
reject => should.not.exists(reject)
);
});
});
describe('#fetchAlbums()', () => {
it('should response status 200 and fetch next page should succeed', done => {
f.fetchAlbums().then(response => {
response.status.should.be.exactly(200);
f.fetchNextPage(response).then(
response => {
response.status.should.be.exactly(200);
done();
},
reject => {
done(reject);
}
);
});
});
});
});
describe('New Hits Playlists', () => {
const newHitsPlaylistFetcher = new NewHitsPlaylistFetcher(
httpClient
);
describe('#fetchAll()', () => {
it('should succeed', () => {
newHitsPlaylistFetcher
.fetchAllNewHitsPlaylists()
.then(response => {
response.status.should.be.exactly(200);
})
.catch(error => should.not.exists(error));
});
});
const f = newHitsPlaylistFetcher.setPlaylistID(
'DZni8m29ciOFbRxTJq'
);
describe('#fetchMetadata()', () => {
it('should succeed', () => {
return f
.fetchMetadata()
.then(
response => response.status.should.be.exactly(200),
reject => should.not.exists(reject)
)
.catch(error => should.not.exsits(error));
});
});
describe('#fetchTracks()', () => {
it('should succeed', () => {
return f
.fetchTracks()
.then(
response => response.status.should.be.exactly(200),
reject => should.not.exists(reject)
)
.catch(error => should.not.exsits(error));
});
});
});
},
reject => should.not.exists(reject)
);
});
});
});
});