spec/project_generator_spec.rb in bret-watircraft-0.4.1 vs spec/project_generator_spec.rb in bret-watircraft-0.4.2
- old
+ new
@@ -5,99 +5,153 @@
require 'fileutils'
require 'taza'
describe "Project Generator" do
include RubiGen::GeneratorTestHelper
+ include Helpers::Generator
def project_file relative_path
File.join(TMP_ROOT, PROJECT_NAME, relative_path)
end
-
+ def project_folder project_name=PROJECT_NAME
+ File.join(TMP_ROOT, project_name)
+ end
+
before :each do
- @spec_helper = project_file 'test/specs/spec_helper.rb'
- @initializer = project_file 'lib/initialize.rb'
ENV['ENVIRONMENT'] = nil
bare_setup
+
+ @site_folder = project_file 'lib'
+ @page_folder = project_file 'lib/pages'
+ @initializer = project_file 'lib/initialize.rb'
end
after :each do
bare_teardown
end
- def should_be_loadable file, options=[]
- options = [options] unless options.is_a? Array
- generator_args = [APP_ROOT] + options
- run_generator('watircraft', generator_args, generator_sources)
+ def should_be_loadable file
load_path = File.dirname(__FILE__) + '/../lib'
system("ruby -I#{load_path} #{file} > #{null_device}").should be_true
end
it "should generate a spec helper that can be required even when site name is different" do
- should_be_loadable @spec_helper, ['--site=another_name', '--driver=fake']
- end
+ generate_project ['--site=another_name', '--driver=fake']
+ spec_helper = project_file 'test/specs/spec_helper.rb'
+ should_be_loadable spec_helper
+ end
it "should generate a feature helper that can be required" do
+ generate_project ['--driver=fake']
feature_helper = project_file 'test/features/feature_helper.rb'
- should_be_loadable feature_helper, '--driver=fake'
+ should_be_loadable feature_helper
end
it "should generate a world file that can be required" do
+ generate_project ['--driver=fake']
world = project_file 'lib/steps/world.rb'
- should_be_loadable world, '--driver=fake'
+ should_be_loadable world
end
it "should generate a rakefile that can be required" do
+ generate_project
rakefile = project_file 'rakefile'
should_be_loadable rakefile
end
it "should generate an initializer that can be required" do
+ generate_project
should_be_loadable @initializer
end
it "should be able to update an existing project and figure out the site name" do
- run_generator('watircraft', [APP_ROOT, '--site=crazy'], generator_sources)
- run_generator('watircraft', [APP_ROOT], generator_sources)
+ generate_project ['--site=crazy']
+ generate_project
Taza::Settings.config[:site].should == 'crazy'
end
it "initializer should set the ENVIRONMENT variable if it is not provided" do
- run_generator('watircraft', [APP_ROOT], generator_sources)
+ generate_project
load @initializer
ENV['ENVIRONMENT'].should eql("test")
end
it "initializer should not override the ENVIRONMENT variable if was provided" do
ENV['ENVIRONMENT'] = 'orange pie? is there such a thing?'
- run_generator('watircraft', [APP_ROOT], generator_sources)
+ generate_project
load @initializer
ENV['ENVIRONMENT'].should eql('orange pie? is there such a thing?')
end
it "should configure a project for watir, implicitly" do
- run_generator('watircraft', [APP_ROOT], generator_sources)
+ generate_project
Taza::Settings.stubs(:path).returns(APP_ROOT)
ENV['ENVIRONMENT'] = 'test'
Taza::Settings.config[:driver].should == :watir
end
it "should allow a site name to be specified" do
- run_generator('watircraft', [APP_ROOT, '--site=site_name'], generator_sources)
+ generate_project ['--site=site_name']
Taza::Settings.stubs(:path).returns(APP_ROOT)
ENV['ENVIRONMENT'] = 'test'
Taza::Settings.config[:site].should == 'site_name'
end
it "should allow a browser driver to be specified" do
- run_generator('watircraft', [APP_ROOT, '--driver=nine_iron'], generator_sources)
+ generate_project ['--driver=nine_iron']
Taza::Settings.stubs(:path).returns(APP_ROOT)
ENV['ENVIRONMENT'] = 'test'
Taza::Settings.config[:driver].should == :nine_iron
end
it "should generate a script/console" do
- run_generator('watircraft', [APP_ROOT], generator_sources)
+ generate_project
File.exist?(project_file('script/console')).should be_true
File.exist?(project_file('script/console.cmd')).should be_true
end
+
+ it "should generate configuration file for a site" do
+ generate_project
+ File.exists?(File.join(PROJECT_FOLDER,'config','environments.yml')).should be_true
+ end
+
+ it "should generate site files and folders" do
+ generate_project
+ File.directory?(@site_folder).should be_true
+ File.directory?(@page_folder).should be_true
+ File.exists?("#{@site_folder}/example.rb").should be_true
+ end
+
+ it "should generate a site path even if the site name is given with spaces" do
+ generate_project ["--site=example foo"]
+ File.directory?(@site_folder).should be_true
+ File.directory?(@page_folder).should be_true
+ File.exists?("#{@site_folder}/example_foo.rb").should be_true
+ end
+
+ it "should generate a site path even if the site name is given with underscores" do
+ generate_project ["--site=example_foo"]
+ File.directory?(@site_folder).should be_true
+ File.directory?(@page_folder).should be_true
+ File.exists?("#{@site_folder}/example_foo.rb").should be_true
+ end
+
+ include Helpers::Taza
+ it "generated site that uses the block given in new" do
+ site_name = "example#{Time.now.to_i}"
+ generate_project ["--site=#{site_name}"]
+
+ site_file_path = project_file "lib/#{site_name.underscore}.rb"
+ require site_file_path
+ "::#{site_name.camelize}::#{site_name.camelize}".constantize.any_instance.stubs(:base_path).returns(PROJECT_FOLDER)
+ site_class = site_name.camelize.constantize
+
+ stub_settings
+ stub_browser
+ foo = nil
+ site_class.new {|site| foo = site}
+ foo.should_not be_nil
+ foo.should be_a_kind_of(Taza::Site)
+ end
+
end