@@ -50,7 +50,8 @@ var fakeUtil = Object.keys(util).reduce(function(fakeUtil, methodName) {
5050
5151describe ( 'BigQuery/Job' , function ( ) {
5252 var BIGQUERY = {
53- projectId : 'my-project'
53+ projectId : 'my-project' ,
54+ Promise : Promise
5455 } ;
5556 var JOB_ID = 'job_XYrk_3z' ;
5657 var Job ;
@@ -274,6 +275,45 @@ describe('BigQuery/Job', function() {
274275 } ) ;
275276 } ) ;
276277
278+ describe ( 'promise' , function ( ) {
279+ beforeEach ( function ( ) {
280+ job . startPolling_ = util . noop ;
281+ } ) ;
282+
283+ it ( 'should return an instance of the localized Promise' , function ( ) {
284+ var FakePromise = job . Promise = function ( ) { } ;
285+ var promise = job . promise ( ) ;
286+
287+ assert ( promise instanceof FakePromise ) ;
288+ } ) ;
289+
290+ it ( 'should reject the promise if an error occurs' , function ( ) {
291+ var error = new Error ( 'err' ) ;
292+
293+ setImmediate ( function ( ) {
294+ job . emit ( 'error' , error ) ;
295+ } ) ;
296+
297+ return job . promise ( ) . then ( function ( ) {
298+ throw new Error ( 'Promise should have been rejected.' ) ;
299+ } , function ( err ) {
300+ assert . strictEqual ( err , error ) ;
301+ } ) ;
302+ } ) ;
303+
304+ it ( 'should resolve the promise on complete' , function ( ) {
305+ var metadata = { } ;
306+
307+ setImmediate ( function ( ) {
308+ job . emit ( 'complete' , metadata ) ;
309+ } ) ;
310+
311+ return job . promise ( ) . then ( function ( data ) {
312+ assert . deepEqual ( data , [ metadata ] ) ;
313+ } ) ;
314+ } ) ;
315+ } ) ;
316+
277317 describe ( 'listenForEvents_' , function ( ) {
278318 beforeEach ( function ( ) {
279319 job . startPolling_ = util . noop ;
0 commit comments