forked from newagebegins/BattleCity
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPlayerTankFactorySpec.js
35 lines (31 loc) · 1.37 KB
/
PlayerTankFactorySpec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
describe("PlayerTankFactory", function () {
it("should subscribe", function () {
var eventManager = new EventManager();
spyOn(eventManager, 'addSubscriber');
var factory = new PlayerTankFactory(eventManager);
expect(eventManager.addSubscriber).toHaveBeenCalledWith(factory, [TankExplosion.Event.DESTROYED]);
});
describe("#notify", function () {
it("TankExplosion.Event.DESTROYED", function () {
var eventManager = new EventManager();
var factory = new PlayerTankFactory(eventManager);
spyOn(factory, 'create');
var tank = new Tank(eventManager);
var explosion = new TankExplosion(eventManager, tank);
factory.notify({'name': TankExplosion.Event.DESTROYED, 'explosion': explosion});
expect(factory.create).toHaveBeenCalled();
});
});
it("#create", function () {
var eventManager = new EventManager();
spyOn(eventManager, 'fireEvent');
var factory = new PlayerTankFactory(eventManager);
factory.setAppearPosition(new Point(1,2));
var tank = new Tank(eventManager);
tank.setPosition(new Point(1,2));
tank.setState(new TankStateAppearing(tank));
var product = factory.create();
expect(product).toEqual(tank);
expect(eventManager.fireEvent).toHaveBeenCalledWith({'name': PlayerTankFactory.Event.PLAYER_TANK_CREATED, 'tank': tank});
});
});