From 35da3a5151bf91cf21107b75183bcfddd7895c65 Mon Sep 17 00:00:00 2001 From: Brendon Duncan Date: Wed, 6 Jun 2018 19:53:57 +1200 Subject: [PATCH] One test. --- Gruntfile.js | 11 ++++ app-template/package-template.json | 8 ++- src/js/services/rateService.spec.js | 53 +++++++++++++++++ test/karma.conf.js | 91 +++++++++++++++++++++++++++++ 4 files changed, 161 insertions(+), 2 deletions(-) create mode 100644 src/js/services/rateService.spec.js create mode 100644 test/karma.conf.js diff --git a/Gruntfile.js b/Gruntfile.js index b81f53f44..f9ed59621 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -152,11 +152,22 @@ module.exports = function(grunt) { src: [ 'src/js/app.js', 'src/js/routes.js', + 'src/js/directives/*.js', + '!src/js/directives/*.spec.js', + 'src/js/filters/*.js', + '!src/js/filters/*.spec.js', + 'src/js/models/*.js', + '!src/js/models/*.spec.js', + 'src/js/services/*.js', + '!src/js/services/*.spec.js', + 'src/js/controllers/**/*.js', + '!src/js/controllers/**/*.spec.js', + 'src/js/translations.js', 'src/js/appConfig.js', 'src/js/externalServices.js', diff --git a/app-template/package-template.json b/app-template/package-template.json index 660063183..75f93a3d0 100644 --- a/app-template/package-template.json +++ b/app-template/package-template.json @@ -113,8 +113,8 @@ "sign:android": "rm -f platforms/android/build/outputs/apk/android-release-signed-aligned.apk; jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ../bitcoin-com-release-key.jks -signedjar platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/android-release-unsigned.apk bitcoin-com && $ANDROID_HOME/build-tools/27.0.1/zipalign -v 4 platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/android-release-signed-aligned.apk", "apply:copay": "npm i fs-extra && cd app-template && node apply.js copay && npm i && cordova prepare", "apply:bitpay": "npm i fs-extra && cd app-template && node apply.js bitpay && npm i && cordova prepare", - "apply:bitcoincom": "npm i fs-extra && cd app-template && node apply.js bitcoincom && npm i && cordova prepare", - "test": "echo \"no package tests configured\"", + "apply:bitcoincom": "npm i fs-extra && cd app-template && node apply.js bitcoincom && npm i && cordova prepare", + "test": "karma start test/karma.conf.js --single-run", "clean": "trash platforms && trash plugins && cordova prepare", "unstage-package": "git reset package.json", "clean-all": "git clean -dfx" @@ -123,6 +123,10 @@ "cordova": "^6.3.1", "grunt": "^1.0.1", "ionic": "^3.6.0", + "jasmine-core": "^3.1.0", + "karma": "^2.0.2", + "karma-chrome-launcher": "^2.2.0", + "karma-jasmine": "^1.1.2", "trash-cli": "^1.4.0", "lodash": "^4.17.4", "pre-commit": "^1.1.3" diff --git a/src/js/services/rateService.spec.js b/src/js/services/rateService.spec.js new file mode 100644 index 000000000..35397eb7f --- /dev/null +++ b/src/js/services/rateService.spec.js @@ -0,0 +1,53 @@ +describe('rateService', function() { + var $httpBackend, rateService, requestHandler; + + beforeEach(function() { + module('ngLodash'); + module('copayApp.services'); + + inject(function($injector){ + $httpBackend = $injector.get('$httpBackend'); + + requestHandler = $httpBackend.when('GET', 'https://www.bitcoin.com/special/rates.json') + .respond([ + { + "code": "BTC", + "name": "Bitcoin", + "rate": 1 + }, + { + "code": "BCH_BTC", + "name": "Bitcoin Cash", + "rate": 6.739397 + }, + { + "code": "USD", + "name": "US Dollar", + "rate": 7602.04 + } + ]); + + rateService = $injector.get('rateService'); + + $httpBackend.flush(); + }); + }); + + afterEach(function() { + $httpBackend.verifyNoOutstandingExpectation(); + $httpBackend.verifyNoOutstandingRequest(); + }); + + it('get rates', function() { + + $httpBackend.expectGET('https://www.bitcoin.com/special/rates.json'); + + rateService.updateRates(); + + $httpBackend.flush(); + + var usdRate = rateService.getRate('USD'); + + expect(usdRate).toEqual(7602.04); + }); +}); \ No newline at end of file diff --git a/test/karma.conf.js b/test/karma.conf.js new file mode 100644 index 000000000..002d40c91 --- /dev/null +++ b/test/karma.conf.js @@ -0,0 +1,91 @@ +// Karma configuration +// Generated on Tue Jun 05 2018 16:39:51 GMT+1200 (NZST) + +module.exports = function(config) { + config.set({ + + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '..', + + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['jasmine'], + + + // list of files / patterns to load in the browser + files: [ + 'node_modules/angular/angular.js', + + // From Gruntfile.js + 'bower_components/qrcode-generator/js/qrcode.js', + 'bower_components/qrcode-generator/js/qrcode_UTF8.js', + 'bower_components/moment/min/moment-with-locales.js', + 'bower_components/angular-moment/angular-moment.js', + 'bower_components/ng-lodash/build/ng-lodash.js', + 'bower_components/angular-qrcode/angular-qrcode.js', + 'bower_components/angular-gettext/dist/angular-gettext.js', + 'bower_components/ng-csv/build/ng-csv.js', + 'bower_components/ionic-toast/dist/ionic-toast.bundle.min.js', + 'bower_components/angular-clipboard/angular-clipboard.js', + 'bower_components/angular-md5/angular-md5.js', + 'bower_components/angular-mocks/angular-mocks.js', + 'bower_components/ngtouch/src/ngTouch.js', + 'angular-bitauth/angular-bitauth.js', + 'angular-bitcore-wallet-client/angular-bitcore-wallet-client.js', + + 'bower_components/ionic/release/js/ionic.bundle.min.js', + 'bitcoin-cash-js/bitcoin-cash-js.js', + + 'src/js/**/*.js' + ], + + + // list of files / patterns to exclude + exclude: [ + ], + + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + }, + + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ['progress'], + + + // web server port + port: 9876, + + + // enable / disable colors in the output (reporters and logs) + colors: true, + + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: false, + + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: ['Chrome'], + + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: false, + + // Concurrency level + // how many browser should be started simultaneous + concurrency: Infinity + }) +}