81 lines
4.1 KiB
JavaScript
81 lines
4.1 KiB
JavaScript
import 'should';
|
|
import * as ytmusic from '../../lib/services/ytmusic/index.js';
|
|
|
|
describe('ytmusic', function(){
|
|
describe('lookupId', () => {
|
|
it('should find album by ID', async function testV() {
|
|
const result = await ytmusic.lookupId('MPREb_nlOKEssnatr', 'album');
|
|
result.name.should.equal('Carne de Pescoço');
|
|
});
|
|
|
|
it('should find track by ID', async function (){
|
|
const result = await ytmusic.lookupId('9zrYXvUXiQk', 'track');
|
|
result.name.should.equal('One Vision');
|
|
result.artist.name.should.equal('Queen');
|
|
result.album.name.should.equal('A Kind Of Magic')
|
|
});
|
|
it('should find track by ID', async function (){
|
|
const result = await ytmusic.lookupId('rAzfNuU1f8E', 'track');
|
|
result.name.should.equal('Erre (Live)');
|
|
result.artist.name.should.equal('Boogarins');
|
|
// The copyright notice is too long and is the only place where the album name is.
|
|
result.album.name.should.equal('')
|
|
});
|
|
it('should find track by ID', async function (){
|
|
const result = await ytmusic.lookupId('Wst0la_TgTY', 'track');
|
|
result.name.should.equal('Às Vezes Bate Uma Saudade');
|
|
// XXX: This is very odd. Sometimes, google will return the first artist "Rodrigo Alarcon", sometimes "Rodrigo Alarcon, Ana Muller & Mariana Froes" and sometimes
|
|
// "Rodrigo Alarcon, Ana Muller, Mariana Froes". Same API call, same everything. Go figure.
|
|
// result.artist.name.should.equal('Rodrigo Alarcon, Ana Muller, Mariana Froes');
|
|
result.artist.name.should.startWith('Rodrigo Alarcon');
|
|
result.album.name.should.equal('Taquetá Vol.1')
|
|
});
|
|
});
|
|
describe('search', () => {
|
|
it('should find album by search', async function (){
|
|
const result = await ytmusic.search({type: 'album', artist: {name: 'Jamie xx'}, name: 'In Colour'});
|
|
result.name.should.startWith('In Colour');
|
|
result.id.should.equal("MPREb_IbDz5pAZFvJ");
|
|
});
|
|
|
|
it('should find album with various artists by search', async function (){
|
|
const result = await ytmusic.search({type: 'album', artist: {name: 'Various Artists'}, name: 'Sambabook João Nogueira'});
|
|
result.name.should.equal('Sambabook João Nogueira');
|
|
result.id.should.equal('MPREb_iZt1VjORlv7');
|
|
});
|
|
|
|
it('should find album and make sure it makes sense by search', async function(){
|
|
const result = await ytmusic.search({type: 'album', artist: {name: 'The Beatles'}, name: 'The Beatles'});
|
|
result.name.should.equal('The Beatles');
|
|
result.id.should.equal('MPREb_S5TiUIYvI78');
|
|
});
|
|
|
|
it('should find track by search', async function (){
|
|
const result = await ytmusic.search({type: 'track', artist: {name: 'Oasis'}, albumName: 'Stop The Clocks', name: 'Wonderwall'});
|
|
result.name.should.equal('Wonderwall');
|
|
result.id.should.equal('Gvfgut8nAgw');
|
|
});
|
|
});
|
|
describe('lookupUrl', () => {
|
|
describe('parseUrl', () => {
|
|
it('should parse track url into ID', async function (){
|
|
const result = await ytmusic.parseUrl('https://music.youtube.com/watch?v=YLp2cW7ICCU&feature=share');
|
|
result.id.should.equal("YLp2cW7ICCU");
|
|
result.streamUrl.should.equal("https://music.youtube.com/watch?v=YLp2cW7ICCU");
|
|
});
|
|
it('should parse album url into ID', async function (){
|
|
const result = await ytmusic.parseUrl('https://music.youtube.com/browse/MPREb_9C36yscfgmJ');
|
|
result.id.should.equal("MPREb_9C36yscfgmJ");
|
|
result.streamUrl.should.equal("https://music.youtube.com/browse/MPREb_9C36yscfgmJ");
|
|
});
|
|
it('should parse alternative album url into ID', async function (){
|
|
const result = await ytmusic.parseUrl('https://music.youtube.com/playlist?list=OLAK5uy_lx9K5RpiBEwd3E4C1GKqY7e06qTlwydvs');
|
|
result.id.should.equal("MPREb_9C36yscfgmJ");
|
|
});
|
|
it('should parse alternative album url into ID, regression', async function (){
|
|
const result = await ytmusic.parseUrl('https://music.youtube.com/playlist?list=OLAK5uy_kxepMtCUKFek54-bgWICIsmglK86HD0TM');
|
|
result.id.should.equal("MPREb_XmlDLpyWvMt");
|
|
});
|
|
});
|
|
});
|
|
});
|