taza 0.8.4 → 0.8.5
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.
- data/History.txt +7 -0
- data/VERSION.yml +1 -1
- data/generators/page/page_generator.rb +1 -1
- data/generators/site/site_generator.rb +1 -1
- data/lib/app_generators/taza/taza_generator.rb +1 -1
- data/lib/extensions/object.rb +9 -0
- data/lib/taza.rb +1 -12
- data/lib/taza/entity.rb +5 -2
- data/lib/taza/fixture.rb +21 -41
- data/lib/taza/fixtures.rb +24 -0
- data/lib/taza/page.rb +25 -7
- data/lib/taza/site.rb +2 -2
- data/lib/taza/tasks.rb +13 -8
- data/spec/array_spec.rb +2 -1
- data/spec/entity_spec.rb +8 -2
- data/spec/fixture_spec.rb +13 -21
- data/spec/fixtures_spec.rb +7 -2
- data/spec/flow_generator_spec.rb +1 -1
- data/spec/hash_spec.rb +4 -1
- data/spec/page_generator_spec.rb +2 -2
- data/spec/page_module_spec.rb +104 -0
- data/spec/partial_generator_spec.rb +1 -1
- data/spec/project_generator_spec.rb +0 -1
- data/spec/sandbox/pages/foo/bay.rb +10 -0
- data/spec/sandbox/pages/foo/baz.rb +11 -0
- data/spec/settings_spec.rb +89 -88
- data/spec/site_fixtures_spec.rb +17 -15
- data/spec/site_generator_spec.rb +2 -3
- data/spec/site_spec.rb +24 -1
- data/spec/string_spec.rb +1 -0
- data/spec/taza_bin_spec.rb +0 -1
- data/spec/taza_tasks_spec.rb +10 -1
- metadata +6 -3
- data/spec/taza_spec.rb +0 -12
data/History.txt
CHANGED
data/VERSION.yml
CHANGED
@@ -25,7 +25,7 @@ class PageGenerator < RubiGen::Base
|
|
25
25
|
def manifest
|
26
26
|
record do |m|
|
27
27
|
m.template "page.rb.erb", File.join('lib','sites', site_name.underscore, "pages", "#{name.underscore}_page.rb")
|
28
|
-
m.template "functional_page_spec.rb.erb", File.join('spec','
|
28
|
+
m.template "functional_page_spec.rb.erb", File.join('spec','isolation',site_name.underscore,"#{name.underscore}_page_spec.rb")
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -21,7 +21,7 @@ class SiteGenerator < RubiGen::Base
|
|
21
21
|
m.directory File.join(site_path,("#{name.underscore}"),"flows")
|
22
22
|
m.directory File.join(site_path,("#{name.underscore}"),"pages")
|
23
23
|
m.directory File.join(site_path,("#{name.underscore}"),"pages","partials")
|
24
|
-
m.directory File.join('spec','
|
24
|
+
m.directory File.join('spec','isolation',name.underscore)
|
25
25
|
m.template "site.yml.erb", File.join('config',"#{name.underscore}.yml")
|
26
26
|
end
|
27
27
|
end
|
@@ -31,7 +31,7 @@ class TazaGenerator < RubiGen::Base
|
|
31
31
|
BASEDIRS.each { |path| m.directory path }
|
32
32
|
m.directory File.join('lib','sites')
|
33
33
|
m.directory File.join('lib','flows')
|
34
|
-
m.directory File.join('spec','
|
34
|
+
m.directory File.join('spec','isolation')
|
35
35
|
m.directory File.join('spec','integration')
|
36
36
|
m.directory File.join('spec','story')
|
37
37
|
end
|
data/lib/extensions/object.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# instance_exec comes with >1.8.7 thankfully
|
2
2
|
if VERSION <= '1.8.6'
|
3
3
|
class Object
|
4
|
+
def metaclass
|
5
|
+
class << self; self; end
|
6
|
+
end
|
7
|
+
|
4
8
|
module InstanceExecHelper; end
|
5
9
|
include InstanceExecHelper
|
6
10
|
# instance_exec method evaluates a block of code relative to the specified object, with parameters whom come from outside the object.
|
@@ -22,3 +26,8 @@ if VERSION <= '1.8.6'
|
|
22
26
|
end
|
23
27
|
end
|
24
28
|
end
|
29
|
+
class Object
|
30
|
+
def metaclass
|
31
|
+
class << self; self; end
|
32
|
+
end
|
33
|
+
end
|
data/lib/taza.rb
CHANGED
@@ -4,23 +4,12 @@ require 'taza/browser'
|
|
4
4
|
require 'taza/settings'
|
5
5
|
require 'taza/flow'
|
6
6
|
require 'taza/entity'
|
7
|
-
require 'taza/
|
7
|
+
require 'taza/fixtures'
|
8
8
|
require 'extensions/object'
|
9
9
|
require 'extensions/string'
|
10
10
|
require 'extensions/hash'
|
11
11
|
require 'extensions/array'
|
12
12
|
|
13
|
-
module Taza
|
14
|
-
VERSION = '0.8.1'
|
15
|
-
|
16
|
-
def self.windows?
|
17
|
-
PLATFORM.include?("mswin")
|
18
|
-
end
|
19
|
-
def self.osx?
|
20
|
-
PLATFORM.include?("darwin")
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
13
|
module ForwardInitialization
|
25
14
|
module ClassMethods
|
26
15
|
def new(*args,&block)
|
data/lib/taza/entity.rb
CHANGED
@@ -19,14 +19,17 @@ module Taza
|
|
19
19
|
|
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
|
-
if @fixture.
|
22
|
+
if @fixture.nil?
|
23
|
+
@hash[key]
|
24
|
+
elsif @fixture.fixture_exists?(key)
|
23
25
|
@fixture.specific_fixture_entities(key.to_sym, @hash[key])
|
24
26
|
elsif @fixture.pluralized_fixture_exists?(key)
|
25
|
-
@fixture.get_fixture_entity(key.
|
27
|
+
@fixture.get_fixture_entity(key.pluralize.to_sym,@hash[key])
|
26
28
|
else
|
27
29
|
@hash[key]
|
28
30
|
end
|
29
31
|
end
|
32
|
+
alias :[] :get_value_for_entry
|
30
33
|
|
31
34
|
private
|
32
35
|
def create_method(name, &block) # :nodoc:
|
data/lib/taza/fixture.rb
CHANGED
@@ -1,17 +1,30 @@
|
|
1
1
|
require 'find'
|
2
|
-
require
|
2
|
+
require 'erb'
|
3
|
+
require 'extensions/hash'
|
4
|
+
require 'taza/entity'
|
3
5
|
|
4
6
|
module Taza
|
7
|
+
# The module that will mixin methods based on the fixture files in your 'spec/fixtures'
|
8
|
+
#
|
9
|
+
# Example:
|
10
|
+
# describe "something" do
|
11
|
+
# it "should test something" do
|
12
|
+
# users(:jane_smith).first_name.should eql("jane")
|
13
|
+
# end
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
# where there is a spec/fixtures/users.yml file containing a entry of:
|
17
|
+
# jane_smith:
|
18
|
+
# first_name: jane
|
19
|
+
# last_name: smith
|
5
20
|
class Fixture # :nodoc:
|
6
21
|
|
7
22
|
def initialize # :nodoc:
|
8
23
|
@fixtures = {}
|
9
24
|
end
|
10
25
|
|
11
|
-
def
|
12
|
-
|
13
|
-
truncated_pattern = fixtures_pattern[index_of_fixtures..-1]
|
14
|
-
Dir.glob(File.join(base_path,truncated_pattern)) do |file|
|
26
|
+
def load_fixtures_from(dir) # :nodoc:
|
27
|
+
Dir.glob(File.join(dir,'*.yml')) do |file|
|
15
28
|
templatized_fixture=ERB.new(File.read(file))
|
16
29
|
entitized_fixture = {}
|
17
30
|
YAML.load(templatized_fixture.result()).each do |key, value|
|
@@ -34,7 +47,7 @@ module Taza
|
|
34
47
|
end
|
35
48
|
|
36
49
|
def pluralized_fixture_exists?(singularized_fixture_name) # :nodoc:
|
37
|
-
fixture_exists?(singularized_fixture_name.
|
50
|
+
fixture_exists?(singularized_fixture_name.pluralize.to_sym)
|
38
51
|
end
|
39
52
|
|
40
53
|
def specific_fixture_entities(fixture_key, select_array)
|
@@ -46,43 +59,10 @@ module Taza
|
|
46
59
|
fixture_names.include?(fixture_name.to_sym)
|
47
60
|
end
|
48
61
|
|
49
|
-
def base_path # :nodoc:
|
50
|
-
File.join('.','spec')
|
62
|
+
def self.base_path # :nodoc:
|
63
|
+
File.join('.','spec','fixtures','')
|
51
64
|
end
|
52
65
|
end
|
53
66
|
|
54
|
-
# The module that will mixin methods based on the fixture files in your 'spec/fixtures'
|
55
|
-
#
|
56
|
-
# Example:
|
57
|
-
# describe "something" do
|
58
|
-
# it "should test something" do
|
59
|
-
# users(:jane_smith).first_name.should eql("jane")
|
60
|
-
# end
|
61
|
-
# end
|
62
|
-
#
|
63
|
-
# where there is a spec/fixtures/users.yml file containing a entry of:
|
64
|
-
# jane_smith:
|
65
|
-
# first_name: jane
|
66
|
-
# last_name: smith
|
67
|
-
dirs = Dir.glob(File.join(Fixture.new.base_path,"**","**")).select {|d| File.directory?(d) }
|
68
|
-
dirs[0,0] = File.join(Fixture.new.base_path,"fixtures")
|
69
|
-
dirs.each do |mod|
|
70
|
-
base_module = mod == dirs[0] ? "" : "Fixtures::"
|
71
|
-
self.class_eval <<-EOS
|
72
|
-
module #{base_module}#{mod.split('/')[-1].camelize}
|
73
|
-
def self.included(other_module)
|
74
|
-
fixture = Fixture.new
|
75
|
-
fixture.load_all(File.join("#{mod}","*.yml"))
|
76
|
-
fixture.fixture_names.each do |fixture_name|
|
77
|
-
self.class_eval do
|
78
|
-
define_method(fixture_name) do |entity_key|
|
79
|
-
fixture.get_fixture_entity(fixture_name,entity_key.to_s)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
EOS
|
86
|
-
end
|
87
67
|
end
|
88
68
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'taza/fixture'
|
2
|
+
|
3
|
+
module Taza
|
4
|
+
dirs = Dir.glob(File.join(Fixture.base_path,'*/'))
|
5
|
+
dirs.unshift Fixture.base_path
|
6
|
+
dirs.each do |dir|
|
7
|
+
mod = dir.sub(Fixture.base_path,File.join(File.basename(Fixture.base_path),'')).camelize.sub(/::$/,'')
|
8
|
+
self.class_eval <<-EOS
|
9
|
+
module #{mod}
|
10
|
+
def self.included(other_module)
|
11
|
+
fixture = Fixture.new
|
12
|
+
fixture.load_fixtures_from('#{dir}')
|
13
|
+
fixture.fixture_names.each do |fixture_name|
|
14
|
+
self.class_eval do
|
15
|
+
define_method(fixture_name) do |entity_key|
|
16
|
+
fixture.get_fixture_entity(fixture_name,entity_key.to_s)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
EOS
|
23
|
+
end
|
24
|
+
end
|
data/lib/taza/page.rb
CHANGED
@@ -32,7 +32,12 @@ module Taza
|
|
32
32
|
# end
|
33
33
|
# homepage.foo.click
|
34
34
|
def self.element(name,&block)
|
35
|
-
|
35
|
+
if !@module.nil?
|
36
|
+
self.elements[@module] = Hash.new if self.elements[@module].nil?
|
37
|
+
self.elements[@module] = self.elements[@module].merge({ name => block })
|
38
|
+
else
|
39
|
+
self.elements[name] = block
|
40
|
+
end
|
36
41
|
end
|
37
42
|
|
38
43
|
# A filter for elemenet(s) on a page
|
@@ -64,20 +69,33 @@ module Taza
|
|
64
69
|
end
|
65
70
|
end
|
66
71
|
|
67
|
-
def
|
68
|
-
|
72
|
+
def self.page_module(name,&block)
|
73
|
+
@module = name
|
74
|
+
yield(block)
|
75
|
+
@module = nil
|
76
|
+
end
|
77
|
+
|
78
|
+
def initialize(page_module = nil)
|
79
|
+
add_element_methods(page_module)
|
69
80
|
@active_filters = []
|
70
81
|
end
|
71
82
|
|
72
|
-
def add_element_methods # :nodoc:
|
83
|
+
def add_element_methods(page_module = nil) # :nodoc:
|
73
84
|
self.class.elements.each do |element_name,element_block|
|
74
|
-
|
75
|
-
|
85
|
+
if (element_block.is_a?(Hash) && !page_module.nil? && page_module==element_name)
|
86
|
+
element_block.each do |key,value|
|
87
|
+
filters = self.class.filters[element_name] + self.class.filters[:all]
|
88
|
+
add_element_method(:filters => filters, :element_name => key, :element_block => value)
|
89
|
+
end
|
90
|
+
else
|
91
|
+
filters = self.class.filters[element_name] + self.class.filters[:all]
|
92
|
+
add_element_method(:filters => filters, :element_name => element_name, :element_block => element_block)
|
93
|
+
end
|
76
94
|
end
|
77
95
|
end
|
78
96
|
|
79
97
|
def add_element_method(params) # :nodoc:
|
80
|
-
|
98
|
+
metaclass.class_eval do
|
81
99
|
define_method(params[:element_name]) do |*args|
|
82
100
|
check_filters(params)
|
83
101
|
self.instance_exec(*args,¶ms[:element_block])
|
data/lib/taza/site.rb
CHANGED
@@ -93,8 +93,8 @@ module Taza
|
|
93
93
|
page_name = File.basename(file,'.rb')
|
94
94
|
page_class = "#{@module_name}::#{page_name.camelize}"
|
95
95
|
self.class.class_eval <<-EOS
|
96
|
-
def #{page_name}
|
97
|
-
page = '#{page_class}'.constantize.new
|
96
|
+
def #{page_name}(page_module = nil)
|
97
|
+
page = '#{page_class}'.constantize.new(page_module)
|
98
98
|
page.browser = @browser
|
99
99
|
yield page if block_given?
|
100
100
|
page
|
data/lib/taza/tasks.rb
CHANGED
@@ -31,19 +31,24 @@ module Taza
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
34
|
+
|
34
35
|
def recurse_to_create_rake_tasks(dir)
|
35
36
|
basename = File.basename(dir)
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
37
|
+
spec_pattern = File.join(dir,"**","*_spec.rb")
|
38
|
+
if (not Dir.glob(spec_pattern).empty?)
|
39
|
+
define_spec_task(basename,spec_pattern)
|
40
|
+
namespace basename do
|
41
|
+
Dir.glob(File.join(dir,"*_spec.rb")).each do |spec_file|
|
42
|
+
spec_name = File.basename(spec_file,'_spec.rb')
|
43
|
+
define_spec_task(spec_name,spec_file)
|
44
|
+
end
|
45
|
+
Dir.glob(File.join(dir,"*/")).each do |sub_dir|
|
46
|
+
recurse_to_create_rake_tasks(sub_dir)
|
47
|
+
end
|
44
48
|
end
|
45
49
|
end
|
46
50
|
end
|
51
|
+
|
47
52
|
end
|
48
53
|
end
|
49
54
|
end
|
data/spec/array_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec/spec_helper'
|
2
|
+
require 'extensions/array'
|
2
3
|
|
3
4
|
describe 'Array Extensions' do
|
4
5
|
it "should know if elements are not equivilent to a subset of those elements" do
|
@@ -13,4 +14,4 @@ describe 'Array Extensions' do
|
|
13
14
|
it "should know it is equivalent if the different orders" do
|
14
15
|
[1,2,3].should be_equivalent([2,1,3])
|
15
16
|
end
|
16
|
-
end
|
17
|
+
end
|
data/spec/entity_spec.rb
CHANGED
@@ -1,9 +1,15 @@
|
|
1
1
|
require 'spec/spec_helper'
|
2
|
-
require 'taza'
|
2
|
+
require 'taza/entity'
|
3
3
|
|
4
4
|
describe Taza::Entity do
|
5
5
|
it "should add methods for hash string keys" do
|
6
6
|
entity = Taza::Entity.new({'apple' => 'pie'},nil)
|
7
7
|
entity.should respond_to(:apple)
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
|
+
it "should be accessible like a hash(foo[:bar])" do
|
11
|
+
entity = Taza::Entity.new({:apple => 'pie'},nil)
|
12
|
+
entity[:apple].should eql('pie')
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
data/spec/fixture_spec.rb
CHANGED
@@ -1,56 +1,48 @@
|
|
1
1
|
require 'spec/spec_helper'
|
2
|
-
require 'taza'
|
2
|
+
require 'taza/fixture'
|
3
|
+
require 'extensions/array'
|
3
4
|
|
4
5
|
describe Taza::Fixture do
|
5
|
-
|
6
|
+
before :each do
|
7
|
+
@base_path = File.join('.','spec','sandbox','fixtures','')
|
8
|
+
end
|
9
|
+
|
6
10
|
it "should be able to load entries from fixtures" do
|
7
|
-
Taza::Fixture.any_instance.stubs(:base_path).returns('./spec/sandbox')
|
8
11
|
fixture = Taza::Fixture.new
|
9
|
-
fixture.
|
12
|
+
fixture.load_fixtures_from(@base_path)
|
10
13
|
example = fixture.get_fixture_entity(:examples,'first_example')
|
11
14
|
example.name.should eql("first")
|
12
15
|
example.price.should eql(1)
|
13
16
|
end
|
14
17
|
|
15
|
-
it "should use the spec folder as the base path" do
|
16
|
-
Taza::Fixture.
|
18
|
+
it "should use the spec fixtures folder as the base path" do
|
19
|
+
Taza::Fixture.base_path.should eql('./spec/fixtures/')
|
17
20
|
end
|
18
21
|
|
19
22
|
it "should know if a pluralized fixture of that name exists" do
|
20
|
-
Taza::Fixture.any_instance.stubs(:base_path).returns('./spec/sandbox')
|
21
23
|
fixture = Taza::Fixture.new
|
22
|
-
fixture.
|
24
|
+
fixture.load_fixtures_from(@base_path)
|
23
25
|
fixture.pluralized_fixture_exists?('example').should be_true
|
24
26
|
fixture.pluralized_fixture_exists?('boo').should be_false
|
25
27
|
end
|
26
28
|
|
27
29
|
it "should be able to get all fixtures loaded excluding sub-folder fixtures" do
|
28
|
-
Taza::Fixture.any_instance.stubs(:base_path).returns('./spec/sandbox')
|
29
30
|
fixture = Taza::Fixture.new
|
30
|
-
fixture.
|
31
|
+
fixture.load_fixtures_from(@base_path)
|
31
32
|
fixture.fixture_names.should be_equivalent([:examples,:users,:foos])
|
32
33
|
end
|
33
34
|
|
34
|
-
it "should be able to get all fixtures loaded including sub-folder fixtures" do
|
35
|
-
Taza::Fixture.any_instance.stubs(:base_path).returns('./spec/sandbox')
|
36
|
-
fixture = Taza::Fixture.new
|
37
|
-
fixture.load_all(File.join('fixtures','**','*.yml'))
|
38
|
-
fixture.fixture_names.should be_equivalent([:examples,:users,:foos,:bars])
|
39
|
-
end
|
40
|
-
|
41
35
|
it "should be able to get specific fixture entities" do
|
42
|
-
Taza::Fixture.any_instance.stubs(:base_path).returns('./spec/sandbox')
|
43
36
|
fixture = Taza::Fixture.new
|
44
|
-
fixture.
|
37
|
+
fixture.load_fixtures_from(@base_path)
|
45
38
|
examples = fixture.specific_fixture_entities(:examples, ['third_example'])
|
46
39
|
examples.length.should eql(1)
|
47
40
|
examples['third_example'].name.should eql('third')
|
48
41
|
end
|
49
42
|
|
50
43
|
it "should not modified the fixtures when you get specific entities off a fixture" do
|
51
|
-
Taza::Fixture.any_instance.stubs(:base_path).returns('./spec/sandbox')
|
52
44
|
fixture = Taza::Fixture.new
|
53
|
-
fixture.
|
45
|
+
fixture.load_fixtures_from(@base_path)
|
54
46
|
previous_count = fixture.get_fixture(:examples).length
|
55
47
|
examples = fixture.specific_fixture_entities(:examples, ['third_example'])
|
56
48
|
fixture.get_fixture(:examples).length.should eql(previous_count)
|
data/spec/fixtures_spec.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'spec/spec_helper'
|
2
2
|
require 'taza/fixture'
|
3
3
|
|
4
|
-
describe Taza::Fixtures do
|
5
|
-
Taza::Fixture.
|
4
|
+
describe "Taza::Fixtures" do
|
5
|
+
Taza::Fixture.stubs(:base_path).returns('./spec/sandbox/fixtures/')
|
6
|
+
require 'taza/fixtures'
|
6
7
|
include Taza::Fixtures
|
7
8
|
|
8
9
|
it "should be able to look up a fixture entity off fixture_methods module" do
|
@@ -35,4 +36,8 @@ describe Taza::Fixtures do
|
|
35
36
|
users(:shatner).age.should eql(66)
|
36
37
|
end
|
37
38
|
|
39
|
+
it "should be able to get one to many entities for hash[key] style" do
|
40
|
+
foos(:gap)['examples']['first_example']['name'].should eql('first')
|
41
|
+
end
|
42
|
+
|
38
43
|
end
|
data/spec/flow_generator_spec.rb
CHANGED
data/spec/hash_spec.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
require 'spec/spec_helper'
|
2
|
+
require 'taza/entity'
|
3
|
+
require 'extensions/hash'
|
2
4
|
|
5
|
+
# This is too tightly coupled to Taza::Entity
|
3
6
|
describe 'Hash Extensions' do
|
4
7
|
it "should add methods for hash keys to some instance" do
|
5
8
|
entity = {'apple' => 'pie'}.convert_hash_keys_to_methods(nil)
|
@@ -9,4 +12,4 @@ describe 'Hash Extensions' do
|
|
9
12
|
entity = {'apple' => 'pie'}.convert_hash_keys_to_methods(nil)
|
10
13
|
entity.should_not be_a_instance_of(Hash)
|
11
14
|
end
|
12
|
-
end
|
15
|
+
end
|
data/spec/page_generator_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec/spec_helper'
|
2
2
|
require 'rubygems'
|
3
3
|
require 'fileutils'
|
4
|
-
require 'taza'
|
4
|
+
require 'taza/page'
|
5
5
|
|
6
6
|
describe "Page Generation" do
|
7
7
|
include RubiGen::GeneratorTestHelper
|
@@ -34,7 +34,7 @@ describe "Page Generation" do
|
|
34
34
|
|
35
35
|
it "should generate a page spec that can be required" do
|
36
36
|
run_generator('page', [@page_name,@site_class.to_s], generator_sources)
|
37
|
-
page_functional_spec = File.join(PROJECT_FOLDER,'spec','
|
37
|
+
page_functional_spec = File.join(PROJECT_FOLDER,'spec','isolation',@site_class.to_s.underscore,'check_out_page_spec.rb')
|
38
38
|
system("ruby -c #{page_functional_spec} > #{null_device}").should be_true
|
39
39
|
end
|
40
40
|
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'spec/spec_helper'
|
2
|
+
require 'taza/page'
|
3
|
+
|
4
|
+
describe "Taza Page Module" do
|
5
|
+
|
6
|
+
class PageWithModule < ::Taza::Page
|
7
|
+
|
8
|
+
page_module :module do
|
9
|
+
element(:module_element) { browser }
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should execute elements in the context of their page module" do
|
15
|
+
page = PageWithModule.new(:module)
|
16
|
+
page.browser = :something
|
17
|
+
page.module_element.should eql(:something)
|
18
|
+
end
|
19
|
+
|
20
|
+
class AnotherPageWithModule < ::Taza::Page
|
21
|
+
|
22
|
+
page_module :other_module do
|
23
|
+
element(:another_module_element) { browser }
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
it "should not execute elements that belong to a page module but accessed without it" do
|
30
|
+
lambda { AnotherPageWithModule.new.another_module_element }.should raise_error(NoMethodError)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should execute elements in the context of their page module when accessed with it" do
|
34
|
+
page = AnotherPageWithModule.new(:other_module)
|
35
|
+
page.browser = :another_thing
|
36
|
+
page.another_module_element.should eql(:another_thing)
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
class TestPageWithModules < ::Taza::Page
|
41
|
+
|
42
|
+
page_module :module_one do
|
43
|
+
element(:some_module_element) { :something }
|
44
|
+
end
|
45
|
+
|
46
|
+
page_module :module_two do
|
47
|
+
element(:some_module_element) { :nothing }
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should execute elements with the same name but different page modules" do
|
53
|
+
module_one = TestPageWithModules.new(:module_one)
|
54
|
+
module_two = TestPageWithModules.new(:module_two)
|
55
|
+
module_one.some_module_element.should eql(:something)
|
56
|
+
module_two.some_module_element.should eql(:nothing)
|
57
|
+
end
|
58
|
+
|
59
|
+
class PageWithMultipleModuleElements < ::Taza::Page
|
60
|
+
|
61
|
+
page_module :module do
|
62
|
+
element(:module_element) { :something }
|
63
|
+
element(:another_module_element) { :nothing }
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should execute elements with the same name but different page modules" do
|
69
|
+
page_module = PageWithMultipleModuleElements.new(:module)
|
70
|
+
page_module.module_element.should eql(:something)
|
71
|
+
page_module.another_module_element.should eql(:nothing)
|
72
|
+
end
|
73
|
+
|
74
|
+
class PageWithFilterAndModule < ::Taza::Page
|
75
|
+
page_module :module do
|
76
|
+
element(:sample_element) {:something}
|
77
|
+
end
|
78
|
+
filter :sample_filter, :module
|
79
|
+
def sample_filter
|
80
|
+
true
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should execute filters for page modules" do
|
85
|
+
page = PageWithFilterAndModule.new(:module)
|
86
|
+
page.sample_element.should eql(:something)
|
87
|
+
end
|
88
|
+
|
89
|
+
class PageWithFalseFilterAndModule < ::Taza::Page
|
90
|
+
page_module :module do
|
91
|
+
element(:sample_element) {:something}
|
92
|
+
end
|
93
|
+
filter :false_filter, :module
|
94
|
+
def false_filter
|
95
|
+
false
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should raise an error for page-module filters that return false" do
|
100
|
+
page = PageWithFalseFilterAndModule.new(:module)
|
101
|
+
lambda { page.sample_element }.should raise_error(Taza::FilterError)
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
data/spec/settings_spec.rb
CHANGED
@@ -1,88 +1,89 @@
|
|
1
|
-
require 'spec/spec_helper'
|
2
|
-
require 'rubygems'
|
3
|
-
require 'taza'
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
ENV['
|
14
|
-
ENV['
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
Taza::Settings.
|
26
|
-
Taza::Settings.config(@site_name)[:
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
Taza::Settings.
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
Taza::Settings.
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
Taza::Settings.
|
49
|
-
Taza::Settings.
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
Taza::Settings.
|
56
|
-
Taza::Settings.
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
Taza::Settings.stubs(:
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
Taza::Settings.stubs(:
|
76
|
-
Taza::Settings.
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
1
|
+
require 'spec/spec_helper'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'taza/settings'
|
4
|
+
require 'taza/site'
|
5
|
+
|
6
|
+
describe Taza::Settings do
|
7
|
+
|
8
|
+
before :all do
|
9
|
+
@site_name = 'SiteName'
|
10
|
+
end
|
11
|
+
|
12
|
+
before :each do
|
13
|
+
ENV['TAZA_ENV'] = 'isolation'
|
14
|
+
ENV['BROWSER'] = nil
|
15
|
+
ENV['DRIVER'] = nil
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should use environment variable for browser settings" do
|
19
|
+
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
20
|
+
ENV['BROWSER'] = 'foo'
|
21
|
+
Taza::Settings.config(@site_name)[:browser].should eql(:foo)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should provide default values if no config file or environment settings provided" do
|
25
|
+
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
26
|
+
Taza::Settings.config(@site_name)[:driver].should eql(:selenium)
|
27
|
+
Taza::Settings.config(@site_name)[:browser].should eql(:firefox)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should use environment variable for driver settings" do
|
31
|
+
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
32
|
+
ENV['DRIVER'] = 'bar'
|
33
|
+
Taza::Settings.config(@site_name)[:driver].should eql(:bar)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should be able to load the site yml" do
|
37
|
+
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
38
|
+
Taza::Settings.config("SiteName")[:url].should eql('http://google.com')
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should be able to load a alternate site url" do
|
42
|
+
ENV['TAZA_ENV'] = 'clown_shoes'
|
43
|
+
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
44
|
+
Taza::Settings.config("SiteName")[:url].should eql('http://clownshoes.com')
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should use the config file's variable for browser settings if no environment variable is set" do
|
48
|
+
Taza::Settings.expects(:config_file).returns({:browser => :fu})
|
49
|
+
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
50
|
+
Taza::Settings.config(@site_name)[:browser].should eql(:fu)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should use the ENV variables if specfied instead of config files" do
|
54
|
+
ENV['BROWSER'] = 'opera'
|
55
|
+
Taza::Settings.expects(:config_file).returns({:browser => :fu})
|
56
|
+
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
57
|
+
Taza::Settings.config(@site_name)[:browser].should eql(:opera)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should use the correct config file to set defaults" do
|
61
|
+
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
62
|
+
Taza::Settings.stubs(:config_file_path).returns('spec/sandbox/config.yml')
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should raise error for a config file that doesnot exist" do
|
66
|
+
Taza::Settings.stubs(:path).returns('spec/sandbox/file_not_exists.yml')
|
67
|
+
lambda {Taza::Settings.config}.should raise_error
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should path point at root directory" do
|
71
|
+
Taza::Settings.path.should eql('.')
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should use the config file's variable for driver settings if no environment variable is set" do
|
75
|
+
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
76
|
+
Taza::Settings.stubs(:config_file).returns({:driver => :fun})
|
77
|
+
Taza::Settings.config(@site_name)[:driver].should eql(:fun)
|
78
|
+
end
|
79
|
+
|
80
|
+
class SiteName < Taza::Site
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
it "a site should be able to load its settings" do
|
85
|
+
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
86
|
+
SiteName.settings[:url].should eql('http://google.com')
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
data/spec/site_fixtures_spec.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
|
-
require 'spec/spec_helper'
|
2
|
-
require 'taza/fixture'
|
3
|
-
|
4
|
-
describe "Site Specific Fixtures" do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
1
|
+
require 'spec/spec_helper'
|
2
|
+
require 'taza/fixture'
|
3
|
+
|
4
|
+
describe "Site Specific Fixtures" do
|
5
|
+
Taza::Fixture.stubs(:base_path).returns(File.join('.','spec','sandbox','fixtures',''))
|
6
|
+
require 'taza/fixtures'
|
7
|
+
include Taza::Fixtures::FooSite
|
8
|
+
|
9
|
+
it "should be able to access fixtures in sub-folders" do
|
10
|
+
bars(:foo).name.should eql("foo")
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should not be able to access non-site-specific fixtures" do
|
14
|
+
lambda{foos(:gap)}.should raise_error(NoMethodError)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
data/spec/site_generator_spec.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec/spec_helper'
|
2
2
|
require 'rubygems'
|
3
3
|
require 'fileutils'
|
4
|
-
require 'taza'
|
5
4
|
|
6
5
|
describe "Site Generation" do
|
7
6
|
include RubiGen::GeneratorTestHelper
|
@@ -39,9 +38,9 @@ describe "Site Generation" do
|
|
39
38
|
File.directory?(File.join(@site_folder,"pages","partials")).should be_true
|
40
39
|
end
|
41
40
|
|
42
|
-
it "should generate a folder for a sites
|
41
|
+
it "should generate a folder for a sites isolation tests" do
|
43
42
|
run_generator('site', [@site_name], generator_sources)
|
44
|
-
File.directory?(File.join(PROJECT_FOLDER,'spec','
|
43
|
+
File.directory?(File.join(PROJECT_FOLDER,'spec','isolation','wikipedia_foo')).should be_true
|
45
44
|
end
|
46
45
|
|
47
46
|
it "generated site that uses the block given in new" do
|
data/spec/site_spec.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
require 'spec/spec_helper'
|
2
2
|
require 'rubygems'
|
3
|
-
require 'taza'
|
3
|
+
require 'taza/site'
|
4
|
+
require 'taza/settings'
|
5
|
+
require 'taza/browser'
|
6
|
+
require 'taza/page'
|
7
|
+
require 'taza/flow'
|
4
8
|
|
5
9
|
describe Taza::Site do
|
6
10
|
|
@@ -226,4 +230,23 @@ describe Taza::Site do
|
|
226
230
|
browser
|
227
231
|
end
|
228
232
|
|
233
|
+
it "should yield an instance of page class that can access page-module specific elements" do
|
234
|
+
f = Foo.new(:browser => stub_browser)
|
235
|
+
barzor = nil
|
236
|
+
f.baz(:module) do |baz|
|
237
|
+
barzor = baz
|
238
|
+
end
|
239
|
+
barzor.should be_an_instance_of(Baz)
|
240
|
+
barzor.some_element.should eql(:some_element_value)
|
241
|
+
end
|
242
|
+
|
243
|
+
it "should raise an error when accessing an element taht belongs to another module" do
|
244
|
+
f = Foo.new(:browser => stub_browser)
|
245
|
+
barzor = nil
|
246
|
+
f.baz(:another_module) do |baz|
|
247
|
+
barzor = baz
|
248
|
+
end
|
249
|
+
lambda{barzor.other_element}.should raise_error(NoMethodError)
|
250
|
+
end
|
251
|
+
|
229
252
|
end
|
data/spec/string_spec.rb
CHANGED
data/spec/taza_bin_spec.rb
CHANGED
data/spec/taza_tasks_spec.rb
CHANGED
@@ -13,13 +13,18 @@ describe "Taza Tasks" do
|
|
13
13
|
|
14
14
|
before :each do
|
15
15
|
Dir.stubs(:taglob).returns([])
|
16
|
-
Dir.expects(:glob).with('./spec/*/').returns(['./spec/functional/'])
|
16
|
+
Dir.expects(:glob).with('./spec/*/').returns(['./spec/functional/','./spec/mocks/'])
|
17
17
|
Dir.expects(:glob).with('./spec/functional/*/').returns(['./spec/functional/foo/'])
|
18
18
|
Dir.expects(:glob).with('./spec/functional/*_spec.rb').returns([])
|
19
19
|
Dir.expects(:glob).with('./spec/functional/foo/*/').returns(['./spec/functional/foo/page/'])
|
20
20
|
Dir.expects(:glob).with('./spec/functional/foo/*_spec.rb').returns([])
|
21
21
|
Dir.expects(:glob).with('./spec/functional/foo/page/*/').returns([])
|
22
22
|
Dir.expects(:glob).with('./spec/functional/foo/page/*_spec.rb').returns(['./spec/functional/foo/page/bar_spec.rb'])
|
23
|
+
|
24
|
+
Dir.expects(:glob).with('./spec/functional/**/*_spec.rb').returns(['./spec/functional/foo/page/bar_spec.rb'])
|
25
|
+
Dir.expects(:glob).with('./spec/functional/foo/**/*_spec.rb').returns(['./spec/functional/foo/page/bar_spec.rb'])
|
26
|
+
Dir.expects(:glob).with('./spec/functional/foo/page/**/*_spec.rb').returns(['./spec/functional/foo/page/bar_spec.rb'])
|
27
|
+
Dir.expects(:glob).with('./spec/mocks/**/*_spec.rb').returns([])
|
23
28
|
load @file_name
|
24
29
|
Taza::Rake::Tasks.new
|
25
30
|
end
|
@@ -40,6 +45,10 @@ describe "Taza Tasks" do
|
|
40
45
|
tasks.include?("spec:functional:foo:page:bar").should be_true
|
41
46
|
end
|
42
47
|
|
48
|
+
it "should not create rake spec tasks for folders that donot contain specs in their sub-tree" do
|
49
|
+
tasks.include?("spec:mocks").should be_false
|
50
|
+
end
|
51
|
+
|
43
52
|
def tasks
|
44
53
|
@rake.tasks.collect{|task| task.name }
|
45
54
|
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.
|
4
|
+
version: 0.8.5
|
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-
|
12
|
+
date: 2009-03-05 00:00:00 -08:00
|
13
13
|
default_executable: taza
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -112,6 +112,7 @@ files:
|
|
112
112
|
- lib/taza/browser.rb
|
113
113
|
- lib/taza/entity.rb
|
114
114
|
- lib/taza/fixture.rb
|
115
|
+
- lib/taza/fixtures.rb
|
115
116
|
- lib/taza/flow.rb
|
116
117
|
- lib/taza/page.rb
|
117
118
|
- lib/taza/settings.rb
|
@@ -127,6 +128,7 @@ files:
|
|
127
128
|
- spec/hash_spec.rb
|
128
129
|
- spec/object_spec.rb
|
129
130
|
- spec/page_generator_spec.rb
|
131
|
+
- spec/page_module_spec.rb
|
130
132
|
- spec/page_spec.rb
|
131
133
|
- spec/partial_generator_spec.rb
|
132
134
|
- spec/project_generator_spec.rb
|
@@ -147,6 +149,8 @@ files:
|
|
147
149
|
- spec/sandbox/pages
|
148
150
|
- spec/sandbox/pages/foo
|
149
151
|
- spec/sandbox/pages/foo/bar.rb
|
152
|
+
- spec/sandbox/pages/foo/bay.rb
|
153
|
+
- spec/sandbox/pages/foo/baz.rb
|
150
154
|
- spec/sandbox/pages/foo/partials
|
151
155
|
- spec/sandbox/pages/foo/partials/partial_the_reckoning.rb
|
152
156
|
- spec/settings_spec.rb
|
@@ -156,7 +160,6 @@ files:
|
|
156
160
|
- spec/spec_helper.rb
|
157
161
|
- spec/string_spec.rb
|
158
162
|
- spec/taza_bin_spec.rb
|
159
|
-
- spec/taza_spec.rb
|
160
163
|
- spec/taza_tasks_spec.rb
|
161
164
|
- README
|
162
165
|
has_rdoc: true
|
data/spec/taza_spec.rb
DELETED