Added first working version of unit tests

This commit is contained in:
Samer Albahra
2015-07-12 09:41:45 -05:00
parent 5190a65b77
commit 9cacab7deb
5 changed files with 1946 additions and 1 deletions

76
test/api.js Normal file
View File

@@ -0,0 +1,76 @@
var hippie = require( "hippie" ),
nock = require( "nock" ),
replies = require( "./replies" ),
server = require( "../server" ).app;
function apiTest( opt ) {
var opt = extend( {}, {
method: 0,
loc: "",
key: "",
format: "json",
callback: function() {}
}, opt ),
url = "/" + opt.method + "?loc=" + opt.loc + "&key=" + opt.key + "&format=" + opt.format;
setupMocks( opt.loc );
hippie( server )
.json()
.get( url )
.expectStatus( 200 )
.end( function( err, res, body ) {
if ( err ) {
throw err;
}
opt.callback( body );
} );
}
function setupMocks( location ) {
nock( "http://autocomplete.wunderground.com" )
.filteringPath( function( path ) {
return "/";
} )
.get( "/" )
.reply( 200, replies[location].WUautoComplete );
nock( "http://api.wunderground.com" )
.filteringPath( function( path ) {
return "/";
} )
.get( "/" )
.reply( 200, replies[location].WUyesterday );
nock( "http://api.weather.com" )
.filteringPath( function( path ) {
return "/";
} )
.get( "/" )
.reply( 200, replies[location].WSIcurrent );
}
describe( "Weather API", function() {
describe( "/:method endpoint", function() {
it( "The Weather Channel Source Test", function( done ) {
apiTest( {
method: 1,
loc: "01002",
callback: function( reply ) {
done();
}
} );
} );
} );
} );
function extend( target ) {
var sources = [].slice.call( arguments, 1 );
sources.forEach( function( source ) {
for ( var prop in source ) {
target[prop] = source[prop];
}
} );
return target;
}