quake-live-api
Version:
Quake Live API library
110 lines (86 loc) • 3.02 kB
text/coffeescript
# calculatorSpec.coffee
fs = require 'fs'
{Match} = require '../src/quake_live_api'
jasmine.Matchers.prototype.toBeInstanceOf = (klass) ->
this.actual instanceof klass
loadFixture = (name) ->
JSON.parse fs.readFileSync("spec/fixtures/#{name}.json")
describe 'Match', ->
it 'should be initialized properly from json object', ->
match_data =
"g_customSettings": "0",
"g_instagib": 0,
"g_needpass": 0,
"game_type": 4,
"host_address": "76.74.236.91:27068",
"host_name": "CA",
"location_id": 25,
"map": "hiddenfortress",
"max_clients": 16,
"num_clients": 9,
"num_players": 9,
"premium": false,
"public_id": 688811,
"ranked": 1,
"ruleset": "1",
"skillDelta": 1,
"teamsize": 5
match = new Match(match_data)
expect(match).toBeDefined()
expect(match.joinUrl()).toBe "http://www.quakelive.com/#!join/688811"
match_str = "#{match}"
expect(match_str).toBeDefined()
expect(match_str).toContain 16
expect(match_str).toContain 9
it 'should be initialized properly json with payload of multiple matches', ->
fixture = loadFixture("match_list")
matches = Match.fromMatchList fixture
expect(matches.length).toBeGreaterThan 5
for match in matches
expect(match).toBeInstanceOf Match
it 'should be initialized properly from json with details payload', ->
fixture = loadFixture("match_details")
numPlayers = 10
match = new Match (fixture)
expect(match).toBeDefined()
expect(match.joinUrl()).toBe "http://www.quakelive.com/#!join/688917"
match_str = "#{match}"
expect(match_str).toContain 16
expect(match_str).toContain numPlayers
expect(match.players).toBeDefined()
expect(match.players.length).toBe numPlayers
expect(match.players).toContain "darvin_s_k_2"
it 'should fetch all matches from quake live server', ->
matches = null
Match.fetch({}, (fetchedMatches) ->
matches = fetchedMatches
)
waitsFor ->
matches
runs ->
expect(matches).toBeDefined()
expect(matches.length).toBeGreaterThan 3
for match in matches
expect(match).toBeInstanceOf Match
it 'should not fetch matches from quake live server if non-existing player specified', ->
matches = null
Match.fetch({"players":["Some_strange_user"]}, (fetchedMatches) ->
matches = fetchedMatches
)
waitsFor ->
matches
runs ->
expect(matches).toBeDefined()
expect(matches.length).toBe 0
xit 'should fetch match from quake live server if im online', ->
matches = null
Match.fetch({"players":["darvin_S_K"]}, (fetchedMatches) ->
matches = fetchedMatches
)
waitsFor ->
matches
runs ->
expect(matches).toBeDefined()
expect(matches.length).toBe 1
expect(matches[0]).toBeInstanceOf Match
console.log matches[0].toString()