taza 0.9.1.2 → 0.9.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.travis.yml +6 -51
  4. data/README.md +1 -0
  5. data/bin/taza +2 -15
  6. data/lib/taza.rb +7 -0
  7. data/lib/taza/generators/flow_generator.rb +17 -0
  8. data/lib/taza/generators/page_generator.rb +29 -0
  9. data/lib/taza/generators/partial_generator.rb +33 -0
  10. data/lib/taza/generators/project_generator.rb +30 -0
  11. data/lib/taza/generators/site_generator.rb +26 -0
  12. data/lib/taza/generators/taza_generators.rb +18 -0
  13. data/lib/taza/generators/templates/flow/flow.rb.tt +9 -0
  14. data/lib/taza/generators/templates/page/page.rb.tt +8 -0
  15. data/{generators/page/templates/functional_page_spec.rb.erb → lib/taza/generators/templates/page/page_spec.rb.tt} +2 -2
  16. data/lib/taza/generators/templates/partial/partial.rb.tt +8 -0
  17. data/lib/{app_generators/taza/templates/Gemfile.erb → taza/generators/templates/project/Gemfile.tt} +1 -1
  18. data/lib/taza/generators/templates/project/Rakefile.tt +13 -0
  19. data/lib/taza/generators/templates/project/config.yml.tt +3 -0
  20. data/lib/{app_generators/taza/templates → taza/generators/templates/project}/console.cmd.erb +0 -0
  21. data/lib/{app_generators/taza/templates → taza/generators/templates/project}/console.erb +0 -0
  22. data/lib/{app_generators/taza/templates/spec_helper.rb.erb → taza/generators/templates/project/spec_helper.rb.tt} +0 -0
  23. data/lib/taza/generators/templates/project/taza.tt +3 -0
  24. data/lib/taza/generators/templates/site/site.rb.tt +10 -0
  25. data/lib/taza/generators/templates/site/site.yml.tt +3 -0
  26. data/lib/taza/page.rb +7 -2
  27. data/lib/taza/site.rb +1 -1
  28. data/lib/taza/version.rb +1 -1
  29. data/spec/generators/flow_generator_spec.rb +26 -0
  30. data/spec/generators/page_generator_spec.rb +53 -0
  31. data/spec/generators/partial_generator_spec.rb +26 -0
  32. data/spec/generators/project_generator_spec.rb +76 -0
  33. data/spec/generators/site_generator_spec.rb +57 -0
  34. data/spec/{taza_bin_spec.rb → generators/taza_bin_spec.rb} +0 -0
  35. data/spec/spec_helper.rb +27 -2
  36. data/spec/{array_spec.rb → taza/array_spec.rb} +0 -0
  37. data/spec/{browser_spec.rb → taza/browser_spec.rb} +5 -3
  38. data/spec/{entity_spec.rb → taza/entity_spec.rb} +0 -0
  39. data/spec/{fixture_spec.rb → taza/fixture_spec.rb} +2 -1
  40. data/spec/{fixtures_spec.rb → taza/fixtures_spec.rb} +0 -0
  41. data/spec/{hash_spec.rb → taza/hash_spec.rb} +0 -0
  42. data/spec/{page_module_spec.rb → taza/page_module_spec.rb} +0 -0
  43. data/spec/{page_spec.rb → taza/page_spec.rb} +5 -1
  44. data/spec/{settings_spec.rb → taza/settings_spec.rb} +12 -12
  45. data/spec/{site_fixtures_spec.rb → taza/site_fixtures_spec.rb} +0 -0
  46. data/spec/{site_spec.rb → taza/site_spec.rb} +8 -11
  47. data/spec/{string_spec.rb → taza/string_spec.rb} +0 -0
  48. data/spec/{taza_tasks_spec.rb → taza/taza_tasks_spec.rb} +8 -9
  49. data/taza.gemspec +5 -6
  50. metadata +145 -110
  51. data/generators/flow/flow_generator.rb +0 -57
  52. data/generators/flow/templates/flow.rb.erb +0 -9
  53. data/generators/page/page_generator.rb +0 -58
  54. data/generators/page/templates/page.rb.erb +0 -8
  55. data/generators/partial/partial_generator.rb +0 -57
  56. data/generators/partial/templates/partial.rb.erb +0 -7
  57. data/generators/site/site_generator.rb +0 -57
  58. data/generators/site/templates/site.rb.erb +0 -10
  59. data/generators/site/templates/site.yml.erb +0 -3
  60. data/lib/app_generators/taza/taza_generator.rb +0 -76
  61. data/lib/app_generators/taza/templates/config.yml.erb +0 -3
  62. data/lib/app_generators/taza/templates/rakefile.rb.erb +0 -13
  63. data/spec/flow_generator_spec.rb +0 -47
  64. data/spec/page_generator_spec.rb +0 -56
  65. data/spec/partial_generator_spec.rb +0 -38
  66. data/spec/project_generator_spec.rb +0 -42
  67. data/spec/site_generator_spec.rb +0 -56
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe Taza::FlowGenerator do
4
+
5
+ before(:each) do
6
+ capture(:stdout) { Taza::SiteGenerator.new(['foo_site']).site }
7
+ end
8
+
9
+ context "taza flow checkout foo_site" do
10
+ context "creates" do
11
+
12
+ let(:subject) { Taza::FlowGenerator.new(['checkout', 'foo_site']) }
13
+ let(:output) { capture(:stdout) { subject.flow } }
14
+
15
+ it 'a checkout.rb' do
16
+ expect(output).to include('lib/sites/foo_site/flows/checkout.rb')
17
+ expect(File.exists?('lib/sites/foo_site/flows/checkout.rb')).to be_true
18
+ end
19
+
20
+ it 'a message if site does not exist' do
21
+ bar_page = capture(:stdout) { Taza::FlowGenerator.new(['checkout', 'bar_site']).flow }
22
+ expect(bar_page).to include("No such site bar_site exists")
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe Taza::PageGenerator do
4
+ include Helpers::Taza
5
+
6
+ before(:each) do
7
+ capture(:stdout) { Taza::SiteGenerator.new(['foo_site']).site }
8
+ end
9
+
10
+ context "taza page home foo_site" do
11
+ context "creates" do
12
+
13
+ let(:subject) { Taza::PageGenerator.new(['home', 'foo_site']) }
14
+ let(:output) { capture(:stdout) { subject.page }}
15
+
16
+ it 'creates a checkout_page.rb' do
17
+ expect(output).to include('lib/sites/foo_site/pages/home_page.rb')
18
+ expect(File.exists?('lib/sites/foo_site/pages/home_page.rb')).to be_true
19
+ end
20
+ it 'creates a checkout_page_spec.rb' do
21
+ expect(output).to include('spec/isolation/home_page_spec.rb')
22
+ expect(File.exists?('spec/isolation/home_page_spec.rb')).to be_true
23
+ end
24
+
25
+ it 'gives message if site does not exist' do
26
+ bar_page = capture(:stdout) { Taza::PageGenerator.new(['checkout', 'bar_site']).page }
27
+ expect(bar_page).to include("No such site bar_site exists")
28
+ end
29
+
30
+ it 'generates a page that can be required' do
31
+ output
32
+ page_spec = 'spec/isolation/home_page_spec.rb'
33
+ expect(system("ruby -c #{page_spec} > #{null_device}")).to be_true
34
+ end
35
+
36
+ xit "should be able to access the generated page from the site" do
37
+ run_generator('page', [@page_name, @site_class.to_s], generator_sources)
38
+ stub_settings
39
+ stub_browser
40
+ @site_class.new.check_out_page
41
+ end
42
+
43
+ xit "should be able to access the generated page for its site" do
44
+ stub_browser
45
+ stub_settings
46
+ new_site_class = generate_site('Pag')
47
+ run_generator('page', [@page_name, @site_class.to_s], generator_sources)
48
+ run_generator('page', [@page_name, new_site_class.to_s], generator_sources)
49
+ new_site_class.new.check_out_page.class.should_not eql(@site_class.new.check_out_page.class)
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe Taza::PartialGenerator do
4
+
5
+ before(:each) do
6
+ capture(:stdout) { Taza::SiteGenerator.new(['foo_site']).site }
7
+ end
8
+
9
+ context "taza partial navigation foo_site" do
10
+ context "creates" do
11
+
12
+ let(:subject) { Taza::PartialGenerator.new(['navigation', 'foo_site']) }
13
+ let(:output) { capture(:stdout) { subject.partial } }
14
+
15
+ it 'a navigation.rb' do
16
+ expect(output).to include('lib/sites/foo_site/pages/partials/navigation.rb')
17
+ expect(File.exists?('lib/sites/foo_site/pages/partials/navigation.rb')).to be_true
18
+ end
19
+
20
+ it 'message if site does not exist' do
21
+ bar_page = capture(:stdout) { Taza::PartialGenerator.new(['navigation', 'bar_site']).partial }
22
+ expect(bar_page).to include("No such site bar_site exists")
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+
3
+ describe Taza::ProjectGenerator do
4
+ context "taza create foo_site" do
5
+ context "creates" do
6
+
7
+ let(:subject) { Taza::ProjectGenerator.new(['foo_site']) }
8
+ let(:output) { capture(:stdout) { subject.create } }
9
+
10
+ it 'a Gemfile' do
11
+ expect(output).to include("Gemfile")
12
+ expect(File.exists?('Gemfile')).to be_true
13
+ end
14
+
15
+ it 'a Rakefile' do
16
+ expect(output).to include('Rakefile')
17
+ expect(File.exists?('Rakefile')).to be_true
18
+ end
19
+
20
+ it 'the Rakefile can be required' do
21
+ output
22
+ system("ruby -c Rakefile > #{null_device}").should be_true
23
+ end
24
+
25
+ it 'config/config.yml' do
26
+ expect(output).to include('config/config.yml')
27
+ expect(File.exists?('config/config.yml')).to be_true
28
+ end
29
+
30
+ it 'lib/sites' do
31
+ expect(output).to include('lib/sites')
32
+ expect(File.directory?('lib/sites')).to be_true
33
+ end
34
+
35
+ it 'a spec_helper.rb' do
36
+ expect(output).to include('spec/spec_helper.rb')
37
+ expect(File.exists?('spec/spec_helper.rb')).to be_true
38
+ end
39
+
40
+ it 'spec_helper.rb can be required' do
41
+ output
42
+ system("ruby -c spec/spec_helper.rb > #{null_device}").should be_true
43
+ end
44
+
45
+ it 'spec/isolation' do
46
+ expect(output).to include('spec/isolation')
47
+ expect(File.directory?('spec/isolation')).to be_true
48
+ end
49
+
50
+ it 'spec/integration' do
51
+ expect(output).to include('spec/integration')
52
+ expect(File.directory?('spec/integration')).to be_true
53
+ end
54
+
55
+ it 'bin' do
56
+ expect(output).to include('bin')
57
+ expect(File.directory?('bin')).to be_true
58
+ end
59
+
60
+ it 'the taza executable' do
61
+ expect(output).to include('spec/spec_helper.rb')
62
+ expect(File.exists?('spec/spec_helper.rb')).to be_true
63
+ end
64
+
65
+ xit "should generate a console script" do
66
+ run_generator('taza', [APP_ROOT], generator_sources)
67
+ File.exists?(File.join(APP_ROOT, 'script', 'console')).should be_true
68
+ end
69
+
70
+ xit "should generate a windows console script" do
71
+ run_generator('taza', [APP_ROOT], generator_sources)
72
+ File.exists?(File.join(APP_ROOT, 'script', 'console.cmd')).should be_true
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ describe Taza::SiteGenerator do
4
+ context "taza site foo_site" do
5
+ context "creates" do
6
+
7
+ let(:subject) { Taza::SiteGenerator.new(['foo_site']) }
8
+ let(:output) { capture(:stdout) { subject.site } }
9
+
10
+ it 'foo_site.rb' do
11
+ expect(output).to include('lib/sites/foo_site.rb')
12
+ expect(File.exists?('lib/sites/foo_site.rb')).to be_true
13
+ end
14
+
15
+ it 'lib/sites/foo_site' do
16
+ expect(output).to include('lib/sites/foo_site')
17
+ expect(File.directory?('lib/sites/foo_site')).to be_true
18
+ end
19
+
20
+ it 'lib/sites/foo_site/flows' do
21
+ expect(output).to include("lib/sites/foo_site/flows")
22
+ expect(File.directory?('lib/sites/foo_site/flows')).to be_true
23
+ end
24
+
25
+ it 'lib/sites/foo_site/pages' do
26
+ expect(output).to include("lib/sites/foo_site/pages")
27
+ expect(File.directory?('lib/sites/foo_site/pages')).to be_true
28
+ end
29
+
30
+ it 'lib/sites/foo_site/pages/partials' do
31
+ expect(output).to include("lib/sites/foo_site/pages/partials")
32
+ expect(File.directory?('lib/sites/foo_site/pages/partials')).to be_true
33
+ end
34
+
35
+ it 'config/foo_site.yml' do
36
+ expect(output).to include("config/foo_site.yml")
37
+ expect(File.exists?('config/foo_site.yml')).to be_true
38
+ end
39
+
40
+ it 'does not overwrite existing site' do
41
+ capture(:stdout) { Taza::SiteGenerator.new(['foo_site']).site }
42
+ expect(output).to include(*["identical", "exist"])
43
+ end
44
+
45
+ it "generates a site that can uses the block given in new" do
46
+ pending 'will have to fix this later'
47
+ @site_class = generate_site(@site_name)
48
+ stub_settings
49
+ stub_browser
50
+ foo = nil
51
+ @site_class.new { |site| foo = site }
52
+ foo.should_not be_nil
53
+ foo.should be_a_kind_of(Taza::Site)
54
+ end
55
+ end
56
+ end
57
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,13 +1,38 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
3
  require 'mocha'
4
- require 'rubigen'
5
- require 'rubigen/helpers/generator_test_helper'
6
4
  require 'taza'
5
+ require 'thor'
7
6
  require 'watir-webdriver'
8
7
  require 'selenium-webdriver'
8
+
9
9
  RSpec.configure do |config|
10
10
  config.mock_with :mocha
11
+
12
+ config.before(:each) do
13
+ $0 = 'home'
14
+ ARGV.clear
15
+ @directory = Dir.mktmpdir('taza-sandbox-')
16
+ @original_directory = Dir.pwd
17
+ Dir.chdir(@directory)
18
+ end
19
+
20
+ config.after(:each) do
21
+ Dir.chdir(@original_directory)
22
+ FileUtils.rmtree(@directory)
23
+ end
24
+
25
+ def capture(stream)
26
+ begin
27
+ stream = stream.to_s
28
+ eval "$#{stream} = StringIO.new"
29
+ yield
30
+ result = eval("$#{stream}").string
31
+ ensure
32
+ eval("$#{stream} = #{stream.upcase}")
33
+ end
34
+ result
35
+ end
11
36
  end
12
37
 
13
38
  def null_device
File without changes
@@ -43,15 +43,17 @@ describe Taza::Browser do
43
43
  end
44
44
 
45
45
  it "should use environment settings for server port and ip" do
46
- Taza::Settings.stubs(:path).returns(File.join('spec','sandbox'))
46
+ #TODO:we need to make this more dynamic and move the skeleton project to the temp dir
47
+ Taza::Settings.stubs(:path).returns(File.join(@original_directory,'spec','sandbox'))
47
48
  ENV['SERVER_PORT'] = 'server_port'
48
49
  ENV['SERVER_IP'] = 'server_ip'
49
50
  Selenium::SeleniumDriver.expects(:new).with('server_ip','server_port',anything,anything)
50
- Taza::Browser.create(Taza::Settings.config("SiteName"))
51
+ Taza::Browser.create(
52
+ Taza::Settings.config("SiteName"))
51
53
  end
52
54
 
53
55
  it "should use environment settings for timeout" do
54
- Taza::Settings.stubs(:path).returns(File.join('spec','sandbox'))
56
+ Taza::Settings.stubs(:path).returns(File.join(@original_directory,'spec','sandbox'))
55
57
  ENV['TIMEOUT'] = 'timeout'
56
58
  Selenium::SeleniumDriver.expects(:new).with(anything,anything,anything,'timeout')
57
59
  Taza::Browser.create(Taza::Settings.config("SiteName"))
File without changes
@@ -4,7 +4,8 @@ require 'extensions/array'
4
4
 
5
5
  describe Taza::Fixture do
6
6
  before :each do
7
- @base_path = File.join('.','spec','sandbox','fixtures','')
7
+ #TODO: we should generate the base project in a temp dir
8
+ @base_path = File.join(@original_directory,'spec','sandbox','fixtures','')
8
9
  end
9
10
 
10
11
  it "should be able to load entries from fixtures" do
File without changes
File without changes
@@ -5,7 +5,7 @@ describe Taza::Page do
5
5
 
6
6
  class ElementAndFilterContextExample < Taza::Page
7
7
  element(:sample_element) {browser}
8
- filter:sample_filter, :sample_element
8
+ filter(:sample_filter, :sample_element)
9
9
  def sample_filter
10
10
  browser
11
11
  end
@@ -28,6 +28,10 @@ describe Taza::Page do
28
28
  it "should execute an element's block with the params provided for its method" do
29
29
  Taza::Page.element(:boo){|baz| baz}
30
30
  Taza::Page.new.boo("rofl").should == "rofl"
31
+ end
32
+
33
+ it "element's name can not be nil" do
34
+ expect{ Taza::Page.element(nil){ } }.to raise_error(Taza::ElementError)
31
35
  end
32
36
 
33
37
  it "should execute elements and filters in the context of the page instance" do
@@ -5,7 +5,7 @@ require 'taza/options'
5
5
  require 'taza/site'
6
6
 
7
7
  describe Taza::Settings do
8
-
8
+ #TODO: we need to clean these tests up some lots of repetition and move skeleton project to tmp dir
9
9
  before :all do
10
10
  @site_name = 'SiteName'
11
11
  end
@@ -18,55 +18,55 @@ describe Taza::Settings do
18
18
  end
19
19
 
20
20
  it "should use environment variable for browser settings" do
21
- Taza::Settings.stubs(:path).returns("spec/sandbox")
21
+ Taza::Settings.stubs(:path).returns("#{@original_directory}/spec/sandbox")
22
22
  ENV['BROWSER'] = 'foo'
23
23
  Taza::Settings.config(@site_name)[:browser].should eql('foo')
24
24
  end
25
25
 
26
26
  it "should provide default values if no config file or environment settings provided" do
27
- Taza::Settings.stubs(:path).returns("spec/sandbox")
27
+ Taza::Settings.stubs(:path).returns("#{@original_directory}/spec/sandbox")
28
28
  Taza::Settings.config(@site_name)[:driver].should eql('selenium')
29
29
  Taza::Settings.config(@site_name)[:browser].should eql('firefox')
30
30
  Taza::Settings.config(@site_name)[:attach].should eql(false)
31
31
  end
32
32
 
33
33
  it "should use environment variable for driver settings" do
34
- Taza::Settings.stubs(:path).returns("spec/sandbox")
34
+ Taza::Settings.stubs(:path).returns("#{@original_directory}/spec/sandbox")
35
35
  ENV['DRIVER'] = 'bar'
36
36
  Taza::Settings.config(@site_name)[:driver].should eql('bar')
37
37
  end
38
38
 
39
39
  it "should be able to load the site yml" do
40
- Taza::Settings.stubs(:path).returns("spec/sandbox")
40
+ Taza::Settings.stubs(:path).returns("#{@original_directory}/spec/sandbox")
41
41
  Taza::Settings.config("SiteName")[:url].should eql('http://google.com')
42
42
  end
43
43
 
44
44
  it "should be able to load a alternate site url" do
45
45
  ENV['TAZA_ENV'] = 'clown_shoes'
46
- Taza::Settings.stubs(:path).returns("spec/sandbox")
46
+ Taza::Settings.stubs(:path).returns("#{@original_directory}/spec/sandbox")
47
47
  Taza::Settings.config("SiteName")[:url].should eql('http://clownshoes.com')
48
48
  end
49
49
 
50
50
  it "should use the config file's variable for browser settings if no environment variable is set" do
51
51
  UserChoices::YamlConfigFileSource.any_instance.stubs(:format_specific_reading).returns({'browser' => 'fu'})
52
- Taza::Settings.stubs(:path).returns("./spec/sandbox")
52
+ Taza::Settings.stubs(:path).returns("#{@original_directory}//spec/sandbox")
53
53
  Taza::Settings.config(@site_name)[:browser].should eql('fu')
54
54
  end
55
55
 
56
56
  it "should use the ENV variables if specfied instead of config files" do
57
57
  ENV['BROWSER'] = 'opera'
58
58
  UserChoices::YamlConfigFileSource.any_instance.stubs(:format_specific_reading).returns({'browser' => 'fu'})
59
- Taza::Settings.stubs(:path).returns("spec/sandbox")
59
+ Taza::Settings.stubs(:path).returns("#{@original_directory}/spec/sandbox")
60
60
  Taza::Settings.config(@site_name)[:browser].should eql('opera')
61
61
  end
62
62
 
63
63
  it "should use the correct config file to set defaults" do
64
- Taza::Settings.stubs(:path).returns("spec/sandbox")
64
+ Taza::Settings.stubs(:path).returns("#{@original_directory}/spec/sandbox")
65
65
  Taza::Settings.stubs(:config_file_path).returns('spec/sandbox/config.yml')
66
66
  end
67
67
 
68
68
  it "should raise error for a config file that doesnot exist" do
69
- Taza::Settings.stubs(:path).returns('spec/sandbox/file_not_exists.yml')
69
+ Taza::Settings.stubs(:path).returns("#{@original_directory}/spec/sandbox/file_not_exists.yml")
70
70
  lambda {Taza::Settings.config}.should raise_error
71
71
  end
72
72
 
@@ -76,7 +76,7 @@ describe Taza::Settings do
76
76
 
77
77
  it "should use the config file's variable for driver settings if no environment variable is set" do
78
78
  UserChoices::YamlConfigFileSource.any_instance.stubs(:format_specific_reading).returns({'driver' => 'fun'})
79
- Taza::Settings.stubs(:path).returns("spec/sandbox")
79
+ Taza::Settings.stubs(:path).returns("#{@original_directory}/spec/sandbox")
80
80
  Taza::Settings.config(@site_name)[:driver].should eql('fun')
81
81
  end
82
82
 
@@ -85,7 +85,7 @@ describe Taza::Settings do
85
85
  end
86
86
 
87
87
  it "a site should be able to load its settings" do
88
- Taza::Settings.stubs(:path).returns("spec/sandbox")
88
+ Taza::Settings.stubs(:path).returns("#{@original_directory}/spec/sandbox")
89
89
  SiteName.settings[:url].should eql('http://google.com')
90
90
  end
91
91