taza 0.8.5 → 0.8.6

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,11 @@
1
+ === 0.8.6
2
+
3
+ * Added feature to keep browser open after tests
4
+ * Added access to multiple levels in Fixtures
5
+ * Added feature to return a Hash in Fixtures
6
+ * lib/flows is no longer generated
7
+ * Page module filters for elements inside page modules
8
+
1
9
  === 0.8.5
2
10
 
3
11
  * Fixed Fixtures bugs
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
- ---
2
- :patch: 5
3
- :major: 0
4
- :minor: 8
1
+ ---
2
+ :patch: 6
3
+ :major: 0
4
+ :minor: 8
data/bin/taza CHANGED
File without changes
@@ -30,7 +30,6 @@ class TazaGenerator < RubiGen::Base
30
30
  def create_directories(m)
31
31
  BASEDIRS.each { |path| m.directory path }
32
32
  m.directory File.join('lib','sites')
33
- m.directory File.join('lib','flows')
34
33
  m.directory File.join('spec','isolation')
35
34
  m.directory File.join('spec','integration')
36
35
  m.directory File.join('spec','story')
data/lib/taza/entity.rb CHANGED
@@ -20,16 +20,30 @@ module Taza
20
20
  #This method will lookup another fixture if a pluralized fixture exists otherwise return the value in the hash
21
21
  def get_value_for_entry(key) # :nodoc:
22
22
  if @fixture.nil?
23
- @hash[key]
23
+ create_entity_if_value_is_hash(key)
24
24
  elsif @fixture.fixture_exists?(key)
25
25
  @fixture.specific_fixture_entities(key.to_sym, @hash[key])
26
26
  elsif @fixture.pluralized_fixture_exists?(key)
27
27
  @fixture.get_fixture_entity(key.pluralize.to_sym,@hash[key])
28
28
  else
29
- @hash[key]
29
+ create_entity_if_value_is_hash(key)
30
30
  end
31
31
  end
32
32
  alias :[] :get_value_for_entry
33
+
34
+ def create_entity_if_value_is_hash(key)
35
+ if (@fixture.nil? && @hash[key].is_a?(Hash))
36
+ Entity.new(@hash[key], nil)
37
+ elsif (!@fixture.nil? && @hash[key].is_a?(Hash))
38
+ Entity.new(@hash[key], @fixture)
39
+ else
40
+ @hash[key]
41
+ end
42
+ end
43
+
44
+ def to_hash
45
+ @hash
46
+ end
33
47
 
34
48
  private
35
49
  def create_method(name, &block) # :nodoc:
data/lib/taza/page.rb CHANGED
@@ -35,6 +35,8 @@ module Taza
35
35
  if !@module.nil?
36
36
  self.elements[@module] = Hash.new if self.elements[@module].nil?
37
37
  self.elements[@module] = self.elements[@module].merge({ name => block })
38
+ elsif !self.elements[name].nil?
39
+ raise ElementError,"Duplicate definations for Element - #{name} on Page - #{self.to_s}"
38
40
  else
39
41
  self.elements[name] = block
40
42
  end
@@ -74,6 +76,13 @@ module Taza
74
76
  yield(block)
75
77
  @module = nil
76
78
  end
79
+
80
+ def self.page_module_filter(method_name, page_module_name, *elements)
81
+ elements = [page_module_name] if elements.empty?
82
+ elements.each do |element|
83
+ self.filters[element] = self.filters[element] << method_name
84
+ end
85
+ end
77
86
 
78
87
  def initialize(page_module = nil)
79
88
  add_element_methods(page_module)
@@ -84,7 +93,7 @@ module Taza
84
93
  self.class.elements.each do |element_name,element_block|
85
94
  if (element_block.is_a?(Hash) && !page_module.nil? && page_module==element_name)
86
95
  element_block.each do |key,value|
87
- filters = self.class.filters[element_name] + self.class.filters[:all]
96
+ filters = self.class.filters[element_name] + self.class.filters[:all] + self.class.filters[key]
88
97
  add_element_method(:filters => filters, :element_name => key, :element_block => value)
89
98
  end
90
99
  else
@@ -115,4 +124,5 @@ module Taza
115
124
  end
116
125
 
117
126
  class FilterError < StandardError; end
127
+ class ElementError < StandardError; end
118
128
  end
data/lib/taza/site.rb CHANGED
@@ -18,6 +18,7 @@ module Taza
18
18
  # end
19
19
  class Site
20
20
  @@before_browser_closes = Proc.new() {}
21
+ @@donot_close_browser = false
21
22
  # Use this to do something with the browser before it closes, but note that it is a class method which
22
23
  # means that this will get called for any instance of a site.
23
24
  #
@@ -29,6 +30,10 @@ module Taza
29
30
  def self.before_browser_closes(&block)
30
31
  @@before_browser_closes = block
31
32
  end
33
+
34
+ def self.donot_close_browser
35
+ @@donot_close_browser = true
36
+ end
32
37
  attr_accessor :browser
33
38
 
34
39
  # A site can be called a few different ways
@@ -81,7 +86,7 @@ module Taza
81
86
 
82
87
  def close_browser_and_raise_if original_error # :nodoc:
83
88
  begin
84
- @browser.close if @i_created_browser
89
+ @browser.close if (@i_created_browser && !@@donot_close_browser)
85
90
  ensure
86
91
  raise original_error if original_error
87
92
  end
data/spec/entity_spec.rb CHANGED
@@ -12,4 +12,14 @@ describe Taza::Entity do
12
12
  entity[:apple].should eql('pie')
13
13
  end
14
14
 
15
+ it "should be able to define methods for multiple levels" do
16
+ entity = Taza::Entity.new({:fruits => {:apple => 'pie'} },nil)
17
+ entity.fruits.apple.should eql('pie')
18
+ end
19
+
20
+ it "should be able to return a hash object" do
21
+ entity = Taza::Entity.new({:apple => 'pie' },nil)
22
+ entity.to_hash[:apple].should eql('pie')
23
+ end
24
+
15
25
  end
@@ -39,5 +39,9 @@ describe "Taza::Fixtures" do
39
39
  it "should be able to get one to many entities for hash[key] style" do
40
40
  foos(:gap)['examples']['first_example']['name'].should eql('first')
41
41
  end
42
+
43
+ it "should be able to access multiple levels inside fixtures" do
44
+ examples(:forth_example).something.user('shatner').name.should eql('William Shatner')
45
+ end
42
46
 
43
47
  end
@@ -101,4 +101,65 @@ describe "Taza Page Module" do
101
101
  lambda { page.sample_element }.should raise_error(Taza::FilterError)
102
102
  end
103
103
 
104
+ class PageWithFilterAndModuleElements < ::Taza::Page
105
+ page_module :module do
106
+ element(:sample_element) {:something}
107
+ end
108
+ page_module_filter :sample_filter, :module, :sample_element
109
+ def sample_filter
110
+ false
111
+ end
112
+ end
113
+
114
+ it "should execute filters for elements inside page modules" do
115
+ page = PageWithFilterAndModuleElements.new(:module)
116
+ lambda { page.sample_element }.should raise_error(Taza::FilterError)
117
+ end
118
+
119
+ class PageWithFiltersAndModuleElements < ::Taza::Page
120
+ page_module :module do
121
+ element(:sample_element) {:something}
122
+ element(:another_sample_element) {:something}
123
+ end
124
+ page_module_filter :sample_filter, :module
125
+ def sample_filter
126
+ true
127
+ end
128
+ page_module_filter :another_sample_filter, :module, :sample_element
129
+ def another_sample_filter
130
+ false
131
+ end
132
+ end
133
+
134
+ it "should execute filters for specific and all elements inside page modules" do
135
+ page = PageWithFiltersAndModuleElements.new(:module)
136
+ lambda { page.sample_element }.should raise_error(Taza::FilterError)
137
+ page.another_sample_element.should eql(:something)
138
+ end
139
+
140
+ class PageWithFiltersAndModulesAndElements < ::Taza::Page
141
+ page_module :foo_module do
142
+ element(:sample_element) {:something}
143
+ end
144
+ page_module_filter :foo_filter, :foo_module
145
+ def foo_filter
146
+ true
147
+ end
148
+ page_module :bar_module do
149
+ element(:sample_element) {:nothing}
150
+ end
151
+ page_module_filter :bar_filter, :bar_module
152
+ def bar_filter
153
+ false
154
+ end
155
+ end
156
+
157
+ it "should execute page module filters for identical element names appropriately" do
158
+ foo = PageWithFiltersAndModulesAndElements.new(:foo_module)
159
+ foo.sample_element.should eql(:something)
160
+ bar = PageWithFiltersAndModulesAndElements.new(:bar_module)
161
+ lambda { bar.sample_element }.should raise_error(Taza::FilterError)
162
+ end
163
+
164
+
104
165
  end
data/spec/page_spec.rb CHANGED
@@ -93,4 +93,13 @@ describe Taza::Page do
93
93
  lambda { page.false_item }.should raise_error
94
94
  page.called_element_method.should_not be_true
95
95
  end
96
+
97
+ it "should not allow more than one element descriptor with the same element name" do
98
+ lambda{
99
+ class DuplicateElements < Taza::Page
100
+ element(:foo) { true }
101
+ element(:foo) { false }
102
+ end
103
+ }.should raise_error(Taza::ElementError)
104
+ end
96
105
  end
@@ -10,3 +10,6 @@ third_example:
10
10
  name: third
11
11
  price: 3
12
12
  user: shatner
13
+ forth_example:
14
+ something:
15
+ user: shatner
File without changes
File without changes
File without changes
File without changes
File without changes
data/spec/site_spec.rb CHANGED
@@ -240,7 +240,7 @@ describe Taza::Site do
240
240
  barzor.some_element.should eql(:some_element_value)
241
241
  end
242
242
 
243
- it "should raise an error when accessing an element taht belongs to another module" do
243
+ it "should raise an error when accessing an element that belongs to another module" do
244
244
  f = Foo.new(:browser => stub_browser)
245
245
  barzor = nil
246
246
  f.baz(:another_module) do |baz|
@@ -249,4 +249,19 @@ describe Taza::Site do
249
249
  lambda{barzor.other_element}.should raise_error(NoMethodError)
250
250
  end
251
251
 
252
+ it "should have a way to keep the browser instance open" do
253
+ browser = stub_browser
254
+ browser.expects(:close).never
255
+ Taza::Browser.stubs(:create).returns(browser)
256
+ Taza::Site.donot_close_browser
257
+ Foo.new {}
258
+ end
259
+
260
+ it "should have a way to keep the browser instance open if an error is raised" do
261
+ browser = stub_browser
262
+ browser.expects(:close).never
263
+ Taza::Browser.stubs(:create).returns(browser)
264
+ Taza::Site.donot_close_browser
265
+ lambda { Foo.new { |site| raise StandardError}}.should raise_error
266
+ end
252
267
  end
data/taza.gemspec ADDED
@@ -0,0 +1,46 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{taza}
3
+ s.version = "0.8.6"
4
+
5
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
+ s.authors = ["Adam Anderson"]
7
+ s.date = %q{2009-04-08}
8
+ s.default_executable = %q{taza}
9
+ s.description = %q{Taza is an opionated browser-based testing framework.}
10
+ s.email = %q{adamandersonis@gmail.com}
11
+ s.executables = ["taza"]
12
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README"]
13
+ s.files = ["History.txt", "Manifest.txt", "README.textile", "taza.gemspec", "VERSION.yml", "bin/taza", "generators/flow", "generators/flow/flow_generator.rb", "generators/flow/templates", "generators/flow/templates/flow.rb.erb", "generators/page", "generators/page/page_generator.rb", "generators/page/templates", "generators/page/templates/functional_page_spec.rb.erb", "generators/page/templates/page.rb.erb", "generators/partial", "generators/partial/partial_generator.rb", "generators/partial/templates", "generators/partial/templates/partial.rb.erb", "generators/site", "generators/site/site_generator.rb", "generators/site/templates", "generators/site/templates/site.rb.erb", "generators/site/templates/site.yml.erb", "lib/app_generators", "lib/app_generators/taza", "lib/app_generators/taza/taza_generator.rb", "lib/app_generators/taza/templates", "lib/app_generators/taza/templates/config.yml.erb", "lib/app_generators/taza/templates/rakefile.rb.erb", "lib/app_generators/taza/templates/spec_helper.rb.erb", "lib/extensions", "lib/extensions/array.rb", "lib/extensions/hash.rb", "lib/extensions/object.rb", "lib/extensions/string.rb", "lib/taza", "lib/taza/browser.rb", "lib/taza/browsers", "lib/taza/entity.rb", "lib/taza/fixture.rb", "lib/taza/fixtures.rb", "lib/taza/flow.rb", "lib/taza/page.rb", "lib/taza/settings.rb", "lib/taza/site.rb", "lib/taza/tasks.rb", "lib/taza.rb", "spec/array_spec.rb", "spec/browser_spec.rb", "spec/entity_spec.rb", "spec/fixtures_spec.rb", "spec/fixture_spec.rb", "spec/flow_generator_spec.rb", "spec/hash_spec.rb", "spec/object_spec.rb", "spec/page_generator_spec.rb", "spec/page_module_spec.rb", "spec/page_spec.rb", "spec/partial_generator_spec.rb", "spec/platform", "spec/platform/osx", "spec/platform/windows", "spec/project_generator_spec.rb", "spec/sandbox", "spec/sandbox/config", "spec/sandbox/config/config.yml", "spec/sandbox/config/site_name.yml", "spec/sandbox/config.yml", "spec/sandbox/fixtures", "spec/sandbox/fixtures/examples.yml", "spec/sandbox/fixtures/foos.yml", "spec/sandbox/fixtures/foo_site", "spec/sandbox/fixtures/foo_site/bars.yml", "spec/sandbox/fixtures/users.yml", "spec/sandbox/flows", "spec/sandbox/flows/batman.rb", "spec/sandbox/flows/robin.rb", "spec/sandbox/pages", "spec/sandbox/pages/foo", "spec/sandbox/pages/foo/bar.rb", "spec/sandbox/pages/foo/bay.rb", "spec/sandbox/pages/foo/baz.rb", "spec/sandbox/pages/foo/partials", "spec/sandbox/pages/foo/partials/partial_the_reckoning.rb", "spec/settings_spec.rb", "spec/site_fixtures_spec.rb", "spec/site_generator_spec.rb", "spec/site_spec.rb", "spec/spec_helper.rb", "spec/string_spec.rb", "spec/taza_bin_spec.rb", "spec/taza_tasks_spec.rb", "README"]
14
+ s.has_rdoc = true
15
+ s.homepage = %q{http://github.com/scudco/taza}
16
+ s.rdoc_options = ["--main", "README", "--inline-source", "--charset=UTF-8"]
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = %q{taza}
19
+ s.rubygems_version = %q{1.2.0}
20
+ s.summary = %q{Taza is an opionated browser-based testing framework.}
21
+
22
+ if s.respond_to? :specification_version then
23
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
+ s.specification_version = 2
25
+
26
+ if current_version >= 3 then
27
+ s.add_runtime_dependency(%q<taglob>, [">= 1.1.1"])
28
+ s.add_runtime_dependency(%q<rake>, [">= 0.8.3"])
29
+ s.add_runtime_dependency(%q<mocha>, [">= 0.9.3"])
30
+ s.add_runtime_dependency(%q<rspec>, [">= 1.1.12"])
31
+ s.add_runtime_dependency(%q<rubigen>, [">= 1.4.0"])
32
+ else
33
+ s.add_dependency(%q<taglob>, [">= 1.1.1"])
34
+ s.add_dependency(%q<rake>, [">= 0.8.3"])
35
+ s.add_dependency(%q<mocha>, [">= 0.9.3"])
36
+ s.add_dependency(%q<rspec>, [">= 1.1.12"])
37
+ s.add_dependency(%q<rubigen>, [">= 1.4.0"])
38
+ end
39
+ else
40
+ s.add_dependency(%q<taglob>, [">= 1.1.1"])
41
+ s.add_dependency(%q<rake>, [">= 0.8.3"])
42
+ s.add_dependency(%q<mocha>, [">= 0.9.3"])
43
+ s.add_dependency(%q<rspec>, [">= 1.1.12"])
44
+ s.add_dependency(%q<rubigen>, [">= 1.4.0"])
45
+ end
46
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taza
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.5
4
+ version: 0.8.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Anderson
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-05 00:00:00 -08:00
12
+ date: 2009-04-08 00:00:00 -07:00
13
13
  default_executable: taza
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -76,6 +76,7 @@ files:
76
76
  - History.txt
77
77
  - Manifest.txt
78
78
  - README.textile
79
+ - taza.gemspec
79
80
  - VERSION.yml
80
81
  - bin/taza
81
82
  - generators/flow
@@ -110,6 +111,7 @@ files:
110
111
  - lib/extensions/string.rb
111
112
  - lib/taza
112
113
  - lib/taza/browser.rb
114
+ - lib/taza/browsers
113
115
  - lib/taza/entity.rb
114
116
  - lib/taza/fixture.rb
115
117
  - lib/taza/fixtures.rb
@@ -122,8 +124,8 @@ files:
122
124
  - spec/array_spec.rb
123
125
  - spec/browser_spec.rb
124
126
  - spec/entity_spec.rb
125
- - spec/fixture_spec.rb
126
127
  - spec/fixtures_spec.rb
128
+ - spec/fixture_spec.rb
127
129
  - spec/flow_generator_spec.rb
128
130
  - spec/hash_spec.rb
129
131
  - spec/object_spec.rb
@@ -131,6 +133,9 @@ files:
131
133
  - spec/page_module_spec.rb
132
134
  - spec/page_spec.rb
133
135
  - spec/partial_generator_spec.rb
136
+ - spec/platform
137
+ - spec/platform/osx
138
+ - spec/platform/windows
134
139
  - spec/project_generator_spec.rb
135
140
  - spec/sandbox
136
141
  - spec/sandbox/config
@@ -139,9 +144,9 @@ files:
139
144
  - spec/sandbox/config.yml
140
145
  - spec/sandbox/fixtures
141
146
  - spec/sandbox/fixtures/examples.yml
147
+ - spec/sandbox/fixtures/foos.yml
142
148
  - spec/sandbox/fixtures/foo_site
143
149
  - spec/sandbox/fixtures/foo_site/bars.yml
144
- - spec/sandbox/fixtures/foos.yml
145
150
  - spec/sandbox/fixtures/users.yml
146
151
  - spec/sandbox/flows
147
152
  - spec/sandbox/flows/batman.rb
@@ -187,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
187
192
  requirements: []
188
193
 
189
194
  rubyforge_project: taza
190
- rubygems_version: 1.3.1
195
+ rubygems_version: 1.2.0
191
196
  signing_key:
192
197
  specification_version: 2
193
198
  summary: Taza is an opionated browser-based testing framework.