Actions

should let me add 2 to my roll
player.coins += player.landmarks['Harbor'].cost;
player.buyLandmark('Harbor');
return player.actions.add2ToRoll.call(player, [5, 6]).should.eventually.equal(true);
should not let me add 2 to my roll
return player.actions.add2ToRoll.call(player, [5, 6]).should.eventually.equal(false);
should let me roll again
player.landmarks['Radio Tower'].activate();
return player.actions.rollAgain.call(player).should.eventually.equal(true);
should not let me roll again
player.coins += player.landmarks['Harbor'].cost;
player.buyLandmark('Harbor');
return player.actions.rollAgain.call(player).should.eventually.equal(false);
should let me roll two dice
player.landmarks['Train Station'].activated = true;
return player.actions.roll2Dice.call(player).should.eventually.equal(true);
should not let me roll two dice
player.buyLandmark('City Hall');
return player.actions.roll2Dice.call(player).should.eventually.equal(false);
should let me repeat my turn
player.coins += player.landmarks['Amusement Park'].cost;
player.buyLandmark('Amusement Park');
return player.actions.turnAgain.call(player, [1, 1]).should.eventually.equal(true);
should not let me repeat my turn
player.coins += player.landmarks['Amusement Park'].cost;
player.buyLandmark('Amusement Park');
return player.actions.turnAgain.call(player, [1, 2]).should.eventually.equal(false);

Card

should have the correct name
var card = new _WheatField2.default();
card.name.should.equal('Wheat Field');
done();
should activate the card
var hit = false;
var player = new _Player2.default({});
var card = new _Card.Card({
	color: 'green',
	activation: 4,
	owner: player
});
card.activate = function () {
	hit = true;
};
card.rolled(1, player);
hit.should.be.false();
card.rolled(4);
hit.should.be.false();
card.rolled(4, player);
hit.should.be.true();
done();
should have correct stats
var stats = {
	"icon": "wheat",
	"cost": 1,
	"color": "purple",
	"activation": [1, 5],
	"description": "Get 1 coin from bank"
};
var card = new _Card.Card(stats);
card.icon.key.should.equal(stats.icon.toUpperCase());
card.color.key.should.equal(stats.color.toUpperCase());
card.cost.should.equal(stats.cost);
card.activation.should.equal(stats.activation);
card.description.should.equal(stats.description);
done();

Color

should have a color
var card1 = new _Card.Card({
	color: 'red'
});
var card2 = new _Card.Card({
	color: _Card.Color.RED
});
card1.color.should.equal(card2.color);
card2.color.key.should.equal('RED');
done();
should have a valid color
var createBadCard = function createBadCard() {
	new _Card.Card({
		color: 'magenta'
	});
};
createBadCard.should.throw(TypeError);
done();

Icon

should have a icon
var card1 = new _Card.Card({
	icon: 'gear'
});
var card2 = new _Card.Card({
	icon: _Card.Icon.GEAR
});
card1.icon.should.equal(card2.icon);
card1.icon.key.should.equal('GEAR');
done();
should have a valid icon
var createBadCard = function createBadCard() {
	new _Card.Card({
		color: 'dog'
	});
};
createBadCard.should.throw(TypeError);
done();

Deck

should create a deck with some cards
var deck = new _Deck2.default({
	"Wheat Field": 6
});
deck.cards.length.should.equal(6);
done();

Market

should make market with only 1 card
var deck = new _Deck2.default({
	"Wheat Field": 3,
	"Ranch": 3
}, 1);
deck.updateMarket().length.should.equal(1);
done();
should make market with 10 cards
var deck = new _Deck2.default({
	"Wheat Field": 5,
	"Ranch": 5
}, 3);
deck.updateMarket().length.should.equal(10);
done();

Game

should not start the game
var badGame = function badGame() {
	var game = new _Game2.default({});
	game.addPlayer(new _Player2.default({}));
	game.start();
};
badGame.should.throw(Error);
done();
should start the game
var goodGame = function goodGame() {
	var game = new _Game2.default({});
	game.addPlayer(new _Player2.default({}));
	game.addPlayer(new _Player2.default({}));
	game.start();
};
goodGame.should.not.throw(Error);
done();
should complete one turn
var game = new _Game2.default({});
game.addPlayer(new _Player2.default({}));
game.addPlayer(new _Player2.default({}));
game.start();
game.doTurn();
var prom = new Promise(function (resolve) {
	game.on('turn:done', resolve);
});
return prom.should.be.fulfilled();
1 false 2 true winner true
should announce me the winner
var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); });

Player

should not have the same reference to starting cards
var a = new _Player2.default({});
var b = new _Player2.default({});
a.coins.should.equal(b.coins);
a.cards.should.not.equal(b.cards);
done();