ember-appkit-rails 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ember/appkit/rails.rb +4 -0
  3. data/lib/ember/appkit/rails/engine.rb +6 -1
  4. data/lib/ember/appkit/rails/teaspoon.rb +5 -0
  5. data/lib/ember/appkit/rails/teaspoon/engine.rb +3 -0
  6. data/lib/ember/appkit/rails/teaspoon/suite.rb +7 -0
  7. data/lib/ember/appkit/rails/version.rb +1 -1
  8. data/lib/ember/appkit/rails/views/teaspoon/spec/_eak_rails.html.erb +10 -0
  9. data/lib/generators/ember/bootstrap_generator.rb +27 -9
  10. data/lib/generators/ember/component_generator.rb +2 -2
  11. data/lib/generators/ember/controller_generator.rb +4 -4
  12. data/lib/generators/ember/generator_helpers.rb +4 -0
  13. data/lib/generators/ember/install_generator.rb +150 -0
  14. data/lib/generators/ember/model_generator.rb +7 -2
  15. data/lib/generators/ember/resource_generator.rb +1 -1
  16. data/lib/generators/ember/route_generator.rb +2 -2
  17. data/lib/generators/ember/scaffold_generator.rb +17 -3
  18. data/lib/generators/ember/serializer_override.rb +18 -0
  19. data/lib/generators/ember/view_generator.rb +2 -2
  20. data/{test/dummy/config/adapters/application.js.es6.erb → lib/generators/templates/adapters/application.es6.erb} +0 -0
  21. data/lib/generators/templates/application.js.erb +1 -0
  22. data/lib/generators/templates/{array_controller.js.es6 → array_controller.es6} +0 -0
  23. data/lib/generators/templates/{component.js.es6 → component.es6} +0 -0
  24. data/lib/generators/templates/{controller.js.es6 → controller.es6} +0 -0
  25. data/lib/generators/templates/environment.js.erb +2 -0
  26. data/lib/generators/templates/environments/development.js.erb +5 -5
  27. data/lib/generators/templates/environments/production.js.erb +2 -2
  28. data/lib/generators/templates/environments/test.js.erb +1 -1
  29. data/lib/generators/templates/initializers/teaspoon.rb +63 -0
  30. data/lib/generators/templates/{model.js.es6 → model.es6} +0 -0
  31. data/lib/generators/templates/{object_controller.js.es6 → object_controller.es6} +0 -0
  32. data/lib/generators/templates/{route.js.es6 → route.es6} +0 -0
  33. data/lib/generators/templates/{router.js.es6 → router.es6} +0 -0
  34. data/lib/generators/templates/scaffold/route/{edit.js.es6 → edit.es6} +1 -1
  35. data/lib/generators/templates/scaffold/route/{index.js.es6 → index.es6} +1 -1
  36. data/lib/generators/templates/scaffold/route/{new.js.es6 → new.es6} +1 -1
  37. data/lib/generators/templates/scaffold/route/{show.js.es6 → show.es6} +1 -1
  38. data/lib/generators/templates/scaffold/template/form.hbs +3 -4
  39. data/lib/generators/templates/scaffold/template/index.hbs +2 -2
  40. data/lib/generators/templates/scaffold/template/show.hbs +2 -2
  41. data/lib/generators/templates/scaffold_controller/controller.rb +2 -2
  42. data/lib/generators/templates/test/model.es6 +7 -0
  43. data/lib/generators/templates/test/route.es6 +23 -0
  44. data/lib/generators/templates/test/teaspoon_env.rb +38 -0
  45. data/lib/generators/templates/test/test_helper.js +55 -0
  46. data/lib/generators/templates/{view.js.es6 → view.es6} +0 -0
  47. data/test/dummy/config/adapters/application.es6.erb +3 -0
  48. data/test/dummy/config/application.js +1 -0
  49. data/test/dummy/config/environment.js.erb +2 -0
  50. data/test/dummy/config/environments/development.js.erb +5 -5
  51. data/test/dummy/config/environments/production.js.erb +2 -2
  52. data/test/dummy/config/environments/test.js.erb +1 -1
  53. data/test/dummy/config/initializers/secret_token.rb +1 -1
  54. data/test/dummy/config/initializers/teaspoon.rb +63 -0
  55. data/test/dummy/config/{router.js.es6 → router.es6} +0 -0
  56. data/test/dummy/log/test.log +71 -8
  57. data/test/dummy/test/teaspoon_env.rb +38 -0
  58. data/test/dummy/test/test_helper.js +55 -0
  59. data/test/dummy/tmp/cache/assets/test/sprockets/{eeb5bd38d1dad0d908461fd114f702bc → 08230536deeb8bca57aa54c1cf9a8a67} +0 -0
  60. data/test/dummy/tmp/cache/assets/test/sprockets/0f4e288e1e01cda64059f8f521519f5a +0 -0
  61. data/test/dummy/tmp/cache/assets/test/sprockets/{492d1909e24832f58ebca96dade2a876 → 1318d49b0a8b80264cc6d140438953bf} +0 -0
  62. data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  63. data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  64. data/test/dummy/tmp/cache/assets/test/sprockets/39492898b23538577ff8db562a35fb7c +0 -0
  65. data/test/dummy/tmp/cache/assets/test/sprockets/3f9cb5a26b08b9e25de91fe142228ad2 +0 -0
  66. data/test/dummy/tmp/cache/assets/test/sprockets/4a1d4e32cd7b9fd1c62bfd553ae56051 +0 -0
  67. data/test/dummy/tmp/cache/assets/test/sprockets/4d3cadf0ab91b4a77adf81282a5550a1 +0 -0
  68. data/test/dummy/tmp/cache/assets/test/sprockets/{1f15c49a05b13c3a7ee50d2ac3900f38 → 571f65ff5db500e9ad70fc11060270a8} +0 -0
  69. data/test/dummy/tmp/cache/assets/test/sprockets/660bc633c8899c6c1b20514637fa0169 +0 -0
  70. data/test/dummy/tmp/cache/assets/test/sprockets/67afcba9807cd5e57b80b5fdf9f26758 +0 -0
  71. data/test/dummy/tmp/cache/assets/test/sprockets/{47fb03bce147145961cb3deeafca54d7 → 7190c4707840ff0d7c60920ae9739c79} +0 -0
  72. data/test/dummy/tmp/cache/assets/test/sprockets/7ca4966e0a480430a858a7ab74518c75 +0 -0
  73. data/test/dummy/tmp/cache/assets/test/sprockets/83030d43d9bff738a1a01366d61d7691 +0 -0
  74. data/test/dummy/tmp/cache/assets/test/sprockets/83af35bb6b852de883a26a9458fd4e3a +0 -0
  75. data/test/dummy/tmp/cache/assets/test/sprockets/8adfb5e646dca2c629e5d3dc88e2c2e9 +0 -0
  76. data/test/dummy/tmp/cache/assets/test/sprockets/9160f792acb62d1f7721c714681fcfe6 +0 -0
  77. data/test/dummy/tmp/cache/assets/test/sprockets/a6a0d79927cb0ec286aa0afb9812685c +0 -0
  78. data/test/dummy/tmp/cache/assets/test/sprockets/bb4a2293175928af3e23c47488077098 +0 -0
  79. data/test/dummy/tmp/cache/assets/test/sprockets/bf689240392e7355c0de5cfd47272146 +0 -0
  80. data/test/dummy/tmp/cache/assets/test/sprockets/{66c0ce49a71def0f29dcf0bcaf8fb28d → c4eca8931f39b747ea9f916a3b42d8da} +0 -0
  81. data/test/dummy/tmp/cache/assets/test/sprockets/cdbe9110f011148cc7a1f172dc18a883 +0 -0
  82. data/test/dummy/tmp/cache/assets/test/sprockets/d5a48c6656341c56cac8a8e42bb925a5 +0 -0
  83. data/test/dummy/tmp/cache/assets/test/sprockets/{d4cb455bee790d041fb3111fb1636531 → d5b1e7219e29c039a8ebb0a4e5b19a2b} +0 -0
  84. data/test/dummy/tmp/cache/assets/test/sprockets/{ce7582379ff02bb25cee3ac0486fe1f2 → d5ce5243d4ca4a3739a15e60e3c685ba} +0 -0
  85. data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  86. data/test/dummy/tmp/cache/assets/test/sprockets/de0932670a6c856bc6eda1586fd29061 +0 -0
  87. data/test/dummy/tmp/cache/assets/test/sprockets/e9abb671d48f6ff2be6ffb463ea652bf +0 -0
  88. data/test/dummy/tmp/cache/assets/test/sprockets/{e36a853a1349d7f33f6c0083c05f897b → fb43f1b92235ac87bedc9ac12be00188} +0 -0
  89. data/test/dummy/tmp/generator_test_output/app/views/{post.js.es6 → post.es6} +0 -0
  90. data/test/fixtures/vcr_cassettes/fetch_ember_beta.yml +39609 -0
  91. data/test/fixtures/vcr_cassettes/fetch_ember_canary.yml +41381 -0
  92. data/test/fixtures/vcr_cassettes/fetch_ember_data_tagged.yml +4283 -0
  93. data/test/fixtures/vcr_cassettes/fetch_ember_release.yml +38824 -0
  94. data/test/fixtures/vcr_cassettes/fetch_ember_tagged.yml +29518 -0
  95. data/test/generators/bootstrap_generator_test.rb +12 -4
  96. data/test/generators/component_generator_test.rb +6 -6
  97. data/test/generators/controller_generator_test.rb +5 -5
  98. data/test/generators/install_generator_test.rb +163 -0
  99. data/test/generators/model_generator_test.rb +29 -7
  100. data/test/generators/resource_generator_test.rb +6 -6
  101. data/test/generators/route_generator_test.rb +1 -1
  102. data/test/generators/scaffold_generator_test.rb +59 -10
  103. data/test/generators/serializer_override_test.rb +19 -0
  104. data/test/generators/view_generator_test.rb +6 -6
  105. data/test/integration/engine_test.rb +4 -0
  106. data/test/support/generator_test_support.rb +2 -2
  107. data/vendor/assets/javascripts/{app.js.es6.erb → app.es6.erb} +3 -1
  108. data/vendor/assets/javascripts/ember-appkit/index.js +0 -1
  109. data/vendor/assets/javascripts/ember-appkit/resolver.js +235 -32
  110. data/vendor/assets/javascripts/fake_xml_http_request.js +473 -0
  111. data/vendor/assets/javascripts/fakehr.js +52 -0
  112. data/vendor/assets/javascripts/httpRespond.js +24 -0
  113. metadata +126 -55
  114. data/lib/generators/templates/adapter.js.erb +0 -3
  115. data/test/dummy/tmp/cache/assets/test/sprockets/10fe949cc641775f5630b5dad6deb5fc +0 -0
  116. data/test/dummy/tmp/cache/assets/test/sprockets/129b422236f443119233cdb0a4525a06 +0 -0
  117. data/test/dummy/tmp/cache/assets/test/sprockets/25b8b60341168a02f48dabd2b0aa82ad +0 -0
  118. data/test/dummy/tmp/cache/assets/test/sprockets/827fafc13575b345cc572fd041ef1fba +0 -0
  119. data/test/dummy/tmp/cache/assets/test/sprockets/83a9a7d15d681a382363d2bccb9528bb +0 -0
  120. data/test/dummy/tmp/cache/assets/test/sprockets/de94a60b438eb5bf57653f3a220acd80 +0 -0
  121. data/vendor/assets/javascripts/ember-appkit/resolver_ext.js +0 -40
@@ -11,8 +11,8 @@ module Ember
11
11
  class_option :without_template, :type => :boolean, :default => false, :desc => "Create template for this view"
12
12
 
13
13
  def create_view_files
14
- file_path = File.join(app_path, 'views', class_path, "#{file_name}.js.es6")
15
- template "view.js.es6", file_path
14
+ file_path = File.join(app_path, 'views', class_path, "#{file_name}.es6")
15
+ template "view.es6", file_path
16
16
  invoke('ember:template', [ name ], options) unless options[:without_template]
17
17
  end
18
18
  end
@@ -3,6 +3,7 @@
3
3
  //= require ember-appkit
4
4
  //= require_self
5
5
  //= require_tree ./adapters
6
+ //= require_tree ./serializers
6
7
  //= require router
7
8
  //= require_tree ../<%= app_path %>
8
9
  //= require_tree ./initializers
@@ -4,6 +4,8 @@
4
4
  This is useful when using canary versions of Ember to enable
5
5
  feature flags before Ember itself is loaded.
6
6
 
7
+ Example: ENV = { FEATURES: { 'query-params-new': true } };
8
+
7
9
  See the feature flags guide for details:
8
10
 
9
11
  http://emberjs.com/guides/configuring-ember/feature-flags/
@@ -2,8 +2,8 @@
2
2
  //= require ember
3
3
  //= require ember-data
4
4
 
5
- config.LOG_ACTIVE_GENERATION = true
6
- config.LOG_MODULE_RESOLVER = true
7
- config.LOG_TRANSITIONS = true
8
- config.LOG_TRANSITIONS_INTERNAL = true
9
- config.LOG_VIEW_LOOKUPS = true
5
+ config.LOG_ACTIVE_GENERATION = true;
6
+ config.LOG_MODULE_RESOLVER = true;
7
+ config.LOG_TRANSITIONS = true;
8
+ config.LOG_TRANSITIONS_INTERNAL = true;
9
+ config.LOG_VIEW_LOOKUPS = true;
@@ -5,10 +5,10 @@
5
5
  // For some configuration settings such as API keys,
6
6
  // you should read them from the environment rather
7
7
  // than checking them into version control. See also
8
- // the Figaro gem.
8
+ // the Figaro gem.
9
9
  // Keep in mind that API keys in js are visible to
10
10
  // someone poking in the browser, so never expose
11
11
  // a truly private API key in javascript.
12
12
  // my_api_key = <%= ENV['MY_API_KEY'] %>
13
13
 
14
- Ember.LOG_VERSION = false
14
+ Ember.LOG_VERSION = false;
@@ -2,4 +2,4 @@
2
2
  //= require ember
3
3
  //= require ember-data
4
4
 
5
- Ember.LOG_VERSION = false
5
+ Ember.LOG_VERSION = false;
@@ -0,0 +1,63 @@
1
+ Teaspoon.setup do |config|
2
+ # This determines where the Teaspoon routes will be mounted. Changing this to "/jasmine" would allow you to browse to
3
+ # http://localhost:3000/jasmine to run your tests.
4
+ config.mount_at = "/teaspoon"
5
+
6
+ # This defaults to Rails.root if left nil. If you're testing an engine using a dummy application it can be useful to
7
+ # set this to your engines root.. E.g. `Teaspoon::Engine.root`
8
+ config.root = nil
9
+
10
+ # These paths are appended to the Rails assets paths (relative to config.root), and by default is an array that you
11
+ # can replace or add to.
12
+ config.asset_paths = ["test", "test/stylesheets"]
13
+
14
+ # Fixtures are rendered through a standard controller. This means you can use things like HAML or RABL/JBuilder, etc.
15
+ # to generate fixtures within this path.
16
+ config.fixture_path = "test/fixtures"
17
+
18
+ # You can modify the default suite configuration and create new suites here. Suites can be isolated from one another.
19
+ # When defining a suite you can provide a name and a block. If the name is left blank, :default is assumed. You can
20
+ # omit various directives and the defaults will be used.
21
+ #
22
+ # To run a specific suite
23
+ # - in the browser: http://localhost/teaspoon/[suite_name]
24
+ # - from the command line: rake teaspoon suite=[suite_name]
25
+ config.suite do |suite|
26
+ suite.boot_partial = 'eak_rails'
27
+
28
+ # You can specify a file matcher and all matching files will be loaded when the suite is run. It's important that these files are serve-able from sprockets.
29
+ #
30
+ # Note: Can also be set to nil.
31
+ suite.matcher = "test/**/*_test.{js,js.coffee,es6,coffee}"
32
+
33
+ # Each suite can load a different helper, which can in turn require additional files. This file is loaded before
34
+ # your tests are loaded, and can be used as a manifest.
35
+ suite.helper = "test_helper"
36
+
37
+ # These are the core Teaspoon javascripts. It's strongly encouraged to include only the base files here. You can
38
+ # require other support libraries in your test helper, which allows you to change them without having to restart the
39
+ # server.
40
+ #
41
+ # Available frameworks: teaspoon-jasmine, teaspoon-mocha, teaspoon-qunit
42
+ #
43
+ # Note: To use the CoffeeScript source files use `"teaspoon/qunit"` etc.
44
+ suite.javascripts = ["teaspoon-qunit"]
45
+
46
+ # If you want to change how Teaspoon looks, or include your own stylesheets you can do that here. The default is the
47
+ # stylesheet for the HTML reporter.
48
+ suite.stylesheets = ["teaspoon"]
49
+
50
+ # When running coverage reports, you probably want to exclude libraries that you're not <testing.
51
+ # Accepts an array of filenames or regular expressions. The default is to exclude assets from vendors or gems.
52
+ suite.no_coverage = [%r{/lib/ruby/gems/}, %r{/vendor/assets/}, %r{/support/}, %r{/(.+)_helper.}]
53
+ # suite.no_coverage << "jquery.min.js" # excludes jquery from coverage reports
54
+
55
+ end
56
+
57
+ # Example suite. Since we're just filtering to files already within the root test/javascripts, these files will also
58
+ # be run in the default suite -- but can be focused into a more specific suite.
59
+ #config.suite :targeted do |suite|
60
+ # suite.matcher = "test/javascripts/targeted/*_test.{js,js.coffee,coffee}"
61
+ #end
62
+
63
+ end if defined?(Teaspoon) && Teaspoon.respond_to?(:setup) # let Teaspoon be undefined outside of development/test/asset groups
@@ -1,6 +1,6 @@
1
1
  export default Ember.Route.extend({
2
2
  model: function(params) {
3
- return this.store.find('<%= file_name.singularize -%>', params.<%= file_name.singularize -%>_id);
3
+ return this.store.find('<%= require_name.singularize -%>', params.<%= file_name.singularize -%>_id);
4
4
  },
5
5
  deactivate: function() {
6
6
  var model = this.get('controller.model');
@@ -1,5 +1,5 @@
1
1
  export default Ember.Route.extend({
2
2
  model: function() {
3
- return this.store.find('<%= file_name.singularize -%>');
3
+ return this.store.find('<%= require_name.singularize -%>');
4
4
  }
5
5
  });
@@ -1,6 +1,6 @@
1
1
  export default Ember.Route.extend({
2
2
  model: function() {
3
- return this.store.createRecord('<%= file_name.singularize -%>');
3
+ return this.store.createRecord('<%= require_name.singularize -%>');
4
4
  },
5
5
  deactivate: function() {
6
6
  var model = this.get('controller.model');
@@ -1,6 +1,6 @@
1
1
  export default Ember.Route.extend({
2
2
  model: function(params) {
3
- return this.store.find('<%= file_name.singularize -%>', params.<%= file_name.singularize -%>_id);
3
+ return this.store.find('<%= require_name.singularize -%>', params.<%= file_name.singularize -%>_id);
4
4
  },
5
5
  actions: {
6
6
  destroyRecord: function(model) {
@@ -1,9 +1,8 @@
1
1
  <% attributes.each do |attribute| -%>
2
2
  <div>
3
- <label for=""><%= attribute[:name].titleize -%></label>
4
- {{input value=<%= attribute[:name].camelize(:lower) -%>}}
3
+ <label><%= attribute[:name].titleize -%> {{input value=<%= attribute[:name].camelize(:lower) -%> class='<%= file_name.dasherize -%>-<%= attribute[:name].dasherize -%>'}}</label>
5
4
  </div>
6
5
  <% end -%>
7
6
 
8
- <button type="submit" {{action save this}}>Save</button>
9
- <button type="submit" {{action cancel this}}>Cancel</button>
7
+ <button type="submit" {{action 'save' this}}>Save</button>
8
+ <button type="submit" {{action 'cancel' this}}>Cancel</button>
@@ -10,10 +10,10 @@
10
10
  <% end -%>
11
11
  </tr>
12
12
  {{#each}}
13
- <tr>
13
+ <tr class='<%= file_name.dasherize -%>'>
14
14
  <td>{{link-to id '<%= file_name.pluralize -%>.show' this}}</td>
15
15
  <% attributes.each do |attribute| -%>
16
- <td>{{<%= attribute[:name] -%>}}</td>
16
+ <td>{{<%= attribute[:name].camelize(:lower) -%>}}</td>
17
17
  <% end -%>
18
18
  </tr>
19
19
  {{/each}}
@@ -1,9 +1,9 @@
1
1
  <h3>{{id}}</h3>
2
2
 
3
- <p>{{link-to 'Edit' '<%= file_name.pluralize -%>.edit' this}} <button {{action destroyRecord this}}>Destroy</button></p>
3
+ <p>{{link-to 'Edit' '<%= file_name.pluralize -%>.edit' this}} <button {{action 'destroyRecord' this}}>Destroy</button></p>
4
4
 
5
5
  <ul>
6
6
  <% attributes.each do |attribute| -%>
7
- <li><%= attribute[:name].titleize -%>: {{<%= attribute[:name] -%>}}</li>
7
+ <li class='<%= file_name.dasherize -%>-<%= attribute[:name].dasherize -%>'><%= attribute[:name].titleize -%>: {{<%= attribute[:name].camelize(:lower) -%>}}</li>
8
8
  <% end -%>
9
9
  </ul>
@@ -20,7 +20,7 @@ class Api::V<%= api_version %>::<%= controller_class_name %>Controller < Applica
20
20
  if @<%= orm_instance.save %>
21
21
  respond_with <%= "@#{singular_table_name}" %>, status: :created, location: [:api, :v<%= api_version %>, <%= "@#{singular_table_name}" %>]
22
22
  else
23
- render json: <%= "@#{orm_instance.errors}" %>, status: :unprocessable_entity
23
+ render json: { errors: <%= "@#{orm_instance.errors}" %> }, status: :unprocessable_entity
24
24
  end
25
25
  end
26
26
 
@@ -29,7 +29,7 @@ class Api::V<%= api_version %>::<%= controller_class_name %>Controller < Applica
29
29
  if @<%= orm_instance.update("#{singular_table_name}_params") %>
30
30
  respond_with <%= "@#{singular_table_name}" %>, status: :ok, location: [:api, :v<%= api_version %>, <%= "@#{singular_table_name}" %>]
31
31
  else
32
- render json: <%= "@#{orm_instance.errors}" %>, status: :unprocessable_entity
32
+ render json: { errors: <%= "@#{orm_instance.errors}" %> }, status: :unprocessable_entity
33
33
  end
34
34
  end
35
35
 
@@ -0,0 +1,7 @@
1
+ import <%= file_name.camelize -%> from '<%= app_path -%>/models/<%= require_name.dasherize -%>';
2
+
3
+ module('Unit - <%= file_name.camelize -%>');
4
+
5
+ test('exists', function(){
6
+ ok( <%= file_name.camelize -%>, 'Expected <%= file_name.camelize -%> to exist.');
7
+ });
@@ -0,0 +1,23 @@
1
+ import <%= config[:object] -%> from '<%= app_path -%>/routes/<%= require_name.dasherize.pluralize -%>/<%= config[:action] -%>';
2
+
3
+ var route, store;
4
+
5
+ module('Unit - <%= config[:object] -%>', {
6
+ setup: function(){
7
+ store = {};
8
+
9
+ route = <%= config[:object] -%>.create({
10
+ store: store
11
+ });
12
+ },
13
+ teardown: function(){
14
+ Ember.run(route, 'destroy');
15
+ }
16
+ });
17
+
18
+ test('it exist', function(){
19
+ expect(2);
20
+
21
+ ok(route);
22
+ ok(route instanceof Ember.Route);
23
+ });
@@ -0,0 +1,38 @@
1
+ # This file allows you to override various Teaspoon configuration directives when running from the command line. It is not
2
+ # required from within the Rails environment, so overriding directives that have been defined within the initializer
3
+ # is not possible.
4
+ #
5
+ # Set RAILS_ROOT and load the environment.
6
+ ENV["RAILS_ROOT"] = File.expand_path("../../", __FILE__)
7
+ require File.expand_path("../../config/environment", __FILE__)
8
+
9
+ # Provide default configuration.
10
+ #
11
+ # You can override various configuration directives defined here by using arguments with the teaspoon command.
12
+ #
13
+ # teaspoon --driver=selenium --suppress-log
14
+ # rake teaspoon DRIVER=selenium SUPPRESS_LOG=false
15
+ Teaspoon.setup do |config|
16
+ # Driver / Server
17
+ #config.driver = "phantomjs" # available: phantomjs, selenium
18
+ #config.server = nil # defaults to Rack::Server
19
+
20
+ # Behaviors
21
+ #config.server_timeout = 20 # timeout for starting the server
22
+ #config.server_port = nil # defaults to any open port unless specified
23
+ #config.fail_fast = true # abort after the first failing suite
24
+
25
+ # Output
26
+ #config.formatters = "dot" # available: dot, tap, tap_y, swayze_or_oprah
27
+ #config.suppress_log = false # suppress logs coming from console[log/error/debug]
28
+ #config.color = true
29
+
30
+ # Coverage (requires istanbul -- https://github.com/gotwarlost/istanbul)
31
+ #config.coverage = true
32
+ #config.coverage_reports = "text,html,cobertura"
33
+ #config.coverage_output_dir = "coverage"
34
+ #config.statements_coverage_threshold = 50
35
+ #config.functions_coverage_threshold = 50
36
+ #config.branches_coverage_threshold = 50
37
+ #config.lines_coverage_threshold = 50
38
+ end
@@ -0,0 +1,55 @@
1
+ // Teaspoon includes some support files, but you can use anything from your own support path too.
2
+ // require support/sinon
3
+ // require support/your-support-file
4
+ //
5
+ // Deferring execution
6
+ // If you're using CommonJS, RequireJS or some other asynchronous library you can defer execution. Call Teaspoon.execute()
7
+ // after everything has been loaded. Simple example of a timeout:
8
+ //
9
+ // Teaspoon.defer = true
10
+ // setTimeout(Teaspoon.execute, 1000)
11
+ //
12
+ // Manifest
13
+ // If you'd rather require your test files manually (to control order for instance) you can disable the suite matcher in
14
+ // the configuration and use this file as a manifest.
15
+ //
16
+ // For more information: http://github.com/modeset/teaspoon
17
+ //
18
+ // You can require javascript files here. A good place to start is by
19
+ // requiring your application.js.
20
+ //= require application
21
+ //= require fake_xml_http_request
22
+ //= require fakehr
23
+ //= require httpRespond
24
+
25
+ Ember.testing = true;
26
+
27
+ function exists(selector) {
28
+ return !!find(selector).length;
29
+ }
30
+
31
+ function getAssertionMessage(actual, expected, message) {
32
+ return message || QUnit.jsDump.parse(expected) + " expected but was " + QUnit.jsDump.parse(actual);
33
+ }
34
+
35
+ function equal(actual, expected, message) {
36
+ message = getAssertionMessage(actual, expected, message);
37
+ QUnit.equal.call(this, actual, expected, message);
38
+ }
39
+
40
+ function strictEqual(actual, expected, message) {
41
+ message = getAssertionMessage(actual, expected, message);
42
+ QUnit.strictEqual.call(this, actual, expected, message);
43
+ }
44
+
45
+ window.exists = exists;
46
+ window.equal = equal;
47
+ window.strictEqual = strictEqual;
48
+
49
+ Ember.Test.registerHelper('shouldHaveElementWithCount',
50
+ function(app, selector, n, context) {
51
+ var el = findWithAssert(selector, context);
52
+ var count = el.length;
53
+ equal(n, count, "found " + count + " times");
54
+ }
55
+ );
@@ -0,0 +1,3 @@
1
+ export default DS.ActiveModelAdapter.extend({
2
+ namespace: 'api/v<%= Rails.application.config.ember.api_version %>'
3
+ });
@@ -3,6 +3,7 @@
3
3
  //= require ember-appkit
4
4
  //= require_self
5
5
  //= require_tree ./adapters
6
+ //= require_tree ./serializers
6
7
  //= require router
7
8
  //= require_tree ../app
8
9
  //= require_tree ./initializers
@@ -4,6 +4,8 @@
4
4
  This is useful when using canary versions of Ember to enable
5
5
  feature flags before Ember itself is loaded.
6
6
 
7
+ Example: ENV = { FEATURES: { 'query-params-new': true } };
8
+
7
9
  See the feature flags guide for details:
8
10
 
9
11
  http://emberjs.com/guides/configuring-ember/feature-flags/
@@ -2,8 +2,8 @@
2
2
  //= require ember
3
3
  //= require ember-data
4
4
 
5
- config.LOG_ACTIVE_GENERATION = true
6
- config.LOG_MODULE_RESOLVER = true
7
- config.LOG_TRANSITIONS = true
8
- config.LOG_TRANSITIONS_INTERNAL = true
9
- config.LOG_VIEW_LOOKUPS = true
5
+ config.LOG_ACTIVE_GENERATION = true;
6
+ config.LOG_MODULE_RESOLVER = true;
7
+ config.LOG_TRANSITIONS = true;
8
+ config.LOG_TRANSITIONS_INTERNAL = true;
9
+ config.LOG_VIEW_LOOKUPS = true;
@@ -5,10 +5,10 @@
5
5
  // For some configuration settings such as API keys,
6
6
  // you should read them from the environment rather
7
7
  // than checking them into version control. See also
8
- // the Figaro gem.
8
+ // the Figaro gem.
9
9
  // Keep in mind that API keys in js are visible to
10
10
  // someone poking in the browser, so never expose
11
11
  // a truly private API key in javascript.
12
12
  // my_api_key = <%= ENV['MY_API_KEY'] %>
13
13
 
14
- Ember.LOG_VERSION = false
14
+ Ember.LOG_VERSION = false;
@@ -2,4 +2,4 @@
2
2
  //= require ember
3
3
  //= require ember-data
4
4
 
5
- Ember.LOG_VERSION = false
5
+ Ember.LOG_VERSION = false;
@@ -9,4 +9,4 @@
9
9
 
10
10
  # Make sure your secret_key_base is kept private
11
11
  # if you're sharing your code publicly.
12
- Dummy::Application.config.secret_key_base = 'd20399e714b77996a5e66f97d4b2ab403a360272f5e17b7e6a7672745e00601faac711f88db3b0d0297ecf9986526068388b4ee6e9fe3017c2f442a0bb75721b'
12
+ Dummy::Application.config.secret_key_base = '18e06c38c91b6ee15b29a6c2d6425df7b6cccc922b38927f832e784bafeb51e87e24c6322f68be0df79b5fc4e3192ef72f6bf4e0efb0f2c5aa076618d62a0d2f'
@@ -0,0 +1,63 @@
1
+ Teaspoon.setup do |config|
2
+ # This determines where the Teaspoon routes will be mounted. Changing this to "/jasmine" would allow you to browse to
3
+ # http://localhost:3000/jasmine to run your tests.
4
+ config.mount_at = "/teaspoon"
5
+
6
+ # This defaults to Rails.root if left nil. If you're testing an engine using a dummy application it can be useful to
7
+ # set this to your engines root.. E.g. `Teaspoon::Engine.root`
8
+ config.root = nil
9
+
10
+ # These paths are appended to the Rails assets paths (relative to config.root), and by default is an array that you
11
+ # can replace or add to.
12
+ config.asset_paths = ["test", "test/stylesheets"]
13
+
14
+ # Fixtures are rendered through a standard controller. This means you can use things like HAML or RABL/JBuilder, etc.
15
+ # to generate fixtures within this path.
16
+ config.fixture_path = "test/fixtures"
17
+
18
+ # You can modify the default suite configuration and create new suites here. Suites can be isolated from one another.
19
+ # When defining a suite you can provide a name and a block. If the name is left blank, :default is assumed. You can
20
+ # omit various directives and the defaults will be used.
21
+ #
22
+ # To run a specific suite
23
+ # - in the browser: http://localhost/teaspoon/[suite_name]
24
+ # - from the command line: rake teaspoon suite=[suite_name]
25
+ config.suite do |suite|
26
+ suite.boot_partial = 'eak_rails'
27
+
28
+ # You can specify a file matcher and all matching files will be loaded when the suite is run. It's important that these files are serve-able from sprockets.
29
+ #
30
+ # Note: Can also be set to nil.
31
+ suite.matcher = "test/**/*_test.{js,js.coffee,es6,coffee}"
32
+
33
+ # Each suite can load a different helper, which can in turn require additional files. This file is loaded before
34
+ # your tests are loaded, and can be used as a manifest.
35
+ suite.helper = "test_helper"
36
+
37
+ # These are the core Teaspoon javascripts. It's strongly encouraged to include only the base files here. You can
38
+ # require other support libraries in your test helper, which allows you to change them without having to restart the
39
+ # server.
40
+ #
41
+ # Available frameworks: teaspoon-jasmine, teaspoon-mocha, teaspoon-qunit
42
+ #
43
+ # Note: To use the CoffeeScript source files use `"teaspoon/qunit"` etc.
44
+ suite.javascripts = ["teaspoon-qunit"]
45
+
46
+ # If you want to change how Teaspoon looks, or include your own stylesheets you can do that here. The default is the
47
+ # stylesheet for the HTML reporter.
48
+ suite.stylesheets = ["teaspoon"]
49
+
50
+ # When running coverage reports, you probably want to exclude libraries that you're not <testing.
51
+ # Accepts an array of filenames or regular expressions. The default is to exclude assets from vendors or gems.
52
+ suite.no_coverage = [%r{/lib/ruby/gems/}, %r{/vendor/assets/}, %r{/support/}, %r{/(.+)_helper.}]
53
+ # suite.no_coverage << "jquery.min.js" # excludes jquery from coverage reports
54
+
55
+ end
56
+
57
+ # Example suite. Since we're just filtering to files already within the root test/javascripts, these files will also
58
+ # be run in the default suite -- but can be focused into a more specific suite.
59
+ #config.suite :targeted do |suite|
60
+ # suite.matcher = "test/javascripts/targeted/*_test.{js,js.coffee,coffee}"
61
+ #end
62
+
63
+ end if defined?(Teaspoon) && Teaspoon.respond_to?(:setup) # let Teaspoon be undefined outside of development/test/asset groups