taza 0.9.1.2 → 0.9.2.0

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 (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