mopidy-musicbox-webclient/tests/js/test_library.js

62 lines
2.3 KiB
JavaScript

var chai = require('chai')
var expect = chai.expect
var assert = chai.assert
chai.use(require('chai-string'))
chai.use(require('chai-jquery'))
var sinon = require('sinon')
var library = require('../../mopidy_musicbox_webclient/static/js/library.js')
describe('Library', function () {
var selectID = '#selectSearchService'
var schemesArray = ['mockScheme1', 'mockScheme2', 'mockScheme3']
var mopidy = { getUriSchemes: function () { return $.when(schemesArray) } }
before(function () {
$(document.body).append('<select id="selectSearchService"></select>')
$('#selectSearchService').selectmenu()
})
beforeEach(function () {
uriHumanList = [
['mockScheme1', 'mockUriHuman1'],
['mockScheme2', 'mockUriHuman2']
]
})
describe('#getSearchSchemes()', function () {
beforeEach(function () {
$(selectID).empty()
})
it('should add human-readable options for backend schemes', function () {
library.getSearchSchemes([], mopidy)
assert.equal($(selectID).children().length, schemesArray.length + 1)
expect($(selectID).children(':eq(2)')).to.have.text('mockUriHuman2')
})
it('should get default value from cookie', function () {
$.cookie('searchScheme', 'mockScheme3')
library.getSearchSchemes([], mopidy)
expect($(selectID + ' option:selected')).to.have.value('mockScheme3')
})
it('should default to "all" backends if no cookie is available', function () {
$.removeCookie('searchScheme')
library.getSearchSchemes([], mopidy)
expect($(selectID + ' option:selected')).to.have.value('all')
})
it('should capitalize first character of backend schema if no mapping is provided', function () {
library.getSearchSchemes([], mopidy)
expect($(selectID).children(':eq(3)')).to.have.text('MockScheme3')
})
it('should blacklist services that should not be searched', function () {
library.getSearchSchemes(['mockScheme2'], mopidy)
assert.equal($(selectID).children().length, schemesArray.length)
expect($(selectID).children()).not.to.contain('mockScheme2')
})
})
})