UNPKG

3.1 kBPlain TextView Raw
1_ = require 'underscore'
2N = require '../'
3request = require 'superagent'
4async = require 'async'
5
6Weapons = N 'weapon', N.Route.MultiRoute
7
8Weapons.Field \hitPoints \int
9
10
11class Units extends N 'unit' abstract: true
12
13 Attack: @_WrapPromise (targetId, done) ->
14 @targetType.Fetch targetId
15 .then ~>
16 it.life -= @Weapon.hitPoints
17 it.Save done
18 .fail done
19
20 LevelUp: @_WrapPromise (done) ->
21 @level++
22 @Save done
23
24Units.Field \level \int
25 ..Field \life \int
26 ..HasOne Weapons
27
28Units.Init()
29
30class UnitRoute extends N.Route.MultiRoute
31
32 Config: ->
33 super()
34
35 @Put '/:id/levelUp' -> it.instance.LevelUp!
36
37 @Put '/:id/attack/:targetId' ~> it.instance.Attack +it.params.targetId
38
39Players = Units.Extend 'player', UnitRoute
40Monsters = Units.Extend 'monster', UnitRoute
41
42/*
43 Here stops the exemple,
44 And Here start the tests.
45*/
46
47# Hack for keep track of weapon
48weaponId = []
49
50async.series do
51 * addWeapon: (done) ->
52 N.client.Post '/api/1/weapons', {hitPoints: 2}, (err, {body}) ->
53 weaponId[*] = body.id
54 done err, body
55
56 addWeapon2: (done) ->
57 N.client.Post '/api/1/weapons', {hitPoints: 1}, (err, {body}) ->
58 weaponId[*] = body.id
59 done err, body
60
61 addPlayer: (done) ->
62 N.client.Post '/api/1/players', {level: 1, life: 100, weaponId: weaponId.0}, (err, {body}) -> done err, body
63
64 testGet: (done) ->
65 N.client.Get '/api/1/players', (err, {body}) -> done err, body
66
67 levelUp: (done) ->
68 N.client.Put '/api/1/players/1/levelUp', {}, (err, {body}) -> done err, body
69
70 levelUp2: (done) ->
71 N.client.Put '/api/1/players/1/levelUp', {}, (err, {body}) -> done err, body
72
73 testGetMonster: (done) ->
74 N.client.Get '/api/1/monsters', (err, {body}) -> done err, body
75 addMonster: (done) ->
76 N.client.Post '/api/1/monsters', {level: 1, life: 20, weaponId: weaponId.1}, (err, {body}) -> done err, body
77
78 testGetMonster2: (done) ->
79 N.client.Get '/api/1/monsters', (err, {body}) -> done err, body
80
81 levelUpMonster: (done) ->
82 N.client.Put '/api/1/monsters/1/levelUp', {}, (err, {body}) -> done err, body
83
84 levelUpMonster2: (done) ->
85 N.client.Put '/api/1/monsters/1/levelUp', {}, (err, {body}) -> done err, body
86
87 playerAttack: (done) ->
88 N.client.Put '/api/1/players/1/attack/1', {}, (err, {body}) -> done err, body
89
90 monsterAttack: (done) ->
91 N.client.Put '/api/1/monsters/1/attack/1', {}, (err, {body}) -> done err, body
92
93 monsterAttack1: (done) ->
94 N.client.Put '/api/1/monsters/1/attack/1', {}, (err, {body}) -> done err, body
95
96 monsterAttack2: (done) ->
97 N.client.Put '/api/1/monsters/1/attack/1', {}, (err, {body}) -> done err, body
98
99 monsterAttack3: (done) ->
100 N.client.Put '/api/1/monsters/1/attack/1', {}, (err, {body}) -> done err, body
101
102 monsterAttack4: (done) ->
103 N.client.Put '/api/1/monsters/1/attack/1', {}, (err, {body}) -> done err, body
104
105 , (err, results) ->
106 util = require 'util'
107 util.debug util.inspect err, {depth: null}
108 util.debug util.inspect results, {depth: null}