diff --git a/config/karma.conf.js b/config/karma.conf.js index 312a8a6..9fa12c0 100644 --- a/config/karma.conf.js +++ b/config/karma.conf.js @@ -4,18 +4,22 @@ module.exports = function(config){ files : [ 'test/artifacts/**/*.js', - 'test/lib/mock-ajax.js', + 'test/lib/**/*.js', 'test/unit/**/*.js', - 'test/lib/jquery-1.11.0.min.js', 'js/sound/SoundDecoder.js', 'js/sound/**/*.js', 'js/util/**/*.js', - 'js/**/*.js' + 'js/**/*.js', + 'node_modules/jasmine-jquery/lib/jasmine-jquery.js' ], exclude : [ ], + preprocessors: { + '*.html': ['html2js'] + }, + autoWatch : true, frameworks: ['jasmine'], @@ -23,15 +27,10 @@ module.exports = function(config){ browsers : ['Chrome'], plugins : [ - 'karma-junit-reporter', + 'karma-jasmine', + 'jasmine-jquery', + 'karma-html2js-preprocessor', 'karma-chrome-launcher', - 'karma-firefox-launcher', - 'karma-jasmine' - ], - - junitReporter : { - outputFile: 'test_out/unit.xml', - suite: 'unit' - } - + 'karma-firefox-launcher' + ] })} diff --git a/package.json b/package.json index 732b5b2..e746327 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,8 @@ "description": "HTML 5 based Scratch project player", "repository": "https://github.com/LLK/scratch-html5", "devDependencies": { - "phantomjs" : "~1.9", - "karma" : "~0.10", - "karma-junit-reporter" : "~0.1", - "karma-jasmine" : "~0.1", - "karma-ng-scenario" : "~0.1", - "jquery" : "~1.11.0" + "karma" : "~0.10", + "jasmine-jquery" : "1.3.3", + "karma-html2js-preprocessor" : "~0.1.0" } } diff --git a/test/unit/scratchSpec.js b/test/unit/scratchSpec.js index 29db9cc..0f35ca2 100644 --- a/test/unit/scratchSpec.js +++ b/test/unit/scratchSpec.js @@ -1,25 +1,63 @@ -'use strict'; - /* jasmine specs for Scratch.js go here */ -describe('Scratch', function(){ - var getScript, request, scratch; - var uri = "http://getScript.example.com"; - var callBack = jasmine.createSpy('onSuccess'); - var testResponseText = 'This is a script'; +describe ('Scratch', function() { + describe('Scratch - Load Project', function(){ + var getScript, request, scratch; + var uri = "http://getScript.example.com"; + var callBack = jasmine.createSpy('onSuccess'); + var testResponseText = 'This is a script'; - var TestResponses = { status: 200, responseText: returnData}; + var TestResponses = { status: 200, responseText: returnData}; - beforeEach(function() { - jasmine.Ajax.useMock(); - scratch = Scratch; - scratch(project_id); - request = mostRecentAjaxRequest(); - request.promise(TestResponses, callBack); - }); + beforeEach(function() { + jasmine.Ajax.useMock(); + scratch = Scratch; + scratch(project_id); + request = mostRecentAjaxRequest(); + request.promise(TestResponses, callBack); + }); - it('should call the internalapi project', function() { - expect(request.url).toBe("proxy.php?resource=internalapi/project/" + project_id + "/get/"); - expect(callBack).toHaveBeenCalled(); - }); + it('should call the internalapi project', function() { + expect(request.url).toBe("proxy.php?resource=internalapi/project/" + project_id + "/get/"); + expect(callBack).toHaveBeenCalled(); + }); + }); + + describe('Scratch - Click Green Flag', function(){ + beforeEach(function() { + setFixtures('<button id=trigger-green-flag tabindex=2></button><div id="overlay"></div>'); + scratch = Scratch; + scratch(project_id); + }); + + it('should not click on the green flag if the project is loading', function() { + runtime.projectLoaded = false; + spyOn(runtime, 'greenFlag'); + $('#trigger-green-flag').click(); + expect(runtime.greenFlag).not.toHaveBeenCalled(); + expect($('#overlay').css('display')).toBe('block'); + }); + + it('should click on the green flag if the project is loaded', function() { + runtime.projectLoaded = true; + spyOn(runtime, 'greenFlag'); + $('#trigger-green-flag').click(); + expect(runtime.greenFlag).toHaveBeenCalled(); + expect($('#overlay').css('display')).toBe('none'); + }); + }); + + describe('Scratch - Click Stop', function(){ + beforeEach(function() { + setFixtures('<button id=trigger-stop tabindex=3></button>'); + scratch = Scratch; + scratch(project_id); + }); + + it('should not click on the green flag if the project is loading', function() { + spyOn(runtime, 'stopAll'); + $('#trigger-stop').click(); + expect(runtime.stopAll).toHaveBeenCalled(); + }); + }); });