36 lines
1.6 KiB
CoffeeScript
36 lines
1.6 KiB
CoffeeScript
require '../helpers'
|
|
|
|
{Ability} = require('../../server/bw/data/abilities')
|
|
{Item} = require('../../server/bw/data/items')
|
|
{Attachment, Status} = require('../../server/bw/attachment')
|
|
Priorities = require('../../server/bw/priorities')
|
|
Query = require('../../server/bw/queries')
|
|
shared = require('../shared')
|
|
|
|
describe "BW Priorities:", ->
|
|
ensureAttachments = (arrayOfAttachments, eventName) ->
|
|
attachments = (a for a in arrayOfAttachments when a.prototype[eventName]? && a not in Priorities[eventName])
|
|
attachments = attachments.map((a) -> a.displayName || a::name)
|
|
if attachments.length > 0
|
|
throw new Error("#{attachments.join(', ')} must specify their #{eventName} priority.")
|
|
|
|
it "ensures all relevant attachments have their specified event names", ->
|
|
for eventName of Priorities
|
|
ensureAttachments((klass for name, klass of Attachment), eventName)
|
|
ensureAttachments((klass for name, klass of Item), eventName)
|
|
ensureAttachments((klass for name, klass of Ability), eventName)
|
|
|
|
describe "Queries", ->
|
|
it "execute priorities in order", ->
|
|
shared.create.call(this)
|
|
@battle.attach(Attachment.TrickRoom)
|
|
@team2.attach(Attachment.Reflect)
|
|
@p1.attach(Attachment.Ingrain)
|
|
spy1 = @sandbox.spy(Attachment.TrickRoom.prototype, 'endTurn')
|
|
spy2 = @sandbox.spy(Attachment.Reflect.prototype, 'endTurn')
|
|
spy3 = @sandbox.spy(Attachment.Ingrain.prototype, 'endTurn')
|
|
|
|
Query("endTurn", @battle.getAllAttachments())
|
|
spy3.calledBefore(spy2).should.be.true
|
|
spy2.calledBefore(spy1).should.be.true
|