raty-js
Version:
Raty - A Star Rating Plugin
126 lines (103 loc) • 3.05 kB
JavaScript
describe('#fn_cancel', function() {
beforeEach(function() {
$.raty.path = '../lib/images';
this.el = Helper.create('#el');
});
afterEach(function() {
Helper.clear();
});
describe('with :readOnly', function() {
it ('does turns the stars off', function() {
// given
this.el.raty({ readOnly: true, score: 5 });
// when
this.el.data('raty').cancel();
// then
expect(this.el.children('img')).toHaveAttr('src', '../lib/images/star-on.png');
});
it ('does not remove the score input value', function() {
// given
this.el.raty({ readOnly: true, score: 5 });
// when
this.el.data('raty').cancel();
// then
expect(this.el.children('input')).toHaveValue('5');
});
});
context('with click trigger', function() {
context('as *false', function() {
it ('does not triggers click callback', function() {
// given
this.el.raty({
score: 1,
click: function() {
this.clicked = true;
}
});
// when
this.el.data('raty').cancel(false);
// then
expect(this.el[0].clicked).toBeFalsy();
});
context('with :target', function() {
beforeEach(function() {
this.target = Helper.create('#target');
});
context('and :targetKeep', function() {
context('as *true', function() {
it ('sets the :targetText on target', function() {
// given
this.el.raty({
cancel : true,
target : '#target',
targetKeep : true,
targetText : 'targetText'
});
// when
this.el.data('raty').cancel();
// then
expect(this.target.text()).toEqual('targetText');
});
});
});
});
});
context('as *true', function() {
it ('triggers the :click callback', function() {
// given
this.el.raty({
score: 1,
click: function() {
this.clicked = true;
}
});
// when
this.el.data('raty').cancel(true);
// then
expect(this.el[0].clicked).toBeTruthy();
});
context('with :target', function() {
beforeEach(function() {
this.target = Helper.create('#target');
});
context('and :targetKeep', function() {
context('as *true', function() {
it ('sets the :targetText on target', function() {
// given
this.el.raty({
cancel : true,
target : '#target',
targetKeep : true,
targetText : 'targetText'
});
// when
this.el.data('raty').cancel(true);
// then
expect(this.target.text()).toEqual('targetText');
});
});
});
});
});
});
});