require '../../../../spec_helper'

describe "Freakset.Actor.Guard", ->

  beforeEach ->
    @Guard = Freakset.Actor.Guard

    @freakset = {
      finish: jasmine.createSpy(),
      modifyStack: jasmine.createSpy()
    }


  describe '#build', ->

    it 'should attach the actor definition to the stack', ->
      fn = ->
      @Guard.build @freakset, "spec:guard", fn
      expect(@freakset.modifyStack).toHaveBeenCalled()


  describe '#run', ->

   it 'should run the actors callback', ->
     fn = jasmine.createSpy()
     @Guard.run(@freakset, { type: "guard", fn: fn })
     expect(fn).toHaveBeenCalledWith(@freakset)

   it 'should #finish the current Freakset if the callback return false', ->
     fn = -> ( false )
     @Guard.run(@freakset, { type: "guard", fn: fn })
     expect(@freakset.finish).toHaveBeenCalled()
