Updating tests based on code review (WIP)
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/commit/6235f1c9 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/tree/6235f1c9 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/diff/6235f1c9 Branch: refs/heads/master Commit: 6235f1c971b625c9f27feff5fd38d9145ba85f5c Parents: 8051761 Author: Gord Tanner <[email protected]> Authored: Mon Nov 12 15:46:21 2012 -0500 Committer: Gord Tanner <[email protected]> Committed: Mon Nov 12 15:46:21 2012 -0500 ---------------------------------------------------------------------- lib/blackberry/plugin/webworks/accelerometer.js | 2 +- lib/blackberry/plugin/webworks/media.js | 2 +- test/blackberry/webworks/test.accelerometer.js | 71 ++-- test/blackberry/webworks/test.logger.js | 22 +- test/blackberry/webworks/test.media.js | 392 +++++++++--------- 5 files changed, 251 insertions(+), 238 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/6235f1c9/lib/blackberry/plugin/webworks/accelerometer.js ---------------------------------------------------------------------- diff --git a/lib/blackberry/plugin/webworks/accelerometer.js b/lib/blackberry/plugin/webworks/accelerometer.js index 90dc0e7..70142fa 100644 --- a/lib/blackberry/plugin/webworks/accelerometer.js +++ b/lib/blackberry/plugin/webworks/accelerometer.js @@ -38,6 +38,6 @@ module.exports = { }, stop: function (args, win, fail) { window.removeEventListener("devicemotion", callback); - return { "status" : cordova.callbackStatus.NO_RESULT, "message" : "WebWorks Is On It" }; + return { "status" : cordova.callbackStatus.OK, "message" : "removed" }; } }; http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/6235f1c9/lib/blackberry/plugin/webworks/media.js ---------------------------------------------------------------------- diff --git a/lib/blackberry/plugin/webworks/media.js b/lib/blackberry/plugin/webworks/media.js index 82404c5..c2ec671 100644 --- a/lib/blackberry/plugin/webworks/media.js +++ b/lib/blackberry/plugin/webworks/media.js @@ -105,7 +105,7 @@ module.exports = { return {"status" : 9, "message" : "Media Object id was not sent in arguments"}; } - var id = args[0], + var id = args[0], audio = audioObjects[id], result; http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/6235f1c9/test/blackberry/webworks/test.accelerometer.js ---------------------------------------------------------------------- diff --git a/test/blackberry/webworks/test.accelerometer.js b/test/blackberry/webworks/test.accelerometer.js index b315108..10af041 100644 --- a/test/blackberry/webworks/test.accelerometer.js +++ b/test/blackberry/webworks/test.accelerometer.js @@ -20,44 +20,65 @@ */ describe("accelerometer", function () { - var accelerometer = require('cordova/plugin/webworks/accelerometer'); + var accelerometer = require('cordova/plugin/webworks/accelerometer'), + cordova = require('cordova'); - describe("start", function() { - it("should start webworks watching the accelerometer", function() { - spyOn(window, "removeEventListener"); - spyOn(window, "addEventListener"); + beforeEach(function(){ + spyOn(window, "removeEventListener"); + spyOn(window, "addEventListener"); + }); - var win = jasmine.createSpy('win'), - fail = jasmine.createSpy('fail'), - args = {x:1,y:2,z:3}, - aStart = accelerometer.start(args, win, fail); + describe("start", function() { + it("returns no result", function () { + expect(accelerometer.start()).toEqual({ + status: cordova.callbackStatus.NO_RESULT, + message: "WebWorks Is On It" + }); + }); - expect(window.removeEventListener).toHaveBeenCalledWith("devicemotion", undefined); + it("removes the event listener", function () { + accelerometer.start(); + expect(window.removeEventListener).toHaveBeenCalledWith("devicemotion", jasmine.any(Function)); + }); + it("adds the event listener back", function () { + accelerometer.start(); expect(window.addEventListener).toHaveBeenCalledWith("devicemotion", jasmine.any(Function)); + }); - window.removeEventListener.reset(); - window.addEventListener.reset(); - - expect(aStart.status).toBe(0); - expect(aStart.message).toBe('WebWorks Is On It'); + it("grabs the motion information from the callback and calls success", function () { + var success = jasmine.createSpy("success"); + accelerometer.start({}, success); + window.addEventListener.mostRecentCall.args[1]({ + accelerationIncludingGravity: { + x: 1, + y: 2, + z: 3, + }, + timestamp: "around tea time" + }); + + expect(success).toHaveBeenCalledWith({ + x: 1, + y: 2, + z: 3, + timestamp: "around tea time" + }); }); }); describe("stop", function() { - it("should stop webworks from watching the accelerometer", function() { - spyOn(window, "removeEventListener"); - var aStop = accelerometer.stop(); + it("returns OK", function () { + expect(accelerometer.stop()).toEqual({ + status: cordova.callbackStatus.OK, + message: "removed" + }); + }); + it("removes the event listener", function () { + accelerometer.stop(); expect(window.removeEventListener).toHaveBeenCalledWith("devicemotion", jasmine.any(Function)); - - window.removeEventListener.reset(); - - expect(aStop.status).toBe(0); - expect(aStop.message).toBe('WebWorks Is On It'); - }); }); - }); http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/6235f1c9/test/blackberry/webworks/test.logger.js ---------------------------------------------------------------------- diff --git a/test/blackberry/webworks/test.logger.js b/test/blackberry/webworks/test.logger.js index 38ec7e2..9299211 100644 --- a/test/blackberry/webworks/test.logger.js +++ b/test/blackberry/webworks/test.logger.js @@ -22,15 +22,19 @@ describe("logger", function () { var logger = require('cordova/plugin/webworks/logger'); - describe("log", function() { - it("should post a console log", function() { - spyOn(console, "log"); - var l = logger.log("Yodalay-Yodalay-Yodalay-Hee-Hoo!"); - - expect(console.log).toHaveBeenCalledWith("Yodalay-Yodalay-Yodalay-Hee-Hoo!"); - expect(l.status).toBe(1); - expect(l.message).toBe('Message logged to console: Yodalay-Yodalay-Yodalay-Hee-Hoo!'); - }); + beforeEach(function () { + spyOn(console, "log"); + }); + + it("should post a console log", function() { + logger.log("Yodalay-Yodalay-Yodalay-Hee-Hoo!"); + expect(console.log).toHaveBeenCalledWith("Yodalay-Yodalay-Yodalay-Hee-Hoo!"); }); + it("returns ok", function () { + expect(logger.log('moo')).toEqual({ + status: cordova.callbackStatus.OK, + message: 'Message logged to console: moo' + }); + }); }); http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/6235f1c9/test/blackberry/webworks/test.media.js ---------------------------------------------------------------------- diff --git a/test/blackberry/webworks/test.media.js b/test/blackberry/webworks/test.media.js index ca35da8..ae2bacb 100644 --- a/test/blackberry/webworks/test.media.js +++ b/test/blackberry/webworks/test.media.js @@ -21,254 +21,242 @@ describe("media", function () { var media = require('cordova/plugin/webworks/media'), - m; - - beforeEach(function(){ - global.Audio = function(src){ - var funcs = { - play: function(){}, - pause: function(){}, - currentTime: 800, - duration: 2100 - } - return funcs; - } - }); - - afterEach(function(){ - delete global.Audio; - }); - - describe("create", function() { - it("should fail to create a media object", function() { - m = media.create({}); - expect(m.status).toBe(9); - expect(m.message).toBe('Media Object id was not sent in arguments'); - }); - - it("should fail to create a media object", function() { - m = media.create(9); - expect(m.status).toBe(9); - expect(m.message).toBe('Media Object id was not sent in arguments'); - }); - - it("should create a media object", function() { - m = media.create(["jammin", "tunes/wejammin.mp3"]); - expect(m.status).toBe(1); - expect(m.message).toBe('Audio object created'); + audio = { + play: jasmine.createSpy("play"), + pause: jasmine.createSpy("pause"), + currentTime: 800, + duration: 2100 + }; + + beforeEach(function(){ + audio.play.reset(); + audio.pause.reset(); + global.blackberry = { + media:{ + microphone:{ + record: jasmine.createSpy("blackberry.media.microphone.record") + } + } + }; + + global.Audio = jasmine.createSpy("Audio").andCallFake(function () { + return audio; }); }); - describe("startPlayingAudio", function(){ - it("should fail to find the media Object", function() { - m = media.startPlayingAudio({}); - expect(m.status).toBe(9); - expect(m.message).toBe('Media Object id was not sent in arguments'); - }); + afterEach(function(){ + delete global.Audio; + delete global.blackberry; + }); - it("should fail to find media Source ", function() { - m = media.startPlayingAudio(["jammin"]); - expect(m.status).toBe(9); - expect(m.message).toBe('Media source argument not found'); + function handlesNoArgs(func) { + it("should return an error message when no args provided", function() { + expect(func({})).toEqual({ + status: 9, + message: 'Media Object id was not sent in arguments' + }); }); - - it("should create a media object ", function() { - m = media.startPlayingAudio(["jammin", "tunes/wejammin.mp3"]); - expect(m.status).toBe(1); - expect(m.message).toBe('Audio play started'); + } + + function handlesNotFound(func) { + it("returns error if it can't find audio object", function () { + expect(func(["FreeBird"])).toEqual({ + status: 2, + message: 'Audio Object has not been initialized' + }); }); - }); + } + + describe("create", function() { - describe("stopPlayingAudio", function(){ - it("should fail to find the media Object", function() { - m = media.stopPlayingAudio(0); - expect(m.status).toBe(9); - expect(m.message).toBe('Media Object id was not sent in arguments'); - }); + handlesNoArgs(media.create); - it("should stop the audio playback ", function() { - m = media.stopPlayingAudio(["jammin", "tunes/wejammin.mp3"]); - expect(m.status).toBe(1); - expect(m.message).toBe('Audio play stopped'); + it("should create an audio object for the src", function () { + media.create(["jammin", "tunes/wejammin.mp3"]); + expect(Audio).toHaveBeenCalledWith("tunes/wejammin.mp3"); }); - it("should find that the Audio Object failed to initialze", function() { - global.audio = undefined; - m = media.stopPlayingAudio(["jammin"]); - expect(m.status).toBe(2); - expect(m.message).toBe('Audio Object has not been initialized'); - delete global.audio; + it("returns success", function() { + expect(media.create(["jammin", "tunes/wejammin.mp3"])).toEqual({ + status: 1, + message: 'Audio object created' + }); }); }); - describe("seekToAudio", function(){ - it("should fail to find the media Object", function() { - m = media.seekToAudio(0); - expect(m.status).toBe(9); - expect(m.message).toBe('Media Object id was not sent in arguments'); - }); + describe("startPlayingAudio", function(){ - it("should find that the Audio Object failed to initialze", function() { - global.audio = undefined; - m = media.seekToAudio(["jammin"]); - expect(m.status).toBe(2); - expect(m.message).toBe('Audio Object has not been initialized'); - delete global.audio; - }); + handlesNoArgs(media.startPlayingAudio); - it("should find that there is no time argument in the function", function() { - media.create(["jammin", "tunes/wejammin.mp3"]); - m = media.seekToAudio(["jammin"]); - expect(m.status).toBe(9); - expect(m.message).toBe('Media seek time argument not found'); - media.release(["jammin"]); + it("errors out when no src", function () { + expect(media.startPlayingAudio([1])).toEqual({ + status: 9, + message: "Media source argument not found" + }); }); - // TODO: review error generators!!! It should have a listener to see when it changes and make calls based on those changes of that particular variable. - // it("should result in an error seeking audio", function() { - // media.create(["jammin", "tunes/wejammin.mp3"]); - // m = media.seekToAudio(["jammin", 9000]); - - // // expect(m.status).toBe(3); - // expect(m.message).toBe('Seek to audio succeeded'); - - // media.release(["jammin"]); - // }); - - it("should successfully seek to audio", function() { - media.create(["jammin", "tunes/wejammin.mp3"]); - m = media.seekToAudio(["jammin", 800]); - expect(m.status).toBe(1); - expect(m.message).toBe('Seek to audio succeeded'); - media.release(["jammin"]); + it("returns success", function() { + expect(media.startPlayingAudio(["jammin", "tunes/wejammin.mp3"])).toEqual({ + status: 1, + message: 'Audio play started' + }); }); - - }); - - describe("pausePlayingAudio", function(){ - it("should fail to find the media Object", function() { - m = media.pausePlayingAudio(0); - expect(m.status).toBe(9); - expect(m.message).toBe('Media Object id was not sent in arguments'); + it("creates an audio object for the src", function () { + media.startPlayingAudio(["push", "pushit.mp3"]); + expect(Audio).toHaveBeenCalledWith("pushit.mp3"); }); - it("should find that the Audio Object failed to initialze", function() { - global.audio = undefined; - m = media.pausePlayingAudio(["jammin"]); - expect(m.status).toBe(2); - expect(m.message).toBe('Audio Object has not been initialized'); - delete global.audio; + it("calls play on the audio object", function () { + media.startPlayingAudio(["baby", "babybabybabyohhh.mp3"]); + expect(audio.play).toHaveBeenCalled(); }); - it("should successfully pause the audio", function() { - media.create(["jammin", "tunes/wejammin.mp3"]); - m = media.pausePlayingAudio(["jammin"]); - expect(m.status).toBe(1); - expect(m.message).toBe('Audio paused'); - media.release(["jammin"]); + it("calls pause if the audio id already existed", function () { + media.startPlayingAudio(["ice", "iceicebaby.mp3"]); + media.startPlayingAudio(["ice", "iceicebaby.mp3"]); + expect(audio.pause).toHaveBeenCalled(); }); - - }); - describe("getCurrentPositionAudio", function(){ - it("should fail to find the media Object", function() { - m = media.getCurrentPositionAudio(0); - expect(m.status).toBe(9); - expect(m.message).toBe('Media Object id was not sent in arguments'); + it("doesn't call pause on new id's", function () { + media.startPlayingAudio(["loser", "loser.mp3"]); + expect(audio.pause).not.toHaveBeenCalled(); }); + }); - it("should find that the Audio Object failed to initialze", function() { - global.audio = undefined; - m = media.getCurrentPositionAudio(["jammin"]); - expect(m.status).toBe(2); - expect(m.message).toBe('Audio Object has not been initialized'); - delete global.audio; + describe("stopPlayingAudio", function(){ + handlesNoArgs(media.stopPlayingAudio); + + it("finds that no Audio Object exists", function () { + expect(media.stopPlayingAudio(["Free Bird"])).toEqual({ + status: 2, + message: 'Audio Object has not been initialized' + }); }); - it("should successfully pause the audio", function() { - media.create(["jammin", "tunes/wejammin.mp3"]); - m = media.getCurrentPositionAudio(["jammin"]); - expect(m.status).toBe(1); - expect(m.message).toBe(800); - media.release(["jammin"]); + describe("when it can find the audio object", function () { + beforeEach(function () { + media.startPlayingAudio(["thriller", "triller.mp3"]); + audio.pause.reset(); //since start will call play + }); + + it("returns success", function () { + expect(media.stopPlayingAudio(["thriller"])).toEqual({ + status: 1, + message: "Audio play stopped" + }); + }); + + it("calls pause on the found audio object", function () { + media.stopPlayingAudio(["thriller"]); + expect(audio.pause).toHaveBeenCalled(); + + }); }); - }); - describe("getDuration", function(){ - it("should fail to find the media Object", function() { - m = media.getDuration(0); - expect(m.status).toBe(9); - expect(m.message).toBe('Media Object id was not sent in arguments'); + describe("seekToAudio", function(){ + handlesNoArgs(media.seekToAudio); + handlesNotFound(media.seekToAudio); + + describe("when it can find an audio object", function () { + beforeEach(function () { + media.create(["yellowSubmarine", "yellowSubmarine.ogg"]); + }); + + it("returns a message when no seek time provided", function () { + expect(media.seekToAudio(["yellowSubmarine"])).toEqual({ + status: 9, + message: 'Media seek time argument not found' + }); + }); + + it("sets the currentTime of the audio object", function () { + media.seekToAudio(["yellowSubmarine", 12]); + expect(audio.currentTime).toBe(12); + }); + + describe("when setting the current time fails", function () { + beforeEach(function () { + spyOn(console, "log"); + audio.__defineSetter__("currentTime", jasmine.createSpy("audio.currentTime").andThrow("holy balls!")); + }); + + afterEach(function () { + delete audio.currentTime; + audio.currentTime = 800; + }); + + it("logs the error", function () { + media.seekToAudio(["yellowSubmarine", 33]); + expect(console.log).toHaveBeenCalledWith("Error seeking audio: holy balls!"); + }); + + it("returns the error", function () { + expect(media.seekToAudio(["yellowSubmarine", 33])).toEqual({ + status: 3, + message: "Error seeking audio: holy balls!" + }); + }); + }); }); + }); - it("should find that the Audio Object failed to initialze", function() { - global.audio = undefined; - m = media.getDuration(["jammin"]); - expect(m.status).toBe(2); - expect(m.message).toBe('Audio Object has not been initialized'); - delete global.audio; - }); + describe("pausePlayingAudio", function(){ + handlesNoArgs(media.pausePlayingAudio); + handlesNotFound(media.pausePlayingAudio); - it("should successfully pause the audio", function() { - media.create(["jammin", "tunes/wejammin.mp3"]); - m = media.getDuration(["jammin"]); - expect(m.status).toBe(1); - expect(m.message).toBe(2100); - media.release(["jammin"]); + it("should pause the existing audio", function () { + media.create(["WhatIsLove", "babyDontHurtMe.mp3"]); + media.pausePlayingAudio(["WhatIsLove"]); + expect(audio.pause).toHaveBeenCalled(); }); + it("should return Audio paused", function () { + media.create(["TheBoysAreBackInTown", "thinLizzyBaby.mp3"]); + expect(media.pausePlayingAudio(["TheBoysAreBackInTown"])).toEqual({ + status: 1, + message: 'Audio paused' + }); + }); }); - describe("startRecordingAudio", function(){ - it("should fail to find the media Object", function() { - m = media.startRecordingAudio(0); - expect(m.status).toBe(9); - expect(m.message).toBe('Media Object id was not sent in arguments'); + describe("getCurrentPositionAudio", function(){ + handlesNoArgs(media.getCurrentPositionAudio); + handlesNotFound(media.getCurrentPositionAudio); + + it("should return current audio position", function () { + media.create(["InTheEnd", "linkinPark/inTheEnd.mp3"]); + expect(media.getCurrentPositionAudio(["InTheEnd"])).toEqual({ + status: 1, + message: 800 + }); }); + }); - it("should find that the Audio Object failed to initialze", function() { - global.audio = undefined; - m = media.startRecordingAudio(["jammin"]); - expect(m.status).toBe(2); - expect(m.message).toBe('Media start recording, insufficient arguments'); - delete global.audio; - }); + describe("getDuration", function(){ + handlesNoArgs(media.getDuration); + handlesNotFound(media.getDuration); + + it("should return errors", function () { + expect(media.getDuration(["EndlessLove"])).toEqual({ + status: 2, + message:'Audio Object has not been initialized' + }); + }); + }); + + xdescribe("startRecordingAudio", function(){ + handlesNoArgs(media.startRecordingAudio); + handlesNotFound(media.startRecordingAudio); - it("should successfully pause the audio", function() { + xit("should successfully pause the audio", function() { media.create(["jammin", "tunes/wejammin.mp3"]); m = media.startRecordingAudio(["jammin"]); - expect(m.status).toBe(1); - expect(m.message).toBe(2100); + expect(m.status).toBe(0); + expect(m.message).toBe('WebWorks Is On It'); media.release(["jammin"]); }); }); - - // describe("getDuration", function(){ - // it("should fail to find the media Object", function() { - // m = media.getDuration(0); - // expect(m.status).toBe(9); - // expect(m.message).toBe('Media Object id was not sent in arguments'); - // }); - - // it("should find that the Audio Object failed to initialze", function() { - // global.audio = undefined; - // m = media.getDuration(["jammin"]); - // expect(m.status).toBe(2); - // expect(m.message).toBe('Audio Object has not been initialized'); - // delete global.audio; - // }); - - // it("should successfully pause the audio", function() { - // media.create(["jammin", "tunes/wejammin.mp3"]); - // m = media.getDuration(["jammin"]); - // expect(m.status).toBe(1); - // expect(m.message).toBe(2100); - // media.release(["jammin"]); - // }); - - // }); - });
