require File.dirname(__FILE__) + '/../spec_helper' require File.dirname(__FILE__) + '/../spec_generator_helper' describe "an app generator" do include RubiGen::GeneratorTestHelper before :all do module Kernel alias_method :old_dependency, :dependency undef dependency end end after :all do module Kernel alias_method :dependency, :old_dependency end end before do @generator = build_generator('merb', [APP_ROOT], sources, {}) end after do bare_teardown # Cleans up the temporary application directory that gets created as part of the test. end it "should be get created" do @generator.should_not be_nil end it "should be a MerbGenerator" do @generator.should be_an_instance_of(MerbGenerator) end it "should create directory structure" do silence_generator do @generator.command(:create).invoke! end %w{ app app/controllers app/helpers app/mailers app/mailers/helpers app/mailers/views/layout app/mailers/views app/models app/views app/views/layout config config/environments lib log public public/images public/javascripts public/stylesheets script test }.each{|dir| directory_should_be_created(dir)} end it "should create files from templates" do silence_generator do @generator.command(:create).invoke! end %w{ app/controllers/application.rb app/helpers/global_helper.rb app/mailers/views/layout/application.html.erb app/views/layout/application.html.erb config/environments/development.rb config/environments/production.rb config/environments/test.rb config/merb.yml config/merb_init.rb config/router.rb config/dependencies.rb config/upload.conf Rakefile script/stop_merb script/generate script/destroy }.each{|file| file_should_be_created(file)} end it "should create files from rubigen dependency" do silence_generator do @generator.command(:create).invoke! end %w{ script/generate script/destroy }.each{|file| file_should_be_created(file)} end it "should make script files executable" do silence_generator do @generator.command(:create).invoke! end %w{ script/stop_merb script/generate script/destroy }.each{|file| file_should_be_executable(file)} end def sources [RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"../../", generator_path)) ] end def generator_path "app_generators" end end describe "a controller generator" do include RubiGen::GeneratorTestHelper before :all do module Kernel alias_method :old_dependency, :dependency undef dependency end end after :all do module Kernel alias_method :dependency, :old_dependency end end before do @generator = build_generator('controller', ["my_posts"], sources, {}) end after do bare_teardown # Cleans up the temporary application directory that gets created as part of the test. end it "should be get created" do @generator.should_not be_nil end it "should be a ControllerGenerator" do @generator.should be_an_instance_of(ControllerGenerator) end it "should create directory structure" do silence_generator do @generator.command(:create).invoke! end %w{ app app/controllers app/helpers app/views app/views/my_posts }.each{|dir| directory_should_be_created(dir)} end it "should create files from templates" do silence_generator do @generator.command(:create).invoke! end %w{ app/controllers/my_posts.rb app/helpers/my_posts_helper.rb app/views/my_posts/index.html.erb }.each{|file| file_should_be_created(file)} end def sources [ RubiGen::PathSource.new(:app, File.join(File.dirname(__FILE__),"../../", "merb_generators")), RubiGen::PathSource.new(:app, File.join(File.dirname(__FILE__),"../../", "rspec_generators")) ] end end describe "a part_controller generator" do include RubiGen::GeneratorTestHelper before :all do module Kernel alias_method :old_dependency, :dependency undef dependency end end after :all do module Kernel alias_method :dependency, :old_dependency end end before do @generator = build_generator('part_controller', ["my_posts"], sources, {}) end after do bare_teardown # Cleans up the temporary application directory that gets created as part of the test. end it "should be get created" do @generator.should_not be_nil end it "should be a PartControllerGenerator" do @generator.should be_an_instance_of(PartControllerGenerator) end it "should create directory structure" do silence_generator do @generator.command(:create).invoke! end %w{ app app/parts/controllers app/parts/helpers app/parts/views app/parts/views/my_posts_part }.each{|dir| directory_should_be_created(dir)} end it "should create files from templates" do silence_generator do @generator.command(:create).invoke! end %w{ app/parts/controllers/my_posts_part.rb app/parts/helpers/my_posts_part_helper.rb app/parts/views/my_posts_part/index.html.erb }.each{|file| file_should_be_created(file)} end def sources [ RubiGen::PathSource.new(:app, File.join(File.dirname(__FILE__),"../../", "merb_generators")), RubiGen::PathSource.new(:app, File.join(File.dirname(__FILE__),"../../", "rspec_generators")) ] end end