From 5ac5b74f0195f56dfab8d4fbb6a30a629e69262b Mon Sep 17 00:00:00 2001 From: Will Marshall Date: Tue, 8 Apr 2014 13:25:35 +1000 Subject: [PATCH] Setting up a Rake task for Jasmine/Karma --- config/ng-test.conf.js | 5 ++- lib/tasks/karma.rake | 31 +++++++++++++++++++ spec/javascripts/application_spec.js | 5 +++ .../unit/order_cycle_spec.js.coffee | 2 +- 4 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 lib/tasks/karma.rake create mode 100644 spec/javascripts/application_spec.js diff --git a/config/ng-test.conf.js b/config/ng-test.conf.js index b1bddd6532..e8a01b3c9c 100644 --- a/config/ng-test.conf.js +++ b/config/ng-test.conf.js @@ -5,11 +5,11 @@ module.exports = function(config) { frameworks: ['jasmine'], files: [ + APPLICATION_SPEC, 'app/assets/javascripts/shared/jquery-1.8.0.js', // TODO: Can we link to Rails' jquery? - 'app/assets/javascripts/shared/angular.js', - 'app/assets/javascripts/shared/angular-*.js', 'app/assets/javascripts/shared/jquery.timeago.js', 'app/assets/javascripts/shared/mm-foundation-tpls-0.2.0-SNAPSHOT.js', + 'app/assets/javascripts/shared/angular-local-storage.js', 'app/assets/javascripts/admin/shared_directives.js.coffee', 'app/assets/javascripts/admin/shared_services.js.coffee', @@ -18,7 +18,6 @@ module.exports = function(config) { 'app/assets/javascripts/admin/bulk_product_update.js.coffee', 'app/assets/javascripts/darkswarm/*.js*', 'app/assets/javascripts/darkswarm/**/*.js*', - 'spec/javascripts/unit/**/*.js*' ], diff --git a/lib/tasks/karma.rake b/lib/tasks/karma.rake new file mode 100644 index 0000000000..6201c66e61 --- /dev/null +++ b/lib/tasks/karma.rake @@ -0,0 +1,31 @@ +namespace :karma do + task :start => :environment do + with_tmp_config :start + end + + task :run => :environment do + with_tmp_config :start, "--single-run" + end + + private + + def with_tmp_config(command, args = nil) + Tempfile.open('karma_unit.js', Rails.root.join('tmp') ) do |f| + f.write unit_js(application_spec_files) + f.flush + system "karma #{command} #{f.path} #{args}" + end + end + + def application_spec_files + sprockets = Rails.application.assets + sprockets.append_path Rails.root.join("spec/javascripts") + files = Rails.application.assets.find_asset("application_spec.js").to_a.map {|e| e.pathname.to_s } + end + + def unit_js(files) + puts files + unit_js = File.open('config/ng-test.conf.js', 'r').read + unit_js.gsub "APPLICATION_SPEC", "\"#{files.join("\",\n\"")}\"" + end +end diff --git a/spec/javascripts/application_spec.js b/spec/javascripts/application_spec.js new file mode 100644 index 0000000000..ec5fef8832 --- /dev/null +++ b/spec/javascripts/application_spec.js @@ -0,0 +1,5 @@ +//= require angular +//= require angular-resource +//= require angular-animate +//= require angular-mocks +//= require angular-cookies diff --git a/spec/javascripts/unit/order_cycle_spec.js.coffee b/spec/javascripts/unit/order_cycle_spec.js.coffee index d6d0ac882b..4817ca0edd 100644 --- a/spec/javascripts/unit/order_cycle_spec.js.coffee +++ b/spec/javascripts/unit/order_cycle_spec.js.coffee @@ -828,4 +828,4 @@ describe 'OrderCycle services', -> expect(order_cycle.outgoing_exchanges[0].enterprise_fees).toEqual [{id: 3}, {id: 4}] expect(order_cycle.incoming_exchanges[0].enterprise_fee_ids).toBeUndefined() expect(order_cycle.outgoing_exchanges[0].enterprise_fee_ids).toBeUndefined() - \ No newline at end of file +