2014-11-04 16:07:32 +01:00
/ * *
* Copyright 2014 IBM Corp .
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
* * /
var should = require ( "should" ) ;
var sinon = require ( 'sinon' ) ;
var fs = require ( "fs" ) ;
var exifNode = require ( "../../../utility/exif/94-exif.js" ) ;
var helper = require ( '../../../../node-red/test/nodes/helper.js' ) ;
describe ( 'exif node' , function ( ) {
2015-02-05 14:52:20 +01:00
"use strict" ;
2014-11-04 16:07:32 +01:00
beforeEach ( function ( done ) {
helper . startServer ( done ) ;
} ) ;
afterEach ( function ( done ) {
helper . unload ( ) ;
helper . stopServer ( done ) ;
} ) ;
it ( 'extracts location data from Exif data of JPEG' , function ( done ) {
2015-02-05 14:52:20 +01:00
2014-11-04 16:07:32 +01:00
var exif = require ( 'exif' ) ;
var ExifImage = exif . ExifImage ;
2015-02-05 14:52:20 +01:00
2014-11-04 16:07:32 +01:00
// the jpg file is a single black dot but it was originally a photo taken at IBM Hursley
var data = fs . readFileSync ( "./exif_test_image.jpg" , null ) ; // extracting genuine exif data to be fed back as the result of the stubbed ExifImage constructor
2015-02-05 14:52:20 +01:00
2014-11-04 16:07:32 +01:00
var eD ;
2015-02-05 14:52:20 +01:00
2014-11-04 16:07:32 +01:00
new ExifImage ( { image : data } , function ( error , exifData ) {
if ( error ) {
done ( error ) ;
} else {
eD = exifData ;
}
2015-02-05 14:52:20 +01:00
2014-11-04 16:07:32 +01:00
var flow = [ { id : "exifNode1" , type : "exif" , wires : [ [ "helperNode1" ] ] } ,
{ id : "helperNode1" , type : "helper" } ] ;
2015-02-05 14:52:20 +01:00
2014-11-04 16:07:32 +01:00
helper . load ( exifNode , flow , function ( ) {
var exifNode1 = helper . getNode ( "exifNode1" ) ;
var helperNode1 = helper . getNode ( "helperNode1" ) ;
2015-02-05 14:52:20 +01:00
2014-11-04 16:07:32 +01:00
helperNode1 . on ( "input" , function ( msg ) {
msg . location . lat . should . equal ( 50.95624 ) ; // this data is stored in the jpg file
msg . location . lon . should . equal ( - 1.36701 ) ;
done ( ) ;
} ) ;
2015-02-05 14:52:20 +01:00
2014-11-04 16:07:32 +01:00
var stub = sinon . stub ( ExifImage . prototype , 'loadImage' , function ( error , callback ) {
stub . restore ( ) ;
callback ( null , eD ) ;
} ) ;
2015-02-05 14:52:20 +01:00
2014-11-04 16:07:32 +01:00
exifNode1 . receive ( { payload : data } ) ;
} ) ;
} ) ;
2015-02-05 14:52:20 +01:00
2014-11-04 16:07:32 +01:00
} ) ;
} ) ;