From cc751685580309a1626e666d031fc83684dbab5c Mon Sep 17 00:00:00 2001 From: Ryan Florence Date: Tue, 5 Nov 2013 12:35:10 -0700 Subject: [PATCH] ember testing after running `generate app foo` you'll also get a basic test for your new ember app. you can run the tests for as specific app with: rake js:dev rake js:dev quizzes Change-Id: I55c53e875c06d44ae553100bf8d73a4ee83ba278 Reviewed-on: https://gerrit.instructure.com/26023 Tested-by: Jenkins Reviewed-by: Jason Madsen Product-Review: Ryan Florence QA-Review: Ryan Florence --- lib/canvas/require_js.rb | 2 +- lib/tasks/js.rake | 9 +++++++++ loom/generators/app.js | 8 ++++++-- loom/templates/new_app/tests/app.coffee.hbs | 14 ++++++++++++++ loom/templates/new_app/tests/app.spec.coffee.hbs | 11 +++++++++++ spec/javascripts/runner.html.erb | 3 ++- 6 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 loom/templates/new_app/tests/app.coffee.hbs create mode 100644 loom/templates/new_app/tests/app.spec.coffee.hbs diff --git a/lib/canvas/require_js.rb b/lib/canvas/require_js.rb index 07e2de66008..faaa7b025a4 100644 --- a/lib/canvas/require_js.rb +++ b/lib/canvas/require_js.rb @@ -10,7 +10,7 @@ module Canvas JS_ROOT = "#{Rails.root}/public/javascripts" def matcher - ENV['JS_SPEC_MATCHER'] || '**/*Spec.js' + ENV['JS_SPEC_MATCHER'] || '**/*{Spec,.spec}.js' end # get all regular canvas (and plugin) bundles diff --git a/lib/tasks/js.rake b/lib/tasks/js.rake index 0aab5edfe39..5fbc8da6ce1 100644 --- a/lib/tasks/js.rake +++ b/lib/tasks/js.rake @@ -2,7 +2,16 @@ require 'timeout' namespace :js do + desc 'run testem as you develop, can use `rake js:dev `' task :dev do + app = ARGV[1] + if app + ENV['JS_SPEC_MATCHER'] = "**/#{app}/**/*.spec.js" + unless File.exists?("app/coffeescripts/ember/#{app}") + puts "no app found at app/coffeescripts/ember/#{app}" + exit + end + end Rake::Task['js:generate_runner'].invoke exec('testem -f config/testem.yml') end diff --git a/loom/generators/app.js b/loom/generators/app.js index e8a163afe4a..33383f3e9f3 100644 --- a/loom/generators/app.js +++ b/loom/generators/app.js @@ -17,7 +17,9 @@ exports.present = function(appName) { exports.templates = [ 'new_app/config/app.coffee.hbs', 'new_app/config/routes.coffee.hbs', - 'new_app/templates/application.hbs.hbs' + 'new_app/templates/application.hbs.hbs', + 'new_app/tests/app.coffee.hbs', + 'new_app/tests/app.spec.coffee.hbs' ]; exports.savePath = function(template, env) { @@ -25,7 +27,9 @@ exports.savePath = function(template, env) { return { 'new_app/config/app.coffee.hbs': 'app/coffeescripts/ember/'+env.appName+'/config/app.coffee', 'new_app/config/routes.coffee.hbs': 'app/coffeescripts/ember/'+env.appName+'/config/routes.coffee', - 'new_app/templates/application.hbs.hbs': 'app/coffeescripts/ember/'+env.appName+'/templates/'+env.appName+'.hbs' + 'new_app/templates/application.hbs.hbs': 'app/coffeescripts/ember/'+env.appName+'/templates/'+env.appName+'.hbs', + 'new_app/tests/app.coffee.hbs': 'app/coffeescripts/ember/'+env.appName+'/tests/app.coffee', + 'new_app/tests/app.spec.coffee.hbs': 'app/coffeescripts/ember/'+env.appName+'/tests/app.spec.coffee' }[template]; }; diff --git a/loom/templates/new_app/tests/app.coffee.hbs b/loom/templates/new_app/tests/app.coffee.hbs new file mode 100644 index 00000000000..71a0fcd1f7d --- /dev/null +++ b/loom/templates/new_app/tests/app.coffee.hbs @@ -0,0 +1,14 @@ +define ['../main'], (Application) -> + App = Application.create + LOG_ACTIVE_GENERATION: yes + LOG_MODULE_RESOLVER: yes + LOG_TRANSITIONS: yes + LOG_TRANSITIONS_INTERNAL: yes + LOG_VIEW_LOOKUPS: yes + rootElement: '#fixtures' + history: 'none' + App.setupForTesting() + App.injectTestHelpers() + App.advanceReadiness() + App + diff --git a/loom/templates/new_app/tests/app.spec.coffee.hbs b/loom/templates/new_app/tests/app.spec.coffee.hbs new file mode 100644 index 00000000000..fc9f665362b --- /dev/null +++ b/loom/templates/new_app/tests/app.spec.coffee.hbs @@ -0,0 +1,11 @@ +define ['./app', 'ember'], (App, Ember) -> + + module '{{appName}}', -> + setup: -> + App.reset() + Ember.run(App, App.advanceReadiness) + + test 'says hello', -> + visit('/').then -> + equal(find('h1').html().trim(), 'HELLO!') + diff --git a/spec/javascripts/runner.html.erb b/spec/javascripts/runner.html.erb index de47528940d..c6362065fcd 100644 --- a/spec/javascripts/runner.html.erb +++ b/spec/javascripts/runner.html.erb @@ -105,9 +105,10 @@ var onSpecsLoaded = null; require(<%= Dir[ + "public/javascripts/#{matcher}", "spec/javascripts/compiled/#{matcher}", "spec/plugins/*/javascripts/compiled/#{matcher}" - ].map{ |file| file.sub(/\.js$/, '') }.inspect + ].map{ |file| file.sub(/\.js$/, '').sub(/public\/javascripts\//, '') }.inspect %>, function() { specsLoading = false; if (onSpecsLoaded) onSpecsLoaded();