From 238e2ab26cccee9c6b7be3c21c436fbc1676b726 Mon Sep 17 00:00:00 2001 From: Ibby Hadeed Date: Wed, 12 Jul 2017 14:06:06 -0400 Subject: [PATCH] tests(): add test to verify new way of creating classes --- .../core/ionic-native-plugin.spec.ts | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/@ionic-native/core/ionic-native-plugin.spec.ts diff --git a/src/@ionic-native/core/ionic-native-plugin.spec.ts b/src/@ionic-native/core/ionic-native-plugin.spec.ts new file mode 100644 index 000000000..69df51ce8 --- /dev/null +++ b/src/@ionic-native/core/ionic-native-plugin.spec.ts @@ -0,0 +1,69 @@ +// This is to verify that new (FileTransfer.getPlugin)() works + +import { Plugin, CordovaInstance } from './decorators'; +import { checkAvailability } from './plugin'; +import { IonicNativePlugin } from './ionic-native-plugin'; + +class FT { + hello(): string { + return 'world'; + } +} + +(window as any).FileTransfer = () => new FT(); + +@Plugin({ + plugin: 'cordova-plugin-file-transfer', + pluginRef: 'FileTransfer', + repo: '', + pluginName: 'FileTransfer' +}) +export class FileTransfer extends IonicNativePlugin { + create(): FileTransferObject { + let instance: any; + if (checkAvailability(FileTransfer.getPluginRef(), null, FileTransfer.getPluginName()) === true) { + instance = new (FileTransfer.getPlugin())(); + } + return new FileTransferObject(instance); + } +} + +export class FileTransferObject { + + constructor(public _objectInstance: any) { + console.info('Creating a new FileTransferObject with instance: ', _objectInstance); + } + + @CordovaInstance({ sync: true }) + hello(): string { return; } + +} + +describe('Mock FileTransfer Plugin', () => { + + let plugin: FileTransfer, + instance: FileTransferObject; + + beforeAll(() => { + plugin = new FileTransfer(); + instance = plugin.create(); + }); + + it('should create a new FileTransfer plugin instance', () => { + expect(plugin instanceof FileTransfer).toBeTruthy(); + }); + + it('should create new FileTransferObject instance', () => { + expect(instance instanceof FileTransferObject).toBeTruthy(); + }); + + it('FileTransferObject instance should have _objectInstance property', () => { + expect(instance._objectInstance).toBeDefined(); + }); + + it('FileTransferObject.hello should return world', () => { + console.info('instance hello is', instance.hello()); + expect(instance.hello()).toEqual('world'); + }); + +});