Testing Level Progression Management in learnGitBranching
This test suite validates the core functionality of the LevelStore component in the learnGitBranching application. It focuses on testing level sequence management, level completion tracking, and reset functionality within the application’s level progression system.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
pcottle/learngitbranching
__tests__/LevelStore.spec.js
var LevelActions = require('../src/js/actions/LevelActions');
var LevelStore = require('../src/js/stores/LevelStore');
describe('this store', function() {
it('has sequences and levels', function() {
var sequenceMap = LevelStore.getSequenceToLevels();
Object.keys(sequenceMap).forEach(function(levelSequence) {
expect(LevelStore.getSequences().indexOf(levelSequence) >= 0)
.toEqual(true);
sequenceMap[levelSequence].forEach(function(level) {
expect(LevelStore.getLevel(level.id)).toEqual(level);
}.bind(this));
}.bind(this));
});
it('can solve a level and then reset', function() {
var sequenceMap = LevelStore.getSequenceToLevels();
var firstLevel = sequenceMap[
Object.keys(sequenceMap)[0]
][0];
expect(LevelStore.isLevelSolved(firstLevel.id))
.toEqual(false);
LevelActions.setLevelSolved(firstLevel.id, false);
expect(LevelStore.isLevelSolved(firstLevel.id))
.toEqual(true);
LevelActions.resetLevelsSolved();
expect(LevelStore.isLevelSolved(firstLevel.id))
.toEqual(false);
});
it('can solve a level with best status and then reset', function() {
var sequenceMap = LevelStore.getSequenceToLevels();
var firstLevel = sequenceMap[
Object.keys(sequenceMap)[0]
][0];
expect(LevelStore.isLevelBest(firstLevel.id))
.toEqual(false);
LevelActions.setLevelSolved(firstLevel.id, true);
expect(LevelStore.isLevelBest(firstLevel.id))
.toEqual(true);
LevelActions.resetLevelsSolved();
expect(LevelStore.isLevelBest(firstLevel.id))
.toEqual(false);
});
});