1+ const chai = require ( 'chai' ) ;
2+ chai . use ( require ( 'chai-as-promised' ) ) ;
3+ const SDL = require ( '../../config.js' ) . node ;
4+
5+ // Mocking framework
6+ // Used to stub an RPC call so that it isn't actually sent to Core
7+ const sinon = require ( 'sinon' ) ;
8+
9+ const Validator = require ( '../../Validator' ) ;
10+
11+ module . exports = function ( appClient ) {
12+ const sdlManager = appClient . _sdlManager ;
13+ const fileManager = sdlManager . getFileManager ( ) ;
14+ const uploadOverwriteFailure = 'File is already on the head unit, aborting upload operation' ;
15+
16+ describe ( 'UploadFileOperationTests' , function ( ) {
17+ describe ( 'when the file is already on the head unit' , function ( ) {
18+ describe ( 'when not overwriting' , function ( ) {
19+ it ( 'should not send the upload RPCs and finish the operation' , async function ( ) {
20+ const stub = sinon . stub ( fileManager , 'fileNeedsUpload' )
21+ . callsFake ( ( file ) => false ) ;
22+ const testFileName = 'TestSmallMemory' ;
23+ const testFileData = 'test1234' ;
24+ const testFile = new SDL . manager . file . filetypes . SdlFile ( testFileName , SDL . rpc . enums . FileType . BINARY , testFileData , true ) ;
25+
26+ const testFileWrapper = new SDL . manager . file . _SdlFileWrapper ( testFile , ( success , bytesAvailable , fileNames , errorMessage ) => {
27+ Validator . assertTrue ( ! success ) ;
28+ Validator . assertNull ( bytesAvailable ) ;
29+ Validator . assertNull ( fileNames ) ;
30+ Validator . assertNotNullUndefined ( errorMessage ) ;
31+ Validator . assertEquals ( errorMessage , uploadOverwriteFailure ) ;
32+ } ) ;
33+ const operation = new SDL . manager . file . _UploadFileOperation ( sdlManager . _lifecycleManager , sdlManager . getFileManager ( ) , testFileWrapper ) ;
34+ await operation . _start ( ) ;
35+ stub . restore ( ) ;
36+
37+ Validator . assertEquals ( operation . getState ( ) , SDL . manager . _Task . FINISHED ) ;
38+ } ) ;
39+ } ) ;
40+
41+ describe ( 'when overwriting' , function ( ) {
42+ it ( 'should send the upload RPCs' , async function ( ) {
43+ const stub = sinon . stub ( fileManager , 'fileNeedsUpload' )
44+ . callsFake ( ( file ) => false ) ;
45+ const testFileName = 'TestSmallMemory' ;
46+ const testFileData = 'test1234' ;
47+ const testFile = new SDL . manager . file . filetypes . SdlFile ( testFileName , SDL . rpc . enums . FileType . BINARY , testFileData , true )
48+ . setOverwrite ( true ) ;
49+
50+ const testFileWrapper = new SDL . manager . file . _SdlFileWrapper ( testFile , ( success , bytesAvailable , fileNames , errorMessage ) => {
51+ Validator . assertTrue ( ! success ) ;
52+ Validator . assertNull ( bytesAvailable ) ;
53+ Validator . assertNull ( fileNames ) ;
54+ Validator . assertNotNullUndefined ( errorMessage ) ;
55+ Validator . assertEquals ( errorMessage , uploadOverwriteFailure ) ;
56+ } ) ;
57+ const operation = new SDL . manager . file . _UploadFileOperation ( sdlManager . _lifecycleManager , sdlManager . getFileManager ( ) , testFileWrapper ) ;
58+ await operation . _start ( ) ;
59+ stub . restore ( ) ;
60+
61+ Validator . assertNotEquals ( operation . getState ( ) , SDL . manager . _Task . FINISHED ) ;
62+ } ) ;
63+ } ) ;
64+ } ) ;
65+ } ) ;
66+ } ;
0 commit comments