tennpipes-init 3.6.6

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 (167) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +20 -0
  3. data/README.rdoc +163 -0
  4. data/Rakefile +1 -0
  5. data/bin/tennpipes-init +16 -0
  6. data/lib/tennpipes-init.rb +73 -0
  7. data/lib/tennpipes-init/command.rb +18 -0
  8. data/lib/tennpipes-init/generators/actions.rb +630 -0
  9. data/lib/tennpipes-init/generators/app.rb +75 -0
  10. data/lib/tennpipes-init/generators/app/app.rb.tt +72 -0
  11. data/lib/tennpipes-init/generators/app/app.rb.tt~ +72 -0
  12. data/lib/tennpipes-init/generators/cli.rb +57 -0
  13. data/lib/tennpipes-init/generators/component.rb +73 -0
  14. data/lib/tennpipes-init/generators/components/actions.rb +208 -0
  15. data/lib/tennpipes-init/generators/components/mocks/mocha.rb +10 -0
  16. data/lib/tennpipes-init/generators/components/mocks/rr.rb +13 -0
  17. data/lib/tennpipes-init/generators/components/orms/activerecord.rb +201 -0
  18. data/lib/tennpipes-init/generators/components/orms/couchrest.rb +55 -0
  19. data/lib/tennpipes-init/generators/components/orms/datamapper.rb +140 -0
  20. data/lib/tennpipes-init/generators/components/orms/dynamoid.rb +67 -0
  21. data/lib/tennpipes-init/generators/components/orms/minirecord.rb +165 -0
  22. data/lib/tennpipes-init/generators/components/orms/mongoid.rb +113 -0
  23. data/lib/tennpipes-init/generators/components/orms/mongomapper.rb +43 -0
  24. data/lib/tennpipes-init/generators/components/orms/mongomatic.rb +84 -0
  25. data/lib/tennpipes-init/generators/components/orms/ohm.rb +65 -0
  26. data/lib/tennpipes-init/generators/components/orms/ripple.rb +75 -0
  27. data/lib/tennpipes-init/generators/components/orms/sequel.rb +99 -0
  28. data/lib/tennpipes-init/generators/components/renderers/erb.rb +3 -0
  29. data/lib/tennpipes-init/generators/components/renderers/haml.rb +3 -0
  30. data/lib/tennpipes-init/generators/components/renderers/liquid.rb +4 -0
  31. data/lib/tennpipes-init/generators/components/renderers/slim.rb +3 -0
  32. data/lib/tennpipes-init/generators/components/scripts/dojo.rb +10 -0
  33. data/lib/tennpipes-init/generators/components/scripts/extcore.rb +10 -0
  34. data/lib/tennpipes-init/generators/components/scripts/jquery.rb +10 -0
  35. data/lib/tennpipes-init/generators/components/scripts/mootools.rb +10 -0
  36. data/lib/tennpipes-init/generators/components/scripts/prototype.rb +12 -0
  37. data/lib/tennpipes-init/generators/components/scripts/rightjs.rb +10 -0
  38. data/lib/tennpipes-init/generators/components/stylesheets/compass.rb +39 -0
  39. data/lib/tennpipes-init/generators/components/stylesheets/compass/application.scss +43 -0
  40. data/lib/tennpipes-init/generators/components/stylesheets/compass/partials/_base.scss +12 -0
  41. data/lib/tennpipes-init/generators/components/stylesheets/less.rb +25 -0
  42. data/lib/tennpipes-init/generators/components/stylesheets/sass.rb +15 -0
  43. data/lib/tennpipes-init/generators/components/stylesheets/scss.rb +16 -0
  44. data/lib/tennpipes-init/generators/components/tests/bacon.rb +103 -0
  45. data/lib/tennpipes-init/generators/components/tests/cucumber.rb +86 -0
  46. data/lib/tennpipes-init/generators/components/tests/minitest.rb +110 -0
  47. data/lib/tennpipes-init/generators/components/tests/riot.rb +117 -0
  48. data/lib/tennpipes-init/generators/components/tests/rspec.rb +111 -0
  49. data/lib/tennpipes-init/generators/components/tests/shoulda.rb +114 -0
  50. data/lib/tennpipes-init/generators/components/tests/steak.rb +114 -0
  51. data/lib/tennpipes-init/generators/controller.rb +77 -0
  52. data/lib/tennpipes-init/generators/helper.rb +50 -0
  53. data/lib/tennpipes-init/generators/mailer.rb +52 -0
  54. data/lib/tennpipes-init/generators/migration.rb +43 -0
  55. data/lib/tennpipes-init/generators/model.rb +113 -0
  56. data/lib/tennpipes-init/generators/plugin.rb +67 -0
  57. data/lib/tennpipes-init/generators/project.rb +160 -0
  58. data/lib/tennpipes-init/generators/project/config.ru +9 -0
  59. data/lib/tennpipes-init/generators/project/config/apps.rb.tt +35 -0
  60. data/lib/tennpipes-init/generators/project/config/boot.rb +49 -0
  61. data/lib/tennpipes-init/generators/project/public/favicon.ico +0 -0
  62. data/lib/tennpipes-init/generators/project/public/images/booking.com.png +0 -0
  63. data/lib/tennpipes-init/generators/project/public/images/causes.png +0 -0
  64. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bg.jpg +0 -0
  65. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bluelogo.png +0 -0
  66. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bluelogo.svg +68 -0
  67. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_whitelogo.png +0 -0
  68. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_whitelogo.svg +65 -0
  69. data/lib/tennpipes-init/generators/project/public/images/forever21.png +0 -0
  70. data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.eot +0 -0
  71. data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.svg +970 -0
  72. data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.ttf +0 -0
  73. data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.woff +0 -0
  74. data/lib/tennpipes-init/generators/project/public/images/icons/tennpipes-icons.css +598 -0
  75. data/lib/tennpipes-init/generators/project/public/images/image1.jpg +0 -0
  76. data/lib/tennpipes-init/generators/project/public/images/image11.jpg +0 -0
  77. data/lib/tennpipes-init/generators/project/public/images/image2.jpg +0 -0
  78. data/lib/tennpipes-init/generators/project/public/images/image3.jpg +0 -0
  79. data/lib/tennpipes-init/generators/project/public/images/intuit.png +0 -0
  80. data/lib/tennpipes-init/generators/project/public/images/krispykreme.png +0 -0
  81. data/lib/tennpipes-init/generators/project/public/images/placeholders/README.md +302 -0
  82. data/lib/tennpipes-init/generators/project/public/images/placeholders/bower.json +4 -0
  83. data/lib/tennpipes-init/generators/project/public/images/placeholders/composer.json +34 -0
  84. data/lib/tennpipes-init/generators/project/public/images/placeholders/gulpfile.js +92 -0
  85. data/lib/tennpipes-init/generators/project/public/images/placeholders/holder.js +1920 -0
  86. data/lib/tennpipes-init/generators/project/public/images/placeholders/holder.min.js +12 -0
  87. data/lib/tennpipes-init/generators/project/public/images/placeholders/package.json +46 -0
  88. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/holder.js +1411 -0
  89. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/augment.js +27 -0
  90. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/ondomready.js +155 -0
  91. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/polyfills.js +177 -0
  92. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/scenegraph.js +101 -0
  93. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/utils.js +129 -0
  94. data/lib/tennpipes-init/generators/project/public/images/priceline.com.png +0 -0
  95. data/lib/tennpipes-init/generators/project/public/images/stripe.png +0 -0
  96. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes.min.js +6081 -0
  97. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.abide.js +340 -0
  98. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.accordion.js +67 -0
  99. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.alert.js +43 -0
  100. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.clearing.js +556 -0
  101. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.dropdown.js +448 -0
  102. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.equalizer.js +77 -0
  103. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.interchange.js +354 -0
  104. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.joyride.js +932 -0
  105. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.js +703 -0
  106. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.magellan.js +203 -0
  107. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.offcanvas.js +152 -0
  108. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.orbit.js +476 -0
  109. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.reveal.js +471 -0
  110. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.slider.js +263 -0
  111. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.tab.js +237 -0
  112. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.tooltip.js +307 -0
  113. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.topbar.js +452 -0
  114. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/fastclick.js +8 -0
  115. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/jquery.cookie.js +8 -0
  116. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/jquery.js +26 -0
  117. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/modernizr.js +8 -0
  118. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/placeholder.js +2 -0
  119. data/lib/tennpipes-init/generators/project/public/stylesheets/app.css~ +178 -0
  120. data/lib/tennpipes-init/generators/project/public/stylesheets/app1.css~ +177 -0
  121. data/lib/tennpipes-init/generators/project/public/stylesheets/ennkeypee.css +214 -0
  122. data/lib/tennpipes-init/generators/project/public/stylesheets/ennkeypee.css~ +214 -0
  123. data/lib/tennpipes-init/generators/project/public/stylesheets/normalize.css +427 -0
  124. data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.css +6201 -0
  125. data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.css~ +6201 -0
  126. data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.min.css +1 -0
  127. data/lib/tennpipes-init/generators/runner.rb +139 -0
  128. data/lib/tennpipes-init/generators/task.rb +45 -0
  129. data/lib/tennpipes-init/generators/templates/Gemfile.tt +32 -0
  130. data/lib/tennpipes-init/generators/templates/Rakefile.tt +8 -0
  131. data/lib/tennpipes-init/generators/templates/controller.rb.tt +22 -0
  132. data/lib/tennpipes-init/generators/templates/gem/README.md.tt +29 -0
  133. data/lib/tennpipes-init/generators/templates/gem/gemspec.tt +19 -0
  134. data/lib/tennpipes-init/generators/templates/gem/lib/libname.tt +6 -0
  135. data/lib/tennpipes-init/generators/templates/gem/lib/libname/version.tt +3 -0
  136. data/lib/tennpipes-init/generators/templates/helper.rb.tt +13 -0
  137. data/lib/tennpipes-init/generators/templates/initializer.rb.tt +5 -0
  138. data/lib/tennpipes-init/generators/templates/mailer.rb.tt +54 -0
  139. data/lib/tennpipes-init/generators/templates/project_bin.tt +14 -0
  140. data/lib/tennpipes-init/generators/templates/task.rb.tt +7 -0
  141. data/lib/tennpipes-init/tennpipes-tasks/activerecord.rb +377 -0
  142. data/lib/tennpipes-init/tennpipes-tasks/database.rb +12 -0
  143. data/lib/tennpipes-init/tennpipes-tasks/datamapper.rb +94 -0
  144. data/lib/tennpipes-init/tennpipes-tasks/minirecord.rb +19 -0
  145. data/lib/tennpipes-init/tennpipes-tasks/mongoid.rb +215 -0
  146. data/lib/tennpipes-init/tennpipes-tasks/mongomapper.rb +55 -0
  147. data/lib/tennpipes-init/tennpipes-tasks/sequel.rb +85 -0
  148. data/lib/tennpipes-init/tennpipes-tasks/sql-helpers.rb +72 -0
  149. data/test/fixtures/admin_template.rb +7 -0
  150. data/test/fixtures/example_template.rb +15 -0
  151. data/test/fixtures/git_template.rb +4 -0
  152. data/test/fixtures/plugin_template.rb +13 -0
  153. data/test/fixtures/rake_template.rb +9 -0
  154. data/test/helper.rb +103 -0
  155. data/test/test_app_generator.rb +142 -0
  156. data/test/test_cli.rb +27 -0
  157. data/test/test_component_generator.rb +98 -0
  158. data/test/test_controller_generator.rb +272 -0
  159. data/test/test_generator.rb +13 -0
  160. data/test/test_helper_generator.rb +133 -0
  161. data/test/test_mailer_generator.rb +69 -0
  162. data/test/test_migration_generator.rb +222 -0
  163. data/test/test_model_generator.rb +553 -0
  164. data/test/test_plugin_generator.rb +152 -0
  165. data/test/test_project_generator.rb +757 -0
  166. data/test/test_task_generator.rb +53 -0
  167. metadata +285 -0
@@ -0,0 +1,86 @@
1
+ apply_component_for(:rspec, :test)
2
+
3
+ CUCUMBER_SETUP = (<<-TEST) unless defined?(CUCUMBER_SETUP)
4
+ RACK_ENV = 'test' unless defined?(RACK_ENV)
5
+ require File.expand_path(File.dirname(__FILE__) + "/../../config/boot")
6
+ Dir[File.expand_path(File.dirname(__FILE__) + "/../app/helpers/**/*.rb")].each(&method(:require))
7
+
8
+ require 'capybara/cucumber'
9
+ require 'rspec/expectations'
10
+
11
+ ##
12
+ # You can handle all tennpipes applications using instead:
13
+ # Tennpipes.application
14
+ Capybara.app = CLASS_NAME.tap { |app| }
15
+ TEST
16
+
17
+ CUCUMBER_YML = (<<-TEST) unless defined?(CUCUMBER_YML)
18
+ default: --tags ~@wip --strict features
19
+ html_report: --tags ~@wip --strict --format html --out=features_report.html features
20
+ TEST
21
+
22
+ CUCUMBER_FEATURE = (<<-TEST) unless defined?(CUCUMBER_FEATURE)
23
+ Feature: Addition
24
+ In order to avoid silly mistakes
25
+ As a math idiot
26
+ I want to be told the sum of two numbers
27
+
28
+ Scenario: Add two numbers
29
+ Given I visit the calculator page
30
+ And I fill in '50' for 'first'
31
+ And I fill in '70' for 'second'
32
+ When I press 'Add'
33
+ Then I should see 'Answer: 120'
34
+ TEST
35
+
36
+ CUCUMBER_STEP = (<<-TEST) unless defined?(CUCUMBER_STEP)
37
+ Given /^I visit the calculator page$/ do
38
+ visit '/add'
39
+ end
40
+
41
+ Given /^I fill in '(.*)' for '(.*)'$/ do |value, field|
42
+ fill_in(field, :with => value)
43
+ end
44
+
45
+ When /^I press '(.*)'$/ do |name|
46
+ click_button(name)
47
+ end
48
+
49
+ Then /^I should see '(.*)'$/ do |text|
50
+ page.should have_content(text)
51
+ end
52
+ TEST
53
+
54
+ CUCUMBER_URL = (<<-TEST) unless defined?(CUCUMBER_URL)
55
+ module Cucumber
56
+ module Web
57
+ module URLs
58
+ def url_for(*names)
59
+ Capybara.app.url_for(*names)
60
+ end
61
+ alias_method :url, :url_for
62
+
63
+ def absolute_url_for(*names)
64
+ "http://www.example.com" + Capybara.app.url_for(*names)
65
+ end
66
+ alias_method :absolute_url, :absolute_url_for
67
+ end
68
+ end
69
+ end
70
+
71
+ World(Cucumber::Web::URLs)
72
+ TEST
73
+
74
+ def setup_test
75
+ require_dependencies 'rack-test', :require => 'rack/test', :group => 'test'
76
+ require_dependencies 'cucumber', :group => 'test'
77
+ require_dependencies 'capybara', :group => 'test'
78
+ insert_test_suite_setup CUCUMBER_SETUP, :path => "features/support/env.rb"
79
+ create_file destination_root("features/support/url.rb"), CUCUMBER_URL
80
+ create_file destination_root("features/add.feature"), CUCUMBER_FEATURE
81
+ create_file destination_root("features/step_definitions/add_steps.rb"), CUCUMBER_STEP
82
+ create_file destination_root("cucumber.yml"), CUCUMBER_YML
83
+ require_dependencies 'rspec', :group => 'test'
84
+ insert_test_suite_setup RSPEC_SETUP, :path => "spec/spec_helper.rb"
85
+ create_file destination_root("spec/spec.rake"), RSPEC_RAKE
86
+ end
@@ -0,0 +1,110 @@
1
+ MINITEST_SETUP = (<<-TEST).gsub(/^ {10}/, '') unless defined?(MINITEST_SETUP)
2
+ RACK_ENV = 'test' unless defined?(RACK_ENV)
3
+ require File.expand_path(File.dirname(__FILE__) + "/../config/boot")
4
+ Dir[File.expand_path(File.dirname(__FILE__) + "/../app/helpers/**/*.rb")].each(&method(:require))
5
+
6
+ class MiniTest::Spec
7
+ include Rack::Test::Methods
8
+
9
+ # You can use this method to custom specify a Rack app
10
+ # you want rack-test to invoke:
11
+ #
12
+ # app CLASS_NAME
13
+ # app CLASS_NAME.tap { |a| }
14
+ # app(CLASS_NAME) do
15
+ # set :foo, :bar
16
+ # end
17
+ #
18
+ def app(app = nil, &blk)
19
+ @app ||= block_given? ? app.instance_eval(&blk) : app
20
+ @app ||= Tennpipes.application
21
+ end
22
+ end
23
+ TEST
24
+
25
+ MINITEST_RAKE = (<<-TEST).gsub(/^ {10}/, '') unless defined?(MINITEST_RAKE)
26
+ require 'rake/testtask'
27
+
28
+ test_tasks = Dir['test/*/'].map { |d| File.basename(d) }
29
+
30
+ test_tasks.each do |folder|
31
+ Rake::TestTask.new("test:\#{folder}") do |test|
32
+ test.pattern = "test/\#{folder}/**/*_test.rb"
33
+ test.verbose = true
34
+ end
35
+ end
36
+
37
+ desc "Run application test suite"
38
+ task 'test' => test_tasks.map { |f| "test:\#{f}" }
39
+ TEST
40
+
41
+ MINITEST_CONTROLLER_TEST = (<<-TEST).gsub(/^ {10}/, '') unless defined?(MINITEST_CONTROLLER_TEST)
42
+ require File.expand_path(File.dirname(__FILE__) + '/../../test_config.rb')
43
+
44
+ describe "!PATH!" do
45
+ before do
46
+ get "!EXPANDED_PATH!"
47
+ end
48
+
49
+ it "should return hello world text" do
50
+ assert_equal "Hello World", last_response.body
51
+ end
52
+ end
53
+ TEST
54
+
55
+ MINITEST_MODEL_TEST = (<<-TEST).gsub(/^ {10}/, '') unless defined?(MINITEST_MODEL_TEST)
56
+ require File.expand_path(File.dirname(__FILE__) + '!PATH!/test_config.rb')
57
+
58
+ describe "!NAME! Model" do
59
+ it 'can construct a new instance' do
60
+ @!DNAME! = !NAME!.new
61
+ refute_nil @!DNAME!
62
+ end
63
+ end
64
+ TEST
65
+
66
+ MINITEST_HELPER_TEST = (<<-TEST) unless defined?(MINITEST_HELPER_TEST)
67
+ require File.expand_path(File.dirname(__FILE__) + '!PATH!/test_config.rb')
68
+
69
+ describe "!NAME!" do
70
+ before do
71
+ @helpers = Class.new
72
+ @helpers.extend !NAME!
73
+ end
74
+
75
+ def helpers
76
+ @helpers
77
+ end
78
+
79
+ it "should return nil" do
80
+ assert_equal nil, helpers.foo
81
+ end
82
+ end
83
+ TEST
84
+
85
+ def setup_test
86
+ require_dependencies 'rack-test', :require => 'rack/test', :group => 'test'
87
+ require_dependencies 'minitest', :require => 'minitest/autorun', :group => 'test'
88
+ insert_test_suite_setup MINITEST_SETUP
89
+ create_file destination_root("test/test.rake"), MINITEST_RAKE
90
+ end
91
+
92
+ def generate_controller_test(name, path)
93
+ minitest_contents = MINITEST_CONTROLLER_TEST.gsub(/!PATH!/, path).gsub(/!EXPANDED_PATH!/, path.gsub(/:\w+?_id/, "1"))
94
+ controller_test_path = File.join('test',options[:app],'controllers',"#{name.to_s.underscore}_controller_test.rb")
95
+ create_file destination_root(controller_test_path), minitest_contents, :skip => true
96
+ end
97
+
98
+ def generate_model_test(name)
99
+ minitest_contents = MINITEST_MODEL_TEST.gsub(/!NAME!/, name.to_s.underscore.camelize).gsub(/!DNAME!/, name.to_s.underscore)
100
+ minitest_contents.gsub!(/!PATH!/, recognize_path)
101
+ model_test_path = File.join('test',options[:app],'models',"#{name.to_s.underscore}_test.rb")
102
+ create_file destination_root(model_test_path), minitest_contents, :skip => true
103
+ end
104
+
105
+ def generate_helper_test(name, project_name, app_name)
106
+ minitest_contents = MINITEST_HELPER_TEST.gsub(/!NAME!/, "#{project_name}::#{app_name}::#{name}")
107
+ minitest_contents.gsub!(/!PATH!/, recognize_path)
108
+ helper_spec_path = File.join('test', options[:app], 'helpers', "#{name.underscore}_test.rb")
109
+ create_file destination_root(helper_spec_path), minitest_contents, :skip => true
110
+ end
@@ -0,0 +1,117 @@
1
+ RIOT_SETUP = (<<-TEST).gsub(/^ {10}/, '') unless defined?(RIOT_SETUP)
2
+ RACK_ENV = 'test' unless defined?(RACK_ENV)
3
+ require File.expand_path(File.dirname(__FILE__) + "/../config/boot")
4
+ Dir[File.expand_path(File.dirname(__FILE__) + "/../app/helpers/**/*.rb")].each(&method(:require))
5
+
6
+ # Specify your app using the #app helper inside a context.
7
+ # Takes either an app class or a block argument.
8
+ # app { Tennpipes.application }
9
+ # app { CLASS_NAME.tap { |app| } }
10
+
11
+ class Riot::Situation
12
+ include Rack::Test::Methods
13
+
14
+ # You can use this method to custom specify a Rack app
15
+ # you want rack-test to invoke:
16
+ #
17
+ # app CLASS_NAME
18
+ # app CLASS_NAME.tap { |a| }
19
+ # app(CLASS_NAME) do
20
+ # set :foo, :bar
21
+ # end
22
+ #
23
+ def app(app = nil, &blk)
24
+ @app ||= block_given? ? app.instance_eval(&blk) : app
25
+ @app ||= Tennpipes.application
26
+ end
27
+ end
28
+
29
+ class Riot::Context
30
+ end
31
+
32
+ TEST
33
+
34
+ RIOT_CONTROLLER_TEST = (<<-TEST).gsub(/^ {10}/, '') unless defined?(RIOT_CONTROLLER_TEST)
35
+ require File.expand_path(File.dirname(__FILE__) + '/../../test_config.rb')
36
+
37
+ context "!PATH!" do
38
+ context "description here" do
39
+ setup do
40
+ get "!EXPANDED_PATH!"
41
+ end
42
+
43
+ asserts("the response body") { last_response.body }.equals "Hello World"
44
+ end
45
+ end
46
+ TEST
47
+
48
+ RIOT_RAKE = (<<-TEST).gsub(/^ {10}/, '') unless defined?(RIOT_RAKE)
49
+ require 'rake/testtask'
50
+
51
+ test_tasks = Dir['test/*/'].map { |d| File.basename(d) }
52
+
53
+ test_tasks.each do |folder|
54
+ Rake::TestTask.new("test:\#{folder}") do |test|
55
+ test.pattern = "test/\#{folder}/**/*_test.rb"
56
+ test.verbose = true
57
+ end
58
+ end
59
+
60
+ desc "Run application test suite"
61
+ task 'test' => test_tasks.map { |f| "test:\#{f}" }
62
+ TEST
63
+
64
+ RIOT_MODEL_TEST = (<<-TEST).gsub(/^ {10}/, '') unless defined?(RIOT_MODEL_TEST)
65
+ require File.expand_path(File.dirname(__FILE__) + '!PATH!/test_config.rb')
66
+
67
+ context "!NAME! Model" do
68
+ context 'can be created' do
69
+ setup do
70
+ !NAME!.new
71
+ end
72
+
73
+ asserts("that record is not nil") { !topic.nil? }
74
+ end
75
+ end
76
+ TEST
77
+
78
+ RIOT_HELPER_TEST = (<<-TEST) unless defined?(RIOT_HELPER_TEST)
79
+ require File.expand_path(File.dirname(__FILE__) + '!PATH!/test_config.rb')
80
+
81
+ describe "!NAME!" do
82
+ setup do
83
+ helpers = Class.new
84
+ helpers.extend !NAME!
85
+ [helpers.foo]
86
+ end
87
+
88
+ asserts("#foo"){ topic.first }.nil
89
+ end
90
+ TEST
91
+
92
+ def setup_test
93
+ require_dependencies 'rack-test', :require => 'rack/test', :group => 'test'
94
+ require_dependencies 'riot', :group => 'test'
95
+ insert_test_suite_setup RIOT_SETUP
96
+ create_file destination_root("test/test.rake"), RIOT_RAKE
97
+ end
98
+
99
+ def generate_controller_test(name, path)
100
+ riot_contents = RIOT_CONTROLLER_TEST.gsub(/!PATH!/, path).gsub(/!EXPANDED_PATH!/, path.gsub(/:\w+?_id/, "1"))
101
+ controller_test_path = File.join('test',options[:app],'controllers',"#{name.to_s.underscore}_controller_test.rb")
102
+ create_file destination_root(controller_test_path), riot_contents, :skip => true
103
+ end
104
+
105
+ def generate_model_test(name)
106
+ riot_contents = RIOT_MODEL_TEST.gsub(/!NAME!/, name.to_s.underscore.camelize)
107
+ riot_contents.gsub!(/!PATH!/, recognize_path)
108
+ model_test_path = File.join('test',options[:app],'models',"#{name.to_s.underscore}_test.rb")
109
+ create_file destination_root(model_test_path), riot_contents, :skip => true
110
+ end
111
+
112
+ def generate_helper_test(name, project_name, app_name)
113
+ riot_contents = RIOT_HELPER_TEST.gsub(/!NAME!/, "#{project_name}::#{app_name}::#{name}")
114
+ riot_contents.gsub!(/!PATH!/, recognize_path)
115
+ helper_spec_path = File.join('test', options[:app], 'helpers', "#{name.underscore}_test.rb")
116
+ create_file destination_root(helper_spec_path), riot_contents, :skip => true
117
+ end
@@ -0,0 +1,111 @@
1
+ RSPEC_SETUP = (<<-TEST).gsub(/^ {12}/, '') unless defined?(RSPEC_SETUP)
2
+ RACK_ENV = 'test' unless defined?(RACK_ENV)
3
+ require File.expand_path(File.dirname(__FILE__) + "/../config/boot")
4
+ Dir[File.expand_path(File.dirname(__FILE__) + "/../app/helpers/**/*.rb")].each(&method(:require))
5
+
6
+ RSpec.configure do |conf|
7
+ conf.include Rack::Test::Methods
8
+ end
9
+
10
+ # You can use this method to custom specify a Rack app
11
+ # you want rack-test to invoke:
12
+ #
13
+ # app CLASS_NAME
14
+ # app CLASS_NAME.tap { |a| }
15
+ # app(CLASS_NAME) do
16
+ # set :foo, :bar
17
+ # end
18
+ #
19
+ def app(app = nil, &blk)
20
+ @app ||= block_given? ? app.instance_eval(&blk) : app
21
+ @app ||= Tennpipes.application
22
+ end
23
+ TEST
24
+
25
+ RSPEC_CONTROLLER_TEST = (<<-TEST).gsub(/^ {12}/, '') unless defined?(RSPEC_CONTROLLER_TEST)
26
+ require 'spec_helper'
27
+
28
+ RSpec.describe "!PATH!" do
29
+ pending "add some examples to \#{__FILE__}" do
30
+ before do
31
+ get "!EXPANDED_PATH!"
32
+ end
33
+
34
+ it "returns hello world" do
35
+ expect(last_response.body).to eq "Hello World"
36
+ end
37
+ end
38
+ end
39
+ TEST
40
+
41
+ RSPEC_RAKE = (<<-TEST).gsub(/^ {12}/, '') unless defined?(RSPEC_RAKE)
42
+ begin
43
+ require 'rspec/core/rake_task'
44
+
45
+ spec_tasks = Dir['spec/*/'].each_with_object([]) do |d, result|
46
+ result << File.basename(d) unless Dir["\#{d}*"].empty?
47
+ end
48
+
49
+ spec_tasks.each do |folder|
50
+ desc "Run the spec suite in \#{folder}"
51
+ RSpec::Core::RakeTask.new("spec:\#{folder}") do |t|
52
+ t.pattern = "./spec/\#{folder}/**/*_spec.rb"
53
+ t.rspec_opts = "--color"
54
+ end
55
+ end
56
+
57
+ desc "Run complete application spec suite"
58
+ task 'spec' => spec_tasks.map { |f| "spec:\#{f}" }
59
+ rescue LoadError
60
+ puts "RSpec is not part of this bundle, skip specs."
61
+ end
62
+ TEST
63
+
64
+ RSPEC_MODEL_TEST = (<<-TEST).gsub(/^ {12}/, '') unless defined?(RSPEC_MODEL_TEST)
65
+ require 'spec_helper'
66
+
67
+ RSpec.describe !NAME! do
68
+ pending "add some examples to (or delete) \#{__FILE__}"
69
+ end
70
+ TEST
71
+
72
+ RSPEC_HELPER_TEST = (<<-TEST) unless defined?(RSPEC_HELPER_TEST)
73
+ require 'spec_helper'
74
+
75
+ RSpec.describe "!NAME!" do
76
+ pending "add some examples to (or delete) \#{__FILE__}" do
77
+ let(:helpers){ Class.new }
78
+ before { helpers.extend !NAME! }
79
+ subject { helpers }
80
+
81
+ it "should return nil" do
82
+ expect(subject.foo).to be_nil
83
+ end
84
+ end
85
+ end
86
+ TEST
87
+
88
+ def setup_test
89
+ require_dependencies 'rack-test', :require => 'rack/test', :group => 'test'
90
+ require_dependencies 'rspec', :group => 'test'
91
+ insert_test_suite_setup RSPEC_SETUP, :path => "spec/spec_helper.rb"
92
+ create_file destination_root("spec/spec.rake"), RSPEC_RAKE
93
+ end
94
+
95
+ def generate_controller_test(name, path)
96
+ rspec_contents = RSPEC_CONTROLLER_TEST.gsub(/!PATH!/, path).gsub(/!EXPANDED_PATH!/, path.gsub(/:\w+?_id/, "1"))
97
+ controller_spec_path = File.join('spec',options[:app],'controllers',"#{name.to_s.underscore}_controller_spec.rb")
98
+ create_file destination_root(controller_spec_path), rspec_contents, :skip => true
99
+ end
100
+
101
+ def generate_model_test(name)
102
+ rspec_contents = RSPEC_MODEL_TEST.gsub(/!NAME!/, name.to_s.underscore.camelize).gsub(/!DNAME!/, name.to_s.underscore)
103
+ model_spec_path = File.join('spec',options[:app],'models',"#{name.to_s.underscore}_spec.rb")
104
+ create_file destination_root(model_spec_path), rspec_contents, :skip => true
105
+ end
106
+
107
+ def generate_helper_test(name, project_name, app_name)
108
+ rspec_contents = RSPEC_HELPER_TEST.gsub(/!NAME!/, "#{project_name}::#{app_name}::#{name}")
109
+ helper_spec_path = File.join('spec', options[:app], 'helpers', "#{name.underscore}_spec.rb")
110
+ create_file destination_root(helper_spec_path), rspec_contents, :skip => true
111
+ end
@@ -0,0 +1,114 @@
1
+ SHOULDA_SETUP = (<<-TEST).gsub(/^ {10}/, '') unless defined?(SHOULDA_SETUP)
2
+ RACK_ENV = 'test' unless defined?(RACK_ENV)
3
+ require File.expand_path(File.dirname(__FILE__) + "/../config/boot")
4
+ Dir[File.expand_path(File.dirname(__FILE__) + "/../app/helpers/**/*.rb")].each(&method(:require))
5
+
6
+ require "test/unit"
7
+
8
+ class Test::Unit::TestCase
9
+ include Rack::Test::Methods
10
+
11
+ # You can use this method to custom specify a Rack app
12
+ # you want rack-test to invoke:
13
+ #
14
+ # app CLASS_NAME
15
+ # app CLASS_NAME.tap { |a| }
16
+ # app(CLASS_NAME) do
17
+ # set :foo, :bar
18
+ # end
19
+ #
20
+ def app(app = nil, &blk)
21
+ @app ||= block_given? ? app.instance_eval(&blk) : app
22
+ @app ||= Tennpipes.application
23
+ end
24
+ end
25
+ TEST
26
+
27
+ SHOULDA_CONTROLLER_TEST = (<<-TEST).gsub(/^ {10}/, '') unless defined?(SHOULDA_CONTROLLER_TEST)
28
+ require File.expand_path(File.dirname(__FILE__) + '/../../test_config.rb')
29
+
30
+ class !NAME!ControllerTest < Test::Unit::TestCase
31
+ context "!NAME!Controller" do
32
+ setup do
33
+ get '/'
34
+ end
35
+
36
+ should "return hello world text" do
37
+ assert_equal "Hello World", last_response.body
38
+ end
39
+ end
40
+ end
41
+ TEST
42
+
43
+ SHOULDA_RAKE = (<<-TEST).gsub(/^ {10}/, '') unless defined?(SHOULDA_RAKE)
44
+ require 'rake/testtask'
45
+
46
+ test_tasks = Dir['test/*/'].map { |d| File.basename(d) }
47
+
48
+ test_tasks.each do |folder|
49
+ Rake::TestTask.new("test:\#{folder}") do |test|
50
+ test.pattern = "test/\#{folder}/**/*_test.rb"
51
+ test.verbose = true
52
+ end
53
+ end
54
+
55
+ desc "Run application test suite"
56
+ task 'test' => test_tasks.map { |f| "test:\#{f}" }
57
+ TEST
58
+
59
+ SHOULDA_MODEL_TEST = (<<-TEST).gsub(/^ {10}/, '') unless defined?(SHOULDA_MODEL_TEST)
60
+ require File.expand_path(File.dirname(__FILE__) + '!PATH!/test_config.rb')
61
+
62
+ class !NAME!Test < Test::Unit::TestCase
63
+ context "!NAME! Model" do
64
+ should 'construct new instance' do
65
+ @!DNAME! = !NAME!.new
66
+ assert_not_nil @!DNAME!
67
+ end
68
+ end
69
+ end
70
+ TEST
71
+
72
+ SHOULDA_HELPER_TEST = (<<-TEST) unless defined?(SHOULDA_HELPER_TEST)
73
+ require File.expand_path(File.dirname(__FILE__) + '!PATH!/test_config.rb')
74
+
75
+ class !NAME!Test < Test::Unit::TestCase
76
+ context "!NAME!" do
77
+ setup do
78
+ @helpers = Class.new
79
+ @helpers.extend !NAME!
80
+ end
81
+
82
+ should "return nil" do
83
+ assert_equal nil, @helpers.foo
84
+ end
85
+ end
86
+ end
87
+ TEST
88
+
89
+ def setup_test
90
+ require_dependencies 'rack-test', :require => 'rack/test', :group => 'test'
91
+ require_dependencies 'shoulda', :group => 'test'
92
+ insert_test_suite_setup SHOULDA_SETUP
93
+ create_file destination_root("test/test.rake"), SHOULDA_RAKE
94
+ end
95
+
96
+ def generate_controller_test(name, path = nil)
97
+ shoulda_contents = SHOULDA_CONTROLLER_TEST.gsub(/!NAME!/, name.to_s.underscore.camelize)
98
+ controller_test_path = File.join('test',options[:app],'controllers',"#{name.to_s.underscore}_controller_test.rb")
99
+ create_file destination_root(controller_test_path), shoulda_contents, :skip => true
100
+ end
101
+
102
+ def generate_model_test(name)
103
+ shoulda_contents = SHOULDA_MODEL_TEST.gsub(/!NAME!/, name.to_s.underscore.camelize).gsub(/!DNAME!/, name.to_s.underscore)
104
+ shoulda_contents.gsub!(/!PATH!/, recognize_path)
105
+ model_test_path = File.join('test',options[:app],'models',"#{name.to_s.underscore}_test.rb")
106
+ create_file destination_root(model_test_path), shoulda_contents, :skip => true
107
+ end
108
+
109
+ def generate_helper_test(name, project_name, app_name)
110
+ shoulda_contents = SHOULDA_HELPER_TEST.gsub(/!NAME!/, "#{project_name}::#{app_name}::#{name}")
111
+ shoulda_contents.gsub!(/!PATH!/, recognize_path)
112
+ helper_spec_path = File.join('test', options[:app], 'helpers', "#{name.underscore}_test.rb")
113
+ create_file destination_root(helper_spec_path), shoulda_contents, :skip => true
114
+ end