johnnyfreeman/revolver

View on GitHub
src/tests.coffee

Summary

Maintainability
Test Coverage
suite 'Instance Methods', ->
  
  # revolver instance
  slider = undefined
  originalSlider = undefined
  setup ->
    slider = new Revolver
      containerSelector: '#myslider'
      slidesSelector: '.slide'
    originalSlider = _.clone(slider)
  suiteTeardown ->
    slider = originalSlider = null

  
  # addSlide
  suite '#addSlide()', ->
    test 'adds one more to this.slides array', ->
      numSlides = slider.slides.length
      slider.addSlide document.createElement('div')
      assert.strictEqual slider.slides.length, numSlides + 1
    test 'recalculates this.numSlides correctly', ->
      slider.addSlide document.createElement('div')
      assert.strictEqual slider.numSlides, slider.slides.length
    test 'recalculates this.nextSlide correctly', ->
      nextSlide = (if slider.currentSlide is slider.lastSlide then 0 else slider.currentSlide + 1)
      slider.addSlide document.createElement('div')
      assert.strictEqual slider.nextSlide, nextSlide

  
  # changeStatus
  suite '#changeStatus()', ->
    test 'plays', ->
      slider.changeStatus 'playing'
      assert.strictEqual slider.status.playing, true
      assert.strictEqual slider.status.paused, false
      assert.strictEqual slider.status.stopped, false
    test 'pauses', ->
      slider.changeStatus 'paused'
      assert.strictEqual slider.status.playing, false
      assert.strictEqual slider.status.paused, true
      assert.strictEqual slider.status.stopped, false
    test 'stops', ->
      slider.changeStatus 'stopped'
      assert.strictEqual slider.status.playing, false
      assert.strictEqual slider.status.paused, false
      assert.strictEqual slider.status.stopped, true

  
  # pause
  suite '#pause()', ->
    test 'changes status to paused if playing or stopped', ->
      # from stopped
      slider.stop()
      slider.pause()
      assert.strictEqual slider.status.paused, true
      # from playing
      slider.play()
      slider.pause()
      assert.strictEqual slider.status.paused, true
    test 'this.intervalId is null', ->
      slider.pause()
      assert.strictEqual slider.intervalId, null

  
  # play
  suite '#play()', ->
    test 'changes status to playing if paused or stopped', ->
      # from stopped
      slider.stop()
      slider.play()
      assert.strictEqual slider.status.playing, true
      # from paused
      slider.pause()
      slider.play()
      assert.strictEqual slider.status.playing, true
    test 'this.intervalId isnt null', ->
      slider.play()
      assert.notStrictEqual slider.intervalId, null


  # reset
  suite '#reset()', ->
    test 'only sets this.nextSlide to 0 if this.currentSlide doesnt equal 0', ->
      slider.pause()
      slider.reset()
      assert.notStrictEqual slider.nextSlide, 0
      slider.goTo 1
      slider.reset()
      assert.strictEqual slider.nextSlide, 0

  
  # restart
  suite '#restart()', ->
    setup ->
      slider.restart()
    #    test('this.currentSlide equals 0', function () {
    #      assert.strictEqual(slider.currentSlide, 0);
    #    });
    test 'slider is playing', ->
      assert.strictEqual slider.status.playing, true
      assert.strictEqual slider.status.paused, false
      assert.strictEqual slider.status.stopped, false

  
  # setOptions
  suite '#setOptions()', ->
    test 'sets a new option', ->
      slider.setOptions foo: 'bar'
      assert.strictEqual slider.options.foo, 'bar'
    test 'overrides existing options', ->
      slider.setOptions slidesSelector: '.mySlides'
      assert.strictEqual slider.options.slidesSelector, '.mySlides'

  
  # stop
  suite '#stop()', ->
    test 'changes status to stopped if paused or playing', ->
      # from playing
      slider.play()
      slider.stop()
      assert.strictEqual slider.status.stopped, true
      # from paused
      slider.pause()
      slider.stop()
      assert.strictEqual slider.status.stopped, true
    test 'this.intervalId is null', ->
      slider.stop()
      assert.strictEqual slider.intervalId, null

  
  # stop
  suite '#goTo()', ->
    test 'does nothing if disabled', ->
      slider.goTo 0
      slider.disabled = true
      slider.goTo slider.lastSlide
      assert.strictEqual slider.currentSlide, 0
    test 'goes to intended slide', ->
      nextSlide = slider.nextSlide
      slider.goTo nextSlide
      assert.strictEqual slider.currentSlide, nextSlide


# Static Methods
suite 'Static Methods', ->
  
  # registerTranistion
  suite '#registerTransition()', ->
    handler = ->
    result = Revolver.registerTransition('test', handler)
    test 'saves the handler in the transitions namespace', ->
      assert.strictEqual Revolver.transitions.test, handler
    test 'returns the Revolver global object', ->
      assert.strictEqual result, Revolver
  
  # setSelectorEngine
  # suite '#setSelectorEngine()', ->
  #   new$ = ->
  #   old$ = Revolver.$
  #   Revolver.setSelectorEngine(new$)
  #   test 'saves the handler in the $ namespace', ->
  #     assert.strictEqual Revolver.$, new$
  #   Revolver.$ = old$