Skip to content

Commit d8f1b8e

Browse files
author
Josh Lory
authored
Merge pull request #13 from code-dot-org/unit-test-get-nectar
Unit test: get nectar
2 parents 729eef6 + 4e5ec0b commit d8f1b8e

File tree

3 files changed

+40
-37
lines changed

3 files changed

+40
-37
lines changed

src/bee.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,12 @@ const HONEY_SOUND = 'honey';
1313
const NECTAR_SOUND = 'nectar';
1414

1515
module.exports = class Bee extends Gatherer {
16-
constructor(maze, config) {
16+
constructor(maze, config = {}) {
1717
super(maze, config);
18+
const {level} = config;
1819

19-
this.defaultFlowerColor_ = (config.level.flowerType === 'redWithNectar' ?
20-
'red' : 'purple');
21-
if (this.defaultFlowerColor_ === 'purple' &&
22-
config.level.flowerType !== 'purpleNectarHidden') {
23-
throw new Error(`bad flowerType for Bee: ${config.level.flowerType}`);
24-
}
20+
this.defaultFlowerColor_ = level && level.flowerType === 'redWithNectar' ?
21+
'red' : 'purple';
2522

2623
// at each location, tracks whether user checked to see if it was a flower or
2724
// honeycomb using an if block

src/subtype.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,12 @@ const TILE_SHAPES = {
3434
const RANDOM_TILE_RATE = 0.2;
3535

3636
module.exports = class Subtype extends EventEmitter {
37-
constructor(maze, config) {
37+
constructor(maze, {skin, level} = {}) {
3838
super();
3939

4040
this.maze_ = maze;
41-
this.skin_ = config.skin;
42-
this.level_ = config.level;
43-
this.startDirection = config.level.startDirection;
41+
this.skin_ = skin;
42+
this.startDirection = level ? level.startDirection : 0;
4443
}
4544

4645
/**

test/unit/bee.test.js

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
/* global jest, describe, it, expect */
2+
13
import Bee from '../../src/bee';
2-
import BeeCell from '../../src/beeCell';
4+
import BeeCell, {FeatureType} from '../../src/beeCell';
35
import MazeMap from '../../src/mazeMap';
46

5-
var baseLevel = {
7+
const baseLevel = {
68
honeyGoal: 1,
79
map: [
810
[0]
@@ -15,30 +17,6 @@ var baseLevel = {
1517
};
1618

1719
describe("Bee", function () {
18-
it("fails if no flowerType", function () {
19-
var maze = {};
20-
var config = {
21-
level: baseLevel
22-
};
23-
delete config.level.flowerType;
24-
expect(() => {
25-
new Bee(maze, config);
26-
}).toThrowError(/bad flowerType for Bee/);
27-
});
28-
29-
30-
it("fails if invalid flowerType", function () {
31-
var maze = {};
32-
var config = {
33-
level: Object.assign(baseLevel, {
34-
flowerType: 'invalid'
35-
})
36-
};
37-
expect(() => {
38-
new Bee(maze, config);
39-
}).toThrowError(/bad flowerType for Bee/);
40-
});
41-
4220
describe("isRedFlower", function () {
4321
/**
4422
* Shim a 1x1 maze with the given values and validate that we get the
@@ -77,4 +55,33 @@ describe("Bee", function () {
7755
validate('purpleNectarHidden', 'FC', 1, false, 'overriden cloud');
7856
});
7957
});
58+
59+
describe('getting nectar', () => {
60+
let bee;
61+
62+
it('builds the map', () => {
63+
const map = new MazeMap([
64+
[new BeeCell(1, FeatureType.FLOWER, 2)],
65+
]);
66+
67+
bee = new Bee({
68+
map,
69+
pegmanX: 0,
70+
pegmanY: 0,
71+
});
72+
73+
const flowerEmptySpy = jest.fn();
74+
bee.on('flowerEmpty', flowerEmptySpy);
75+
bee.reset();
76+
expect(bee.getCell(0, 0).isFlower()).toEqual(true);
77+
78+
// Can get nectar twice.
79+
expect(bee.tryGetNectar()).toEqual(true);
80+
expect(bee.tryGetNectar()).toEqual(true);
81+
82+
// Getting nectar again returns false, and emits a "flowerEmpty" event.
83+
expect(bee.tryGetNectar()).toEqual(false);
84+
expect(flowerEmptySpy).toHaveBeenCalledTimes(1);
85+
})
86+
});
8087
});

0 commit comments

Comments
 (0)