describe "Bootstrap Switch:", ->
beforeEach ->
$.support.transition = false
$.fx.off = true
afterEach ->
$(".#{$.fn.bootstrapSwitch.defaults.baseClass}").bootstrapSwitch "destroy"
createCheckbox = ->
$("<input>",
type: "checkbox"
class: "switch"
).appendTo "body"
createRadio = ->
$("<input>",
type: "radio"
name: "name"
class: "switch"
).appendTo "body"
getOptions = ($element) ->
$element.data("bootstrap-switch").options
it "should set the default options as element options, except state", ->
$switch = createCheckbox().prop("checked", true).bootstrapSwitch()
expect(getOptions($switch)).toEqual $.fn.bootstrapSwitch.defaults
it "should override default options with initialization ones", ->
$switch = createCheckbox().prop("checked", false).bootstrapSwitch()
$switch2 = createCheckbox().bootstrapSwitch state: false
expect(getOptions($switch).state).toBe false
expect(getOptions($switch2).state).toBe false
it "should something", ->
eventDoc = eventElement = 0
$switch = createCheckbox().bootstrapSwitch()
$(document).on "switchChange.bootstrapSwitch", ":checkbox", (event, state) ->
eventDoc++
$(":checkbox").on "switchChange.bootstrapSwitch", (event, state) ->
eventElement++
$switch.click()
expect(eventElement).toEqual eventDoc
expect(eventElement).toEqual 1
describe "The Checkbox Bootstrap Switch", ->
it "should conserve its state if onSwitchChange returns false", ->
$switch = createCheckbox().bootstrapSwitch
onSwitchChange:(e, s) ->
expect(s).toEqual true
false
$indeterminateSwitch = createCheckbox().data("indeterminate", true).bootstrapSwitch
onSwitchChange:(e, s) ->
expect(s).toEqual true
false
$switch.click()
$indeterminateSwitch.click()
expect($switch.bootstrapSwitch('state')).toEqual false
expect($indeterminateSwitch.bootstrapSwitch('state')).toEqual false
it "should change its state if onSwitchChange not returns false", ->
$switch = createCheckbox().bootstrapSwitch
onSwitchChange:(e, s) -> expect(s).toEqual true
$switch.click()
expect($switch.bootstrapSwitch('state')).toEqual true
describe "The Radio Bootstrap Switch", ->
it "should conserve its state if onSwitchChange returns false", ->
$radio1 = createRadio().prop("checked", true)
$radio2 = createRadio().prop("checked", false)
$radio3 = createRadio().prop("checked", false)
$('[name="name"]').bootstrapSwitch
onSwitchChange:(e, s) ->
expect(s).toEqual true
false
$radio2.click()
expect($radio1.bootstrapSwitch('state')).toEqual true
expect($radio2.bootstrapSwitch('state')).toEqual false
expect($radio3.bootstrapSwitch('state')).toEqual false
it "should change its state if onSwitchChange not returns false", ->
$radio1 = createRadio().prop("checked", true)
$radio2 = createRadio().prop("checked", false)
$radio3 = createRadio().prop("checked", false)
$('[name="name"]').bootstrapSwitch
onSwitchChange:(e, s) -> expect(s).toEqual true
$radio2.click()
expect($radio1.bootstrapSwitch('state')).toEqual false
expect($radio2.bootstrapSwitch('state')).toEqual true
expect($radio3.bootstrapSwitch('state')).toEqual false
|