2017-03-23 18:58:09 +00:00
|
|
|
module TS.SpaceTac.Specs {
|
|
|
|
describe("Shop", () => {
|
|
|
|
it("generates a stock", () => {
|
|
|
|
let shop = new Shop();
|
2017-05-10 15:29:10 +00:00
|
|
|
expect((<any>shop).stock.length).toBe(0);
|
|
|
|
expect(shop.getStock().length).toBeGreaterThan(20);
|
2017-03-23 18:58:09 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
it("buys and sells items", function () {
|
2017-05-10 15:29:10 +00:00
|
|
|
let shop = <any>new Shop();
|
2017-03-23 18:58:09 +00:00
|
|
|
let equ1 = new Equipment(SlotType.Shield, "shield");
|
2017-04-25 20:54:23 +00:00
|
|
|
equ1.price = 50;
|
2017-03-23 18:58:09 +00:00
|
|
|
let equ2 = new Equipment(SlotType.Hull, "hull");
|
2017-04-25 20:54:23 +00:00
|
|
|
equ2.price = 150;
|
2017-03-23 18:58:09 +00:00
|
|
|
shop.stock = [equ1, equ2];
|
|
|
|
let fleet = new Fleet();
|
|
|
|
fleet.credits = 1000;
|
|
|
|
spyOn(shop, "getPrice").and.returnValue(800);
|
|
|
|
|
|
|
|
let result = shop.sellToFleet(equ1, fleet);
|
|
|
|
expect(result).toBe(true);
|
|
|
|
expect(shop.stock).toEqual([equ2]);
|
|
|
|
expect(fleet.credits).toEqual(200);
|
|
|
|
result = shop.sellToFleet(equ2, fleet);
|
|
|
|
expect(result).toBe(false);
|
|
|
|
expect(shop.stock).toEqual([equ2]);
|
|
|
|
expect(fleet.credits).toEqual(200);
|
|
|
|
|
|
|
|
result = shop.buyFromFleet(equ1, fleet);
|
|
|
|
expect(result).toBe(true);
|
2017-04-25 20:54:23 +00:00
|
|
|
expect(shop.stock).toEqual([equ1, equ2]);
|
2017-03-23 18:58:09 +00:00
|
|
|
expect(fleet.credits).toEqual(1000);
|
|
|
|
});
|
2017-07-06 22:55:29 +00:00
|
|
|
|
|
|
|
it("generates secondary missions", function () {
|
|
|
|
let universe = new Universe();
|
|
|
|
universe.generate(4);
|
|
|
|
let start = universe.getStartLocation();
|
|
|
|
|
|
|
|
let shop = new Shop();
|
|
|
|
expect((<any>shop).missions.length).toBe(0);
|
|
|
|
|
|
|
|
let result = shop.getMissions(start, 4);
|
|
|
|
expect(result.length).toBe(4);
|
|
|
|
expect((<any>shop).missions.length).toBe(4);
|
|
|
|
|
|
|
|
let oresult = shop.getMissions(start, 4);
|
|
|
|
expect(oresult).toEqual(result);
|
|
|
|
|
|
|
|
result.forEach(mission => {
|
|
|
|
expect(mission.main).toBe(false);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
it("assigns missions to a fleet", function () {
|
|
|
|
let shop = new Shop();
|
|
|
|
let player = new Player();
|
|
|
|
let mission = new Mission(new Universe());
|
|
|
|
(<any>shop).missions = [mission];
|
|
|
|
|
|
|
|
expect(shop.getMissions(new StarLocation(), 1)).toEqual([mission]);
|
|
|
|
expect(player.missions.secondary).toEqual([]);
|
|
|
|
|
|
|
|
shop.acceptMission(mission, player);
|
|
|
|
|
|
|
|
expect((<any>shop).missions).toEqual([]);
|
|
|
|
expect(player.missions.secondary).toEqual([mission]);
|
|
|
|
expect(mission.fleet).toBe(player.fleet);
|
|
|
|
});
|
2017-03-23 18:58:09 +00:00
|
|
|
});
|
|
|
|
}
|