Skip to content

Commit c504790

Browse files
ethntnamusyaka
authored andcommitted
steak generator written, tests a work in progress.
1 parent 3e551c9 commit c504790

File tree

3 files changed

+115
-0
lines changed

3 files changed

+115
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
STEAK_SETUP = (<<-TEST).gsub(/^ {12}/, '') unless defined?(STEAK_SETUP)
2+
PADRINO_ENV = 'test' unless defined?(PADRINO_ENV)
3+
require File.expand_path(File.dirname(__FILE__) + "/../config/boot")
4+
5+
RSpec.configure do |conf|
6+
conf.include Rack::Test::Methods
7+
conf.include Capybara
8+
end
9+
10+
def app
11+
##
12+
# You can handle all padrino applications using instead:
13+
# Padrino.application
14+
CLASS_NAME.tap { |app| }
15+
end
16+
17+
Capybara.app = app
18+
TEST
19+
20+
STEAK_CONTROLLER_TEST = (<<-TEST).gsub(/^ {12}/, '') unless defined?(STEAK_CONTROLLER_TEST)
21+
require 'spec_helper'
22+
23+
describe "!NAME!Controller" do
24+
before do
25+
get "/"
26+
end
27+
28+
it "returns hello world" do
29+
last_response.body.should == "Hello World"
30+
end
31+
end
32+
TEST
33+
34+
STEAK_CONTROLLER_ACCEPTANCE_TEST = (<<-TEST).gsub(/^ {12}/, '') unless defined?(STEAK_CONTROLLER_ACCEPTANCE_TEST)
35+
require 'spec_helper'
36+
37+
feature "!NAME!Controller" do
38+
background do
39+
visit "/"
40+
end
41+
42+
scenario "returns hello world" do
43+
page.should.have_content == "Hello World"
44+
end
45+
end
46+
TEST
47+
48+
STEAK_RAKE = (<<-TEST).gsub(/^ {12}/, '') unless defined?(STEAK_RAKE)
49+
require 'rspec/core/rake_task'
50+
51+
spec_tasks = Dir['spec/*/'].map { |d| File.basename(d) }
52+
53+
spec_tasks.each do |folder|
54+
RSpec::Core::RakeTask.new("spec:\#{folder}") do |t|
55+
t.pattern = "./spec/\#{folder}/**/*_spec.rb"
56+
t.rspec_opts = %w(-fs --color)
57+
end
58+
end
59+
60+
desc "Run complete application spec suite"
61+
task 'spec' => spec_tasks.map { |f| "spec:\#{f}" }
62+
TEST
63+
64+
STEAK_MODEL_TEST = (<<-TEST).gsub(/^ {12}/, '') unless defined?(STEAK_MODEL_TEST)
65+
require 'spec_helper'
66+
67+
describe !NAME! do
68+
end
69+
TEST
70+
71+
def setup_test
72+
require_dependencies 'rack-test', :require => 'rack/test', :group => 'test'
73+
require_dependencies 'steak', :group => 'test'
74+
insert_test_suite_setup STEAK_SETUP, :path => "spec/spec_helper.rb"
75+
create_file destination_root("spec/spec.rake"), STEAK_RAKE
76+
end
77+
78+
# Generates a controller test given the controllers name
79+
def generate_controller_test(name)
80+
spec_contents = STEAK_CONTROLLER_TEST.gsub(/!NAME!/, name.to_s.underscore.camelize)
81+
controller_spec_path = File.join('spec',options[:app],'controllers',"#{name.to_s.underscore}_controller_spec.rb")
82+
create_file destination_root(controller_spec_path), spec_contents, :skip => true
83+
84+
acceptance_contents = STEAK_CONTROLLER_ACCEPTANCE_TEST.gsub(/!NAME!/, name.to_s.underscore.camelize)
85+
controller_acceptance_path = File.join('spec',options[:app],'acceptance','controllers',"#{name.to_s.underscore}_controller_spec.rb")
86+
create_file destination_root(controller_acceptance_path), acceptance_contents, :skip => true
87+
end
88+
89+
def generate_model_test(name)
90+
rspec_contents = STEAK_MODEL_TEST.gsub(/!NAME!/, name.to_s.underscore.camelize).gsub(/!DNAME!/, name.to_s.underscore)
91+
model_spec_path = File.join('spec',options[:app],'models',"#{name.to_s.underscore}_spec.rb")
92+
create_file destination_root(model_spec_path), rspec_contents, :skip => true
93+
end

padrino-gen/test/test_controller_generator.rb

+8
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,14 @@ def teardown
140140
assert_file_exists("#{@apptmp}/sample_project/test/subby/controllers/demo_items_controller_test.rb")
141141
end
142142

143+
should "generate controller test for steak" do
144+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=steak') }
145+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
146+
capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
147+
assert_match_in_file(/describe "DemoItemsController" do/m, "#{@apptmp}/sample_project/spec/subby/controllers/demo_items_controller_spec.rb")
148+
assert_match_in_file(/feature "DemoItemsController" do/m, "#{@apptmp}/sample_project/spec/subby/acceptance/controllers/demo_items_controller_spec.rb")
149+
end
150+
143151
should "generate controller test for cucumber" do
144152
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=cucumber') }
145153
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }

padrino-gen/test/test_project_generator.rb

+14
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,20 @@ def teardown
557557
assert_match_in_file(/task 'test' => test_tasks/,"#{@apptmp}/sample_project/test/test.rake")
558558
end
559559

560+
should "properly generate for steak" do
561+
out, err = capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--test=steak', '--script=none') }
562+
assert_match(/applying.*?steak.*?test/, out)
563+
assert_match_in_file(/gem 'rack-test'/, "#{@apptmp}/sample_project/Gemfile")
564+
assert_match_in_file(/:require => 'rack\/test'/, "#{@apptmp}/sample_project/Gemfile")
565+
assert_match_in_file(/:group => 'test'/, "#{@apptmp}/sample_project/Gemfile")
566+
assert_match_in_file(/gem 'steak'/, "#{@apptmp}/sample_project/Gemfile")
567+
assert_match_in_file(/PADRINO_ENV = 'test' unless defined\?\(PADRINO_ENV\)/, "#{@apptmp}/sample_project/spec/spec_helper.rb")
568+
assert_match_in_file(/RSpec.configure/, "#{@apptmp}/sample_project/spec/spec_helper.rb")
569+
assert_file_exists("#{@apptmp}/sample_project/spec/spec.rake")
570+
assert_match_in_file(/RSpec::Core::RakeTask\.new\("spec:\#/,"#{@apptmp}/sample_project/spec/spec.rake")
571+
assert_match_in_file(/task 'spec' => spec_tasks/,"#{@apptmp}/sample_project/spec/spec.rake")
572+
end
573+
560574
should "properly generate for minitest" do
561575
out, err = capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--test=minitest', '--script=none') }
562576
assert_match(/applying.*?minitest.*?test/, out)

0 commit comments

Comments
 (0)