Skip to content

Commit

Permalink
Fix game spec
Browse files Browse the repository at this point in the history
  • Loading branch information
Valtteri Virtanen committed Aug 5, 2013
1 parent 7155831 commit 572f43a
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 86 deletions.
4 changes: 2 additions & 2 deletions client/app/scripts/game.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ class Game
@players.push(player)

removePlayer: (playerId) ->
@game.players = _.filter @players, (p) -> p.id != playerId
@game.renderMap()
@players = _.filter @players, (p) -> p.id != playerId
@renderMap()

playerStateChanged: (newData) ->
player = _.find(@players, (p) -> p.id == newData.id)
Expand Down
117 changes: 33 additions & 84 deletions client/test/spec/game-spec.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,14 @@ Bacon= require('baconjs')
Game = require('../scripts/game')
Player = require('../scripts/player')
Rocket = require('../scripts/rocket')
io = require('socket.io-client')

'use strict'
describe 'Game', ->
beforeEach ->
mockSocket =
on: ->
emit: ->
socket:
sessionid: 'player-1'
@connectStub = sinon.stub(io, 'connect', -> mockSocket)
@requestAnimStub = sinon.stub(Game.prototype, 'requestAnimationFrame')
@game = new Game()

afterEach ->
@connectStub.restore()
@requestAnimStub.restore()

describe 'After initialization', ->
Expand All @@ -34,107 +26,64 @@ describe 'Game', ->
@game.start()
expect(@requestAnimStub.called).to.be.true

it 'should connect to web socket server', ->
expect(@connectStub.called).to.be.true

describe 'Got socket event', ->
it 'should add players from game-state event', ->
state =
data:
[
{
type: 'player'
state:
id: 'player-1'
x: '5'
y: '6'
}
]
@game.gotGameState(state)
expect(@game.players.length).to.be.equals(1)

it 'should update map from game-state event', ->
state =
data:
[
{
type: 'map'
state: [{x: 0, y: 0, wall: 1}]
}
]
@game.gotGameState(state)
describe 'Change game state', ->
it 'should set new map', ->
@game.setNewMap([{x: 0, y: 0, wall: 1}])
expect(@game.map).to.be.not.undefined

it 'should update map from map event', ->
@game.updateMap([{x: 0, y: 0, wall: 1}])
expect(@game.map).to.be.not.undefined

it 'should add new player from new-player event', ->
it 'should add new player', ->
@game.addNewPlayer
data:
id: 'player1'
x: 1
y: 1

id: 'player1'
x: 1
y: 1
expect(@game.players.length).to.be.equals(1)

it 'should not add player from new-player event if player exists', ->
it 'should not add player from if player exists', ->
@game.players.push(new Player('player', x: 1, y: 1))
expect(@game.players.length).to.be.equals(1)
@game.addNewPlayer
data:
id: 'player'
x: 1
y: 1
id: 'player'
x: 1
y: 1
expect(@game.players.length).to.be.equals(1)

it 'should delete player from player-leaving event', ->
it 'should remove player', ->
@game.players.push(new Player('player', x: 1, y: 1))
expect(@game.players.length).to.be.equals(1)
@game.playerLeaving
data: 'player'
@game.removePlayer 'player'
expect(@game.players.length).to.be.equals(0)


it 'should change player state from player-state-changed event', ->
it 'should change player state', ->
@game.players.push(new Player 'player', 100, 100)
@game.playerStateChanged
data:
id: 'player'
x: 99
y: 101
id: 'player'
x: 99
y: 101
expect(@game.players[0].newX).to.be.equals(99)
expect(@game.players[0].newY).to.be.equals(101)

it 'should add rocket as an item when receiving moving events from unknown rocket', ->
@game.rocketMoved
data:
direction: 'down'
id: 0
shooter: 'shooter-1'
x: 2
y: 5
it 'should add rocket as an item if moving unknown rocket', ->
@game.moveRocket
direction: 'down'
id: 0
shooter: 'shooter-1'
x: 2
y: 5
expect(@game.items.length).to.be.equals(1)

it 'should move existing rocket when receiving move event from known rocket', ->
it 'should move existing rocket', ->
@game.items.push new Rocket(0, 5, 5, 'shooter-1', 'right')
@game.rocketMoved
data:
direction: 'right'
id: 0
shooter: 'shooter-1'
x: 6
y: 5
@game.moveRocket
direction: 'right'
id: 0
shooter: 'shooter-1'
x: 6
y: 5
expect(@game.items.length).to.be.equals(1)
expect(@game.items[0].newX).to.be.equals(6)

it 'should destroy existing rocket when receiving destroy event from rocket', ->
it 'should remove rocket', ->
@game.items.push new Rocket(0, 5, 5, 'shooter-1', 'right')
@game.rocketDestroyed
data:
shooter: 'shooter-1'
id: 0
x: 5
y: 5
direction: 'up'
@game.removeRocket 0
expect(@game.items.length).to.be.equals(0)

0 comments on commit 572f43a

Please sign in to comment.