rails-app-spec 0.2.5 → 0.2.7
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/README.markdown +13 -0
- data/Rakefile +2 -1
- data/VERSION +1 -1
- data/lib/rails-app-spec.rb +2 -0
- data/lib/rails_app_spec/matchers/artifact/have_artifact.rb +8 -127
- data/lib/rails_app_spec/matchers/artifact/have_artifacts.rb +78 -0
- data/lib/rails_app_spec/matchers/artifact/have_rails_artifact_file.rb +5 -33
- data/lib/rails_app_spec/matchers/artifact/have_rails_artifact_files.rb +33 -0
- data/lib/rails_app_spec/matchers/artifact/shared/artifact_file_helper.rb +56 -0
- data/lib/rails_app_spec/matchers/artifact/shared/artifact_helper.rb +134 -0
- data/lib/rails_app_spec/matchers/artifact.rb +1 -0
- data/lib/rails_app_spec/matchers/directory/have_artifact_dirs.rb +43 -0
- data/lib/rails_app_spec/matchers/{file → directory}/have_rails_dir.rb +1 -1
- data/lib/rails_app_spec/matchers/directory/have_rails_dirs.rb +34 -0
- data/lib/rails_app_spec/matchers/file/have_rails_file.rb +4 -11
- data/lib/rails_app_spec/matchers/file/have_rails_files.rb +39 -0
- data/lib/rails_app_spec/matchers/file/rails_file_helper.rb +19 -0
- data/lib/rails_app_spec/matchers/special/have_gem.rb +65 -0
- data/lib/rails_app_spec/matchers/special/have_gems.rb +56 -0
- data/lib/rails_app_spec/matchers.rb +1 -0
- data/lib/rails_app_spec/rspec/configure.rb +1 -1
- data/lib/rails_app_spec/rspec.rb +1 -1
- data/rails-app-spec.gemspec +35 -10
- data/spec/rails_app_spec/matchers/{file/have_dir_spec.rb → directory/have_rails_dir_spec.rb} +0 -0
- data/spec/rails_app_spec/matchers/{file/have_file_spec.rb → directory/have_rails_dirs_spec.rb} +0 -0
- data/spec/rails_app_spec/matchers/file/have_rails_file_spec.rb +0 -0
- data/spec/rails_app_spec/matchers/file/have_rails_files_spec.rb +0 -0
- data/spec/rails_app_spec/matchers/special/have_app_config_spec.rb +0 -0
- data/spec/rails_app_spec/matchers/special/have_gem_spec.rb +0 -0
- data/spec/rails_app_spec/matchers/special/have_gems_spec.rb +0 -0
- metadata +52 -13
data/README.markdown
CHANGED
@@ -24,11 +24,24 @@ Usage example (teaser):
|
|
24
24
|
klass.should have_method :index
|
25
25
|
end
|
26
26
|
end
|
27
|
+
|
28
|
+
Rails.root.should have_view_dirs :person, :post, :blog
|
29
|
+
|
30
|
+
Rails.root.should have_model_dirs :admin, :editor
|
31
|
+
|
32
|
+
Rails.root.should have_controller_files :person, :post, :blog
|
33
|
+
|
34
|
+
Rails.root.should have_stylesheet_files :light, :basic, :dark
|
35
|
+
Rails.root.should have_javascript_files :form_validation, :effects
|
27
36
|
end
|
28
37
|
</pre>
|
29
38
|
|
30
39
|
This library takes advantage of *code-spec*, *file-spec* and other essential spec extensions I have created ;)
|
31
40
|
|
41
|
+
## TODO
|
42
|
+
|
43
|
+
Create specs for the special file matchers to make sure they work for all edge cases!
|
44
|
+
|
32
45
|
## Note on Patches/Pull Requests
|
33
46
|
|
34
47
|
* Fork the project.
|
data/Rakefile
CHANGED
@@ -7,9 +7,10 @@ begin
|
|
7
7
|
gem.email = "kmandrup@gmail.com"
|
8
8
|
gem.homepage = "http://github.com/kristianmandrup/rails-app-spec"
|
9
9
|
gem.authors = ["Kristian Mandrup"]
|
10
|
-
gem.add_dependency "rspec", "~> 2.0.0"
|
10
|
+
gem.add_dependency "rspec", "~> 2.0.0.beta.22"
|
11
11
|
gem.add_dependency "require_all", "~> 1.1.0"
|
12
12
|
gem.add_dependency "rails3_artifactor", "~> 0.1.4"
|
13
|
+
gem.add_dependency "sugar-high", "~> 0.2.6"
|
13
14
|
gem.add_dependency "code-spec", "~> 0.2.1"
|
14
15
|
gem.add_dependency "file-spec", "~> 0.1.1"
|
15
16
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.7
|
data/lib/rails-app-spec.rb
CHANGED
@@ -2,101 +2,22 @@
|
|
2
2
|
|
3
3
|
module RSpec::RailsApp::Artifact
|
4
4
|
module Matchers
|
5
|
-
class HaveArtifact < RSpec::RubyContentMatcher
|
6
|
-
|
7
|
-
# include ::Rails3::Assist::Directory
|
8
|
-
|
9
|
-
# include Rails::Migration::Assist::ClassMethods
|
5
|
+
class HaveArtifact < RSpec::RubyContentMatcher
|
10
6
|
include Rails3::Assist::Artifact::FileName
|
11
|
-
|
12
|
-
|
13
|
-
attr_accessor :artifact_type, :artifact_name, :class_type, :content
|
14
|
-
# class
|
15
|
-
attr_accessor :name, :type, :postfix
|
16
|
-
# subclass
|
17
|
-
attr_accessor :superclass
|
18
|
-
|
19
|
-
attr_accessor :folder, :action, :view_ext
|
20
|
-
|
21
|
-
attr_accessor :artifact_found
|
22
|
-
|
23
|
-
SUPERCLASS_MAP = {
|
24
|
-
:observer => 'ActiveRecord::Observer',
|
25
|
-
:mailer => 'ActionMailer::Base',
|
26
|
-
:migration => 'ActiveRecord::Migration'
|
27
|
-
}
|
28
|
-
|
29
|
-
POSTFIX = [:helper, :observer, :controller, :mailer]
|
30
|
-
|
31
|
-
def has_postfix? key
|
32
|
-
POSTFIX.include? key
|
33
|
-
end
|
7
|
+
include Artifact::Matcher::Helper
|
34
8
|
|
35
9
|
def initialize(name, artifact_type)
|
36
|
-
self.artifact_type = artifact_type
|
37
|
-
|
38
10
|
extend "Rails3::Assist::Artifact::#{artifact_type.to_s.camelize}".constantize
|
39
|
-
|
40
|
-
if name.kind_of? Hash
|
41
|
-
view_options = name
|
42
|
-
self.folder = view_options[:folder]
|
43
|
-
self.action = view_options[:action]
|
44
|
-
self.view_ext = view_options[:view_ext]
|
45
|
-
self.artifact_type = :view
|
46
|
-
return nil
|
47
|
-
end
|
48
|
-
|
49
|
-
self.postfix = artifact_type.to_s.camelize if has_postfix? artifact_type
|
50
|
-
self.artifact_name = name.to_s.downcase
|
51
|
-
self.name = name.to_s.camelize
|
52
11
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
self.class_type = :class
|
57
|
-
self.type = :class
|
58
|
-
super name
|
59
|
-
when :observer, :migration, :mailer
|
60
|
-
self.class_type = :subclass
|
61
|
-
# artifact subclass check
|
62
|
-
self.superclass = SUPERCLASS_MAP[artifact_type]
|
63
|
-
super name
|
64
|
-
when :model
|
65
|
-
# check class == name
|
66
|
-
self.class_type = :class
|
67
|
-
super name
|
68
|
-
end
|
12
|
+
parse_name name
|
13
|
+
parse_type artifact_type
|
14
|
+
super name if artifact_type != :view
|
69
15
|
end
|
70
16
|
|
71
17
|
def matches?(root_path, &block)
|
72
18
|
@root_path = root_path
|
73
|
-
artifact_found =
|
74
|
-
|
75
|
-
find_view_method = "#{artifact_type}_file_name"
|
76
|
-
File.expand_path(send find_view_method, folder, action, view_ext, :root_path => root_path)
|
77
|
-
else
|
78
|
-
find_existing_artifact_method = "existing_#{artifact_type}_file"
|
79
|
-
if respond_to? find_existing_artifact_method
|
80
|
-
begin
|
81
|
-
send find_existing_artifact_method, artifact_name, artifact_type, :root_path => root_path
|
82
|
-
rescue Exception => e
|
83
|
-
@error_msg = e.message
|
84
|
-
@trace = e.backtrace.join "\n"
|
85
|
-
nil
|
86
|
-
end
|
87
|
-
else
|
88
|
-
raise "The method ##{find_existing_artifact_method} to find the artifact was not available"
|
89
|
-
end
|
90
|
-
end
|
91
|
-
if !artifact_found
|
92
|
-
self.artifact_found = '[unknown]'
|
93
|
-
return nil
|
94
|
-
end
|
95
|
-
|
96
|
-
@file_found = File.file?(artifact_found)
|
97
|
-
return nil if !@file_found
|
98
|
-
|
99
|
-
artifact_found = File.expand_path(artifact_found)
|
19
|
+
artifact_found = find_artifact
|
20
|
+
return nil if !artifact_found
|
100
21
|
|
101
22
|
# check file content for class or subclass
|
102
23
|
self.content = File.read(artifact_found)
|
@@ -106,47 +27,7 @@ module RSpec::RailsApp::Artifact
|
|
106
27
|
return true
|
107
28
|
end
|
108
29
|
super content, &block
|
109
|
-
end
|
110
|
-
|
111
|
-
# TODO: Refactor, make DRY
|
112
|
-
def main_expr
|
113
|
-
# determine which regexp to use: class or subclass
|
114
|
-
case class_type
|
115
|
-
when :subclass
|
116
|
-
'class' + SPACES + "#{name}#{postfix}" + OPT_SPACES + '<' + OPT_SPACES + "#{superclass}" + ANY_GROUP
|
117
|
-
when :class
|
118
|
-
"#{type}" + SPACES + "#{name}#{postfix}" + SPACES + ANY_GROUP
|
119
|
-
else
|
120
|
-
raise "Class type must be either :class or :subclass, was #{class_type}"
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
def alt_end
|
125
|
-
'class'
|
126
|
-
end
|
127
|
-
|
128
|
-
def should_be_msg
|
129
|
-
case class_type
|
130
|
-
when :subclass
|
131
|
-
"have the name: #{name}#{postfix} and be a subclass of: #{superclass}"
|
132
|
-
when :class
|
133
|
-
"have the name: #{name}#{postfix}"
|
134
|
-
else
|
135
|
-
raise "Class type must be either :class or :subclass, was #{class_type}" if artifact_type != :view
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
def failure_message
|
140
|
-
return "Expected the #{artifact_type} #{artifact_name} to exist at #{artifact_found} (root = #{@root_path}), but it didn't.\nError: #{@error_msg}.\n\nTrace:\n #{@trace}" if !@file_found
|
141
|
-
puts "Content: #{content}"
|
142
|
-
"Expected the file: #{artifact_name} to have a #{artifact_type} class. The class should #{should_be_msg}"
|
143
|
-
end
|
144
|
-
|
145
|
-
def negative_failure_message
|
146
|
-
return "Did not expect the #{artifact_type} #{artifact_name} to exist at #{artifact_found}, but it did" if !@file_found
|
147
|
-
puts "Content: #{content}"
|
148
|
-
"Did not expected the file: #{artifact_name} to have a #{artifact_type} class. The class should not #{should_be_msg}"
|
149
|
-
end
|
30
|
+
end
|
150
31
|
end
|
151
32
|
|
152
33
|
def have_artifact(relative, type = nil)
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# Combines artifact file exist check with class check!
|
2
|
+
module RSpec::RailsApp::Artifact
|
3
|
+
module Matchers
|
4
|
+
class HaveArtifacts < RSpec::RubyContentMatcher
|
5
|
+
|
6
|
+
include Rails3::Assist::Artifact::FileName
|
7
|
+
include ArtifactFile::Matcher::Helper
|
8
|
+
include Artifact::Matcher::Helper
|
9
|
+
|
10
|
+
attr_reader :names
|
11
|
+
|
12
|
+
def initialize(artifact_type, *names)
|
13
|
+
extend "Rails3::Assist::Artifact::#{artifact_type.to_s.camelize}".constantize
|
14
|
+
|
15
|
+
@names = names
|
16
|
+
parse_type artifact_type
|
17
|
+
if artifact_type == :view
|
18
|
+
handle_view artifact_type, names
|
19
|
+
else
|
20
|
+
super name
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def matches?(root_path, &block)
|
25
|
+
@root_path = root_path
|
26
|
+
|
27
|
+
names.to_strings.each do |name|
|
28
|
+
parse_name name
|
29
|
+
artifact_found = find_artifact
|
30
|
+
|
31
|
+
# check file content for class or subclass
|
32
|
+
self.content = File.read(artifact_found)
|
33
|
+
|
34
|
+
res = if artifact_type == :view
|
35
|
+
true
|
36
|
+
else
|
37
|
+
super content
|
38
|
+
end
|
39
|
+
return false if !res
|
40
|
+
end
|
41
|
+
yield if block
|
42
|
+
true
|
43
|
+
end
|
44
|
+
|
45
|
+
protected
|
46
|
+
|
47
|
+
def parse_name name
|
48
|
+
if name.kind_of? Hash
|
49
|
+
self.action = name
|
50
|
+
return nil
|
51
|
+
end
|
52
|
+
self.artifact_name = name.to_s.downcase
|
53
|
+
self.name = name.to_s.camelize
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def have_artifacts(type, *names)
|
58
|
+
HaveArtifacts.new(type, *names)
|
59
|
+
end
|
60
|
+
alias_method :contain_artifact, :have_artifact
|
61
|
+
|
62
|
+
(::Rails3::Assist.artifacts - [:view]).each do |name|
|
63
|
+
plural_name = name.to_s.pluralize
|
64
|
+
class_eval %{
|
65
|
+
def have_#{plural_name} *names
|
66
|
+
have_artifacts :#{name}, *names
|
67
|
+
end
|
68
|
+
alias_method :contain_#{plural_name}, :have_#{plural_name}
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
72
|
+
def have_views folder, *args
|
73
|
+
have_artifacts :view, *args
|
74
|
+
end
|
75
|
+
alias_method :contain_view, :have_view
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
@@ -1,62 +1,34 @@
|
|
1
1
|
module RSpec::RailsApp::ArtifactFile
|
2
2
|
module Matchers
|
3
3
|
class HaveRailsArtifactFile
|
4
|
-
|
5
|
-
# include Rails::Migration::Assist::ClassMethods
|
6
4
|
include ::Rails3::Assist::Artifact::FileName
|
7
|
-
# include ::Rails::Assist::Migration::FileName
|
8
5
|
|
9
6
|
attr_accessor :name, :artifact_type, :artifact_name
|
10
|
-
|
11
7
|
attr_accessor :folder, :action, :view_ext
|
12
8
|
|
9
|
+
include ArtifactFile::Matcher::Helper
|
10
|
+
|
13
11
|
def initialize(name, artifact_type = nil)
|
14
12
|
self.artifact_type = artifact_type
|
15
13
|
|
16
14
|
extend "Rails3::Assist::Artifact::#{artifact_type.to_s.camelize}".constantize
|
17
15
|
|
18
16
|
if name.kind_of? Hash
|
19
|
-
|
20
|
-
self.folder = view_options[:folder]
|
21
|
-
self.action = view_options[:action]
|
22
|
-
self.view_ext = view_options[:view_ext]
|
23
|
-
self.artifact_type = :view
|
17
|
+
set_view name
|
24
18
|
return nil
|
25
19
|
end
|
26
20
|
self.artifact_name = name.to_s
|
27
21
|
end
|
28
22
|
|
29
23
|
def matches?(root_path, &block)
|
30
|
-
self.artifact_name =
|
31
|
-
when :view
|
32
|
-
find_view_method = "#{artifact_type}_file_name"
|
33
|
-
File.expand_path(send find_view_method, folder, action, view_ext, :root_path => root_path)
|
34
|
-
else
|
35
|
-
find_existing_artifact_method = "existing_#{artifact_type}_file"
|
36
|
-
if respond_to? find_existing_artifact_method
|
37
|
-
send find_existing_artifact_method, artifact_name, artifact_type, :root_path => root_path
|
38
|
-
else
|
39
|
-
raise "The method ##{find_existing_artifact_method} to find the artifact was not available"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
# puts "artifact_name: #{artifact_name}"
|
24
|
+
self.artifact_name = get_artifact_name
|
44
25
|
|
45
26
|
match = File.file? artifact_name
|
46
27
|
if block && match
|
47
28
|
yield File.read(artifact_name)
|
48
29
|
end
|
49
30
|
match
|
50
|
-
end
|
51
|
-
|
52
|
-
def failure_message
|
53
|
-
"Expected the #{artifact_type} #{artifact_name} to exist, but it didn't"
|
54
|
-
end
|
55
|
-
|
56
|
-
def negative_failure_message
|
57
|
-
"Did not expect the #{artifact_type} #{artifact_name} to exist, but it did"
|
58
|
-
end
|
59
|
-
|
31
|
+
end
|
60
32
|
end
|
61
33
|
|
62
34
|
def have_rails_artifact_file(relative, artifact_type = nil)
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module RSpec::RailsApp::ArtifactFile
|
2
|
+
module Matchers
|
3
|
+
class HaveRailsArtifactFiles
|
4
|
+
include ::Rails3::Assist::Artifact::FileName
|
5
|
+
include ArtifactFile::Matcher::Helper
|
6
|
+
|
7
|
+
def initialize(artifact_type, *names)
|
8
|
+
@names = names
|
9
|
+
extend "Rails3::Assist::Artifact::#{artifact_type.to_s.camelize}".constantize
|
10
|
+
|
11
|
+
handle_view artifact_type, names
|
12
|
+
|
13
|
+
self.artifact_type = artifact_type
|
14
|
+
self.artifact_name = name.to_s
|
15
|
+
end
|
16
|
+
|
17
|
+
def matches?(root_path, &block)
|
18
|
+
names.to_strings.each do |name|
|
19
|
+
self.artifact_name = get_artifact_name
|
20
|
+
return false if !File.file?(artifact_name)
|
21
|
+
end
|
22
|
+
yield if block
|
23
|
+
true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def have_rails_artifact_files(artifact_type, *names)
|
28
|
+
HaveRailsArtifactFiles.new(artifact_type, *names)
|
29
|
+
end
|
30
|
+
alias_method :contain_rails_artifact_files, :have_rails_artifact_files
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module ArtifactFile
|
2
|
+
module Matcher
|
3
|
+
end
|
4
|
+
end
|
5
|
+
|
6
|
+
module ArtifactFile::Matcher
|
7
|
+
module Helper
|
8
|
+
attr_accessor :name, :artifact_type, :artifact_name
|
9
|
+
attr_accessor :folder, :action, :view_ext
|
10
|
+
attr_reader :names, :root_path
|
11
|
+
|
12
|
+
def set_view name
|
13
|
+
view_options = name
|
14
|
+
self.folder = view_options[:folder]
|
15
|
+
self.action = view_options[:action]
|
16
|
+
self.view_ext = view_options[:view_ext]
|
17
|
+
self.artifact_type = :view
|
18
|
+
end
|
19
|
+
|
20
|
+
def handle_view artifact_type, names
|
21
|
+
if artifact_type == :view
|
22
|
+
lang_option = last_arg({:lang => 'erb.html'}, names)
|
23
|
+
raise ArgumentException, ':folder option must be specified in the last hash argument for #have_views' if !lang_option[:folder]
|
24
|
+
self.folder = lang_option[:folder]
|
25
|
+
self.view_ext = lang_option[:lang] || {:lang => 'erb.html'}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def get_artifact_name
|
30
|
+
case artifact_type
|
31
|
+
when :view
|
32
|
+
find_view_method = "#{artifact_type}_file_name"
|
33
|
+
File.expand_path(send find_view_method, folder, action, view_ext, :root_path => root_path)
|
34
|
+
else
|
35
|
+
find_existing_artifact_method = "existing_#{artifact_type}_file"
|
36
|
+
if respond_to? find_existing_artifact_method
|
37
|
+
send find_existing_artifact_method, artifact_name, artifact_type, :root_path => root_path
|
38
|
+
else
|
39
|
+
raise "The method ##{find_existing_artifact_method} to find the artifact was not available"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def msg
|
45
|
+
"the #{artifact_type} #{artifact_name} to exist"
|
46
|
+
end
|
47
|
+
|
48
|
+
def failure_message
|
49
|
+
"Expected #{msg}"
|
50
|
+
end
|
51
|
+
|
52
|
+
def negative_failure_message
|
53
|
+
"Did not expect #{msg}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,134 @@
|
|
1
|
+
module Artifact
|
2
|
+
module Matcher
|
3
|
+
end
|
4
|
+
end
|
5
|
+
|
6
|
+
module Artifact::Matcher
|
7
|
+
module Helper
|
8
|
+
attr_accessor :artifact_type, :artifact_name, :class_type, :content
|
9
|
+
# class
|
10
|
+
attr_accessor :name, :type, :postfix
|
11
|
+
# subclass
|
12
|
+
attr_accessor :superclass
|
13
|
+
attr_accessor :folder, :action, :view_ext
|
14
|
+
attr_accessor :artifact_found
|
15
|
+
attr_reader :root_path
|
16
|
+
|
17
|
+
SUPERCLASS_MAP = {
|
18
|
+
:observer => 'ActiveRecord::Observer',
|
19
|
+
:mailer => 'ActionMailer::Base',
|
20
|
+
:migration => 'ActiveRecord::Migration'
|
21
|
+
}
|
22
|
+
|
23
|
+
POSTFIX = [:helper, :observer, :controller, :mailer]
|
24
|
+
|
25
|
+
def has_postfix? key
|
26
|
+
POSTFIX.include? key
|
27
|
+
end
|
28
|
+
|
29
|
+
def parse_type artifact_type
|
30
|
+
self.artifact_type = artifact_type
|
31
|
+
self.postfix = artifact_type.to_s.camelize if has_postfix? artifact_type
|
32
|
+
case artifact_type
|
33
|
+
when :helper, :controller
|
34
|
+
# artifact class check
|
35
|
+
self.class_type = :class
|
36
|
+
self.type = :class
|
37
|
+
when :observer, :migration, :mailer
|
38
|
+
self.class_type = :subclass
|
39
|
+
# artifact subclass check
|
40
|
+
self.superclass = SUPERCLASS_MAP[artifact_type]
|
41
|
+
when :model
|
42
|
+
# check class == name
|
43
|
+
self.class_type = :class
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def parse_name name
|
48
|
+
if name.kind_of? Hash
|
49
|
+
view_options = name
|
50
|
+
self.folder = view_options[:folder]
|
51
|
+
self.action = view_options[:action]
|
52
|
+
self.view_ext = view_options[:view_ext]
|
53
|
+
self.artifact_type = :view
|
54
|
+
return nil
|
55
|
+
end
|
56
|
+
self.artifact_name = name.to_s.downcase
|
57
|
+
self.name = name.to_s.camelize
|
58
|
+
end
|
59
|
+
|
60
|
+
def find_artifact
|
61
|
+
artifact_found = case artifact_type
|
62
|
+
when :view
|
63
|
+
find_view_method = "#{artifact_type}_file_name"
|
64
|
+
File.expand_path(send find_view_method, folder, action, view_ext, :root_path => root_path)
|
65
|
+
else
|
66
|
+
find_existing_artifact_method = "existing_#{artifact_type}_file"
|
67
|
+
if respond_to? find_existing_artifact_method
|
68
|
+
begin
|
69
|
+
send find_existing_artifact_method, artifact_name, artifact_type, :root_path => root_path
|
70
|
+
rescue Exception => e
|
71
|
+
@error_msg = e.message
|
72
|
+
@trace = e.backtrace.join "\n"
|
73
|
+
nil
|
74
|
+
end
|
75
|
+
else
|
76
|
+
raise "The method ##{find_existing_artifact_method} to find the artifact was not available"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
if !artifact_found
|
80
|
+
self.artifact_found = '[unknown]'
|
81
|
+
return nil
|
82
|
+
end
|
83
|
+
|
84
|
+
@file_found = File.file?(artifact_found)
|
85
|
+
return nil if !@file_found
|
86
|
+
|
87
|
+
File.expand_path(artifact_found)
|
88
|
+
end
|
89
|
+
|
90
|
+
SPACES = '\s+'
|
91
|
+
OPT_SPACES = '\s*'
|
92
|
+
ANY_GROUP = '(.*)'
|
93
|
+
|
94
|
+
# TODO: Refactor, make DRY
|
95
|
+
def main_expr
|
96
|
+
# determine which regexp to use: class or subclass
|
97
|
+
case class_type
|
98
|
+
when :subclass
|
99
|
+
'class' + SPACES + "#{name}#{postfix}" + OPT_SPACES + '<' + OPT_SPACES + "#{superclass}" + ANY_GROUP
|
100
|
+
when :class
|
101
|
+
"#{type}" + SPACES + "#{name}#{postfix}" + SPACES + ANY_GROUP
|
102
|
+
else
|
103
|
+
raise "Class type must be either :class or :subclass, was #{class_type}"
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def alt_end
|
108
|
+
'class'
|
109
|
+
end
|
110
|
+
|
111
|
+
def should_be_msg
|
112
|
+
case class_type
|
113
|
+
when :subclass
|
114
|
+
"have the name: #{name}#{postfix} and be a subclass of: #{superclass}"
|
115
|
+
when :class
|
116
|
+
"have the name: #{name}#{postfix}"
|
117
|
+
else
|
118
|
+
raise "Class type must be either :class or :subclass, was #{class_type}" if artifact_type != :view
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def failure_message
|
123
|
+
return "Expected the #{artifact_type} #{artifact_name} to exist at #{artifact_found} (root = #{@root_path}), but it didn't.\nError: #{@error_msg}.\n\nTrace:\n #{@trace}" if !@file_found
|
124
|
+
puts "Content: #{content}"
|
125
|
+
"Expected the file: #{artifact_name} to have a #{artifact_type} class. The class should #{should_be_msg}"
|
126
|
+
end
|
127
|
+
|
128
|
+
def negative_failure_message
|
129
|
+
return "Did not expect the #{artifact_type} #{artifact_name} to exist at #{artifact_found}, but it did" if !@file_found
|
130
|
+
puts "Content: #{content}"
|
131
|
+
"Did not expected the file: #{artifact_name} to have a #{artifact_type} class. The class should not #{should_be_msg}"
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require_all File.dirname(__FILE__) + '/artifact/shared'
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module RSpec::RailsApp::Directory
|
2
|
+
module Matchers
|
3
|
+
class HaveArtifactDirs
|
4
|
+
|
5
|
+
attr_accessor :artifact_type, :dir, :dir_name, :dirs
|
6
|
+
|
7
|
+
def initialize artifact_type, *dirs
|
8
|
+
@artifact_type = artifact_type
|
9
|
+
@dirs = dirs
|
10
|
+
end
|
11
|
+
|
12
|
+
def matches?(obj, &block)
|
13
|
+
dirs.to_strings.each do |dir_name|
|
14
|
+
@dir_name = dir_name
|
15
|
+
@dir = File.join(send :"#{artifact_type}_dir", dir_name)
|
16
|
+
return false if !File.directory?(dir)
|
17
|
+
end
|
18
|
+
yield if block
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
def msg
|
23
|
+
"Rails app to have the #{artifact_type} dir: #{dir_name}"
|
24
|
+
end
|
25
|
+
|
26
|
+
def failure_message
|
27
|
+
"Expected #{msg}"
|
28
|
+
end
|
29
|
+
|
30
|
+
def negative_failure_message
|
31
|
+
"Did not expect #{msg}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
::Rails3::Assist::Directory::App.app_directories.each do |name|
|
36
|
+
class_eval %{
|
37
|
+
def have_#{name}_dirs *names
|
38
|
+
have_artifact_dirs :#{name}, *names
|
39
|
+
end
|
40
|
+
}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module RSpec::RailsApp::Directory
|
2
|
+
module Matchers
|
3
|
+
class HaveRailsDirs
|
4
|
+
|
5
|
+
attr_accessor :dir, :dir_name, :dirs
|
6
|
+
|
7
|
+
def initialize *dirs
|
8
|
+
@dirs = dirs
|
9
|
+
end
|
10
|
+
|
11
|
+
def matches?(obj, &block)
|
12
|
+
dirs.to_strings.each do |dir_name|
|
13
|
+
@dir_name = dir_name
|
14
|
+
@dir = send :"#{dir_name}_dir"
|
15
|
+
return false if !File.directory?(dir)
|
16
|
+
end
|
17
|
+
yield if block
|
18
|
+
true
|
19
|
+
end
|
20
|
+
|
21
|
+
def failure_message
|
22
|
+
"Expected Rails app to have dir: #{dir_name}, but it didn't"
|
23
|
+
end
|
24
|
+
|
25
|
+
def negative_failure_message
|
26
|
+
"Did not expected Rails app to have dir: #{dir_name}, but it did"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def have_rails_dirs *dirs
|
31
|
+
HaveRailsDirs.new *dirs
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -1,10 +1,11 @@
|
|
1
|
+
require 'rails_app_spec/matchers/file/rails_file_helper'
|
2
|
+
|
1
3
|
module RSpec::RailsApp::File
|
2
4
|
module Matchers
|
3
5
|
class HaveRailsFile
|
4
6
|
include ::Rails3::Assist::Artifact
|
7
|
+
include RailsFile::Matcher::Helper
|
5
8
|
|
6
|
-
attr_reader :file, :type, :name
|
7
|
-
|
8
9
|
def initialize(name, type = nil)
|
9
10
|
@type = type if type
|
10
11
|
@name = name
|
@@ -13,15 +14,7 @@ module RSpec::RailsApp::File
|
|
13
14
|
def matches?(obj, &block)
|
14
15
|
@file = type ? send(:"#{type}_file", name) : send(:"#{name}_file")
|
15
16
|
File.file? file
|
16
|
-
end
|
17
|
-
|
18
|
-
def failure_message
|
19
|
-
"Expected Rails app to have file: #{file}, but it didn't"
|
20
|
-
end
|
21
|
-
|
22
|
-
def negative_failure_message
|
23
|
-
"Did not expected Rails app to have file: #{file}, but it did"
|
24
|
-
end
|
17
|
+
end
|
25
18
|
end
|
26
19
|
|
27
20
|
def have_rails_file(type = nil)
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rails_app_spec/matchers/file/rails_file_helper'
|
2
|
+
|
3
|
+
module RSpec::RailsApp::File
|
4
|
+
module Matchers
|
5
|
+
class HaveRailsFiles
|
6
|
+
include ::Rails3::Assist::Artifact
|
7
|
+
include RailsFile::Matcher::Helper
|
8
|
+
|
9
|
+
attr_reader :names
|
10
|
+
|
11
|
+
def initialize(type, *names)
|
12
|
+
@type = type
|
13
|
+
@names = names
|
14
|
+
end
|
15
|
+
|
16
|
+
def matches?(obj, &block)
|
17
|
+
names.to_strings.each do |name|
|
18
|
+
@name = name
|
19
|
+
@file = send(:"#{type}_file", name)
|
20
|
+
return false if !File.file?(file)
|
21
|
+
end
|
22
|
+
yield if block
|
23
|
+
true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def have_rails_files(type, *names)
|
28
|
+
HaveRailsFiles.new(type, *names)
|
29
|
+
end
|
30
|
+
|
31
|
+
[:initializer, :db, :migration, :locale, :javascript, :stylesheet].each do |name|
|
32
|
+
class_eval %{
|
33
|
+
def have_#{name}_files *names
|
34
|
+
have_rails_files :#{name}, *names
|
35
|
+
end
|
36
|
+
}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module RailsFile
|
2
|
+
module Matcher
|
3
|
+
module Helper
|
4
|
+
attr_reader :file, :type, :name
|
5
|
+
|
6
|
+
def msg
|
7
|
+
"Rails app to have the #{type} file called #{name} at: #{file}"
|
8
|
+
end
|
9
|
+
|
10
|
+
def failure_message
|
11
|
+
"Expected #{msg}"
|
12
|
+
end
|
13
|
+
|
14
|
+
def negative_failure_message
|
15
|
+
"Did not expect #{msg}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# open application_file
|
2
|
+
# see if there is the config.[statement] = [expr]
|
3
|
+
|
4
|
+
require 'sugar-high/kind_of'
|
5
|
+
|
6
|
+
module RSpec::RailsApp::Content
|
7
|
+
module Matchers
|
8
|
+
class HaveGem
|
9
|
+
extend Rails3::Assist::UseMacro
|
10
|
+
use_helpers :file
|
11
|
+
|
12
|
+
attr_reader :name, :version, :options
|
13
|
+
|
14
|
+
def initialize *args
|
15
|
+
raise ArgumentException, "First argument must name the gem" if !args.first.kind_of_label?
|
16
|
+
@name = args.delete_at(0)
|
17
|
+
return if args.size == 0 || !args[1].kind_of_label?
|
18
|
+
|
19
|
+
@version = args.delete_at(1)
|
20
|
+
@options = {}
|
21
|
+
|
22
|
+
return if args.empty?
|
23
|
+
raise ArgumentException, "Last argument of gem statement must be a n options Hash" if !args.last.kind_of? Hash
|
24
|
+
@options = args.last
|
25
|
+
end
|
26
|
+
|
27
|
+
# TODO: relative to root_path ?
|
28
|
+
def matches?(root_path=nil)
|
29
|
+
content = read_gemfile
|
30
|
+
return nil if content.empty?
|
31
|
+
(content =~ /gem\s+#{name_expr}#{version_expr}/)
|
32
|
+
end
|
33
|
+
|
34
|
+
def name_expr
|
35
|
+
"('|\")" + name + '\1'
|
36
|
+
end
|
37
|
+
|
38
|
+
def version_expr
|
39
|
+
'\s*,\s*' + "('|\")" + name + '\2' if version
|
40
|
+
end
|
41
|
+
|
42
|
+
def msg
|
43
|
+
"the Gemfile to have a gem statement: gem '#{name}'#{version_txt}'"
|
44
|
+
end
|
45
|
+
|
46
|
+
def version_txt
|
47
|
+
version ? ", '#{version}'" : ""
|
48
|
+
end
|
49
|
+
|
50
|
+
def failure_message
|
51
|
+
"Expected #{msg}"
|
52
|
+
end
|
53
|
+
|
54
|
+
def negative_failure_message
|
55
|
+
"Did not expect #{msg}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# config.autoload_paths += %W(#{Rails.root}/lib)
|
60
|
+
# have_app_config :autoload_paths => '%W(#{Rails.root}/lib)', :op => '+='
|
61
|
+
def have_gem *args
|
62
|
+
HaveGem.new *args
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# open application_file
|
2
|
+
# see if there is the config.[statement] = [expr]
|
3
|
+
|
4
|
+
require 'sugar-high/kind_of'
|
5
|
+
require 'sugar-high/array'
|
6
|
+
|
7
|
+
module RSpec::RailsApp::Content
|
8
|
+
module Matchers
|
9
|
+
class HaveGems
|
10
|
+
extend Rails3::Assist::UseMacro
|
11
|
+
use_helpers :file
|
12
|
+
|
13
|
+
attr_reader :names, :name
|
14
|
+
|
15
|
+
def initialize *names
|
16
|
+
@names = names.to_strings
|
17
|
+
end
|
18
|
+
|
19
|
+
# TODO: relative to root_path ?
|
20
|
+
def matches?(root_path=nil)
|
21
|
+
content = read_gemfile
|
22
|
+
return nil if content.empty?
|
23
|
+
names.each do |name|
|
24
|
+
(content =~ /gem\s+#{name_expr(name)}/)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def name_expr gem_name
|
29
|
+
@name = gem_name
|
30
|
+
"('|\")" + gem_name + '\1'
|
31
|
+
end
|
32
|
+
|
33
|
+
def msg
|
34
|
+
"the Gemfile to have a gem statement: gem '#{name}'"
|
35
|
+
end
|
36
|
+
|
37
|
+
def version_txt
|
38
|
+
version ? ", '#{version}'" : ""
|
39
|
+
end
|
40
|
+
|
41
|
+
def failure_message
|
42
|
+
"Expected #{msg}"
|
43
|
+
end
|
44
|
+
|
45
|
+
def negative_failure_message
|
46
|
+
"Did not expect #{msg}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# config.autoload_paths += %W(#{Rails.root}/lib)
|
51
|
+
# have_app_config :autoload_paths => '%W(#{Rails.root}/lib)', :op => '+='
|
52
|
+
def have_gems *names
|
53
|
+
HaveGems.new *names
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require_all File.dirname(__FILE__) + '/matchers'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
RSpec.configure do |config|
|
2
2
|
config.include RSpec::RailsApp::File::Matchers
|
3
|
-
config.include RSpec::RailsApp::
|
3
|
+
config.include RSpec::RailsApp::Directory::Matchers
|
4
4
|
config.include RSpec::RailsApp::Content::Matchers
|
5
5
|
config.include RSpec::RailsApp::Artifact::Matchers
|
6
6
|
config.include RSpec::RailsApp::ArtifactClass::Matchers
|
data/lib/rails_app_spec/rspec.rb
CHANGED
data/rails-app-spec.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rails-app-spec}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kristian Mandrup"]
|
12
|
-
s.date = %q{2010-09-
|
12
|
+
s.date = %q{2010-09-14}
|
13
13
|
s.description = %q{RSpec 2 matchers to spec the structure of your Rails 3 app}
|
14
14
|
s.email = %q{kmandrup@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -25,14 +25,26 @@ Gem::Specification.new do |s|
|
|
25
25
|
"Rakefile",
|
26
26
|
"VERSION",
|
27
27
|
"lib/rails-app-spec.rb",
|
28
|
+
"lib/rails_app_spec/matchers.rb",
|
29
|
+
"lib/rails_app_spec/matchers/artifact.rb",
|
28
30
|
"lib/rails_app_spec/matchers/artifact/class/have_artifact_class.rb",
|
29
31
|
"lib/rails_app_spec/matchers/artifact/class/have_artifact_subclass.rb",
|
30
32
|
"lib/rails_app_spec/matchers/artifact/have_artifact.rb",
|
31
33
|
"lib/rails_app_spec/matchers/artifact/have_artifact_file.rb",
|
34
|
+
"lib/rails_app_spec/matchers/artifact/have_artifacts.rb",
|
32
35
|
"lib/rails_app_spec/matchers/artifact/have_rails_artifact_file.rb",
|
33
|
-
"lib/rails_app_spec/matchers/
|
36
|
+
"lib/rails_app_spec/matchers/artifact/have_rails_artifact_files.rb",
|
37
|
+
"lib/rails_app_spec/matchers/artifact/shared/artifact_file_helper.rb",
|
38
|
+
"lib/rails_app_spec/matchers/artifact/shared/artifact_helper.rb",
|
39
|
+
"lib/rails_app_spec/matchers/directory/have_artifact_dirs.rb",
|
40
|
+
"lib/rails_app_spec/matchers/directory/have_rails_dir.rb",
|
41
|
+
"lib/rails_app_spec/matchers/directory/have_rails_dirs.rb",
|
34
42
|
"lib/rails_app_spec/matchers/file/have_rails_file.rb",
|
43
|
+
"lib/rails_app_spec/matchers/file/have_rails_files.rb",
|
44
|
+
"lib/rails_app_spec/matchers/file/rails_file_helper.rb",
|
35
45
|
"lib/rails_app_spec/matchers/special/have_app_config.rb",
|
46
|
+
"lib/rails_app_spec/matchers/special/have_gem.rb",
|
47
|
+
"lib/rails_app_spec/matchers/special/have_gems.rb",
|
36
48
|
"lib/rails_app_spec/namespaces.rb",
|
37
49
|
"lib/rails_app_spec/rspec.rb",
|
38
50
|
"lib/rails_app_spec/rspec/configure.rb",
|
@@ -47,8 +59,13 @@ Gem::Specification.new do |s|
|
|
47
59
|
"spec/rails_app_spec/matchers/artifact/model_spec.rb",
|
48
60
|
"spec/rails_app_spec/matchers/artifact/observer_spec.rb",
|
49
61
|
"spec/rails_app_spec/matchers/artifact/view_spec.rb",
|
50
|
-
"spec/rails_app_spec/matchers/
|
51
|
-
"spec/rails_app_spec/matchers/
|
62
|
+
"spec/rails_app_spec/matchers/directory/have_rails_dir_spec.rb",
|
63
|
+
"spec/rails_app_spec/matchers/directory/have_rails_dirs_spec.rb",
|
64
|
+
"spec/rails_app_spec/matchers/file/have_rails_file_spec.rb",
|
65
|
+
"spec/rails_app_spec/matchers/file/have_rails_files_spec.rb",
|
66
|
+
"spec/rails_app_spec/matchers/special/have_app_config_spec.rb",
|
67
|
+
"spec/rails_app_spec/matchers/special/have_gem_spec.rb",
|
68
|
+
"spec/rails_app_spec/matchers/special/have_gems_spec.rb",
|
52
69
|
"spec/spec_helper.rb"
|
53
70
|
]
|
54
71
|
s.homepage = %q{http://github.com/kristianmandrup/rails-app-spec}
|
@@ -65,8 +82,13 @@ Gem::Specification.new do |s|
|
|
65
82
|
"spec/rails_app_spec/matchers/artifact/model_spec.rb",
|
66
83
|
"spec/rails_app_spec/matchers/artifact/observer_spec.rb",
|
67
84
|
"spec/rails_app_spec/matchers/artifact/view_spec.rb",
|
68
|
-
"spec/rails_app_spec/matchers/
|
69
|
-
"spec/rails_app_spec/matchers/
|
85
|
+
"spec/rails_app_spec/matchers/directory/have_rails_dir_spec.rb",
|
86
|
+
"spec/rails_app_spec/matchers/directory/have_rails_dirs_spec.rb",
|
87
|
+
"spec/rails_app_spec/matchers/file/have_rails_file_spec.rb",
|
88
|
+
"spec/rails_app_spec/matchers/file/have_rails_files_spec.rb",
|
89
|
+
"spec/rails_app_spec/matchers/special/have_app_config_spec.rb",
|
90
|
+
"spec/rails_app_spec/matchers/special/have_gem_spec.rb",
|
91
|
+
"spec/rails_app_spec/matchers/special/have_gems_spec.rb",
|
70
92
|
"spec/spec_helper.rb"
|
71
93
|
]
|
72
94
|
|
@@ -75,22 +97,25 @@ Gem::Specification.new do |s|
|
|
75
97
|
s.specification_version = 3
|
76
98
|
|
77
99
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
78
|
-
s.add_runtime_dependency(%q<rspec>, ["~> 2.0.0"])
|
100
|
+
s.add_runtime_dependency(%q<rspec>, ["~> 2.0.0.beta.22"])
|
79
101
|
s.add_runtime_dependency(%q<require_all>, ["~> 1.1.0"])
|
80
102
|
s.add_runtime_dependency(%q<rails3_artifactor>, ["~> 0.1.4"])
|
103
|
+
s.add_runtime_dependency(%q<sugar-high>, ["~> 0.2.6"])
|
81
104
|
s.add_runtime_dependency(%q<code-spec>, ["~> 0.2.1"])
|
82
105
|
s.add_runtime_dependency(%q<file-spec>, ["~> 0.1.1"])
|
83
106
|
else
|
84
|
-
s.add_dependency(%q<rspec>, ["~> 2.0.0"])
|
107
|
+
s.add_dependency(%q<rspec>, ["~> 2.0.0.beta.22"])
|
85
108
|
s.add_dependency(%q<require_all>, ["~> 1.1.0"])
|
86
109
|
s.add_dependency(%q<rails3_artifactor>, ["~> 0.1.4"])
|
110
|
+
s.add_dependency(%q<sugar-high>, ["~> 0.2.6"])
|
87
111
|
s.add_dependency(%q<code-spec>, ["~> 0.2.1"])
|
88
112
|
s.add_dependency(%q<file-spec>, ["~> 0.1.1"])
|
89
113
|
end
|
90
114
|
else
|
91
|
-
s.add_dependency(%q<rspec>, ["~> 2.0.0"])
|
115
|
+
s.add_dependency(%q<rspec>, ["~> 2.0.0.beta.22"])
|
92
116
|
s.add_dependency(%q<require_all>, ["~> 1.1.0"])
|
93
117
|
s.add_dependency(%q<rails3_artifactor>, ["~> 0.1.4"])
|
118
|
+
s.add_dependency(%q<sugar-high>, ["~> 0.2.6"])
|
94
119
|
s.add_dependency(%q<code-spec>, ["~> 0.2.1"])
|
95
120
|
s.add_dependency(%q<file-spec>, ["~> 0.1.1"])
|
96
121
|
end
|
data/spec/rails_app_spec/matchers/{file/have_dir_spec.rb → directory/have_rails_dir_spec.rb}
RENAMED
File without changes
|
data/spec/rails_app_spec/matchers/{file/have_file_spec.rb → directory/have_rails_dirs_spec.rb}
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 7
|
9
|
+
version: 0.2.7
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Kristian Mandrup
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-09-
|
17
|
+
date: 2010-09-14 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -29,7 +29,9 @@ dependencies:
|
|
29
29
|
- 2
|
30
30
|
- 0
|
31
31
|
- 0
|
32
|
-
|
32
|
+
- beta
|
33
|
+
- 22
|
34
|
+
version: 2.0.0.beta.22
|
33
35
|
type: :runtime
|
34
36
|
version_requirements: *id001
|
35
37
|
- !ruby/object:Gem::Dependency
|
@@ -63,9 +65,24 @@ dependencies:
|
|
63
65
|
type: :runtime
|
64
66
|
version_requirements: *id003
|
65
67
|
- !ruby/object:Gem::Dependency
|
66
|
-
name:
|
68
|
+
name: sugar-high
|
67
69
|
prerelease: false
|
68
70
|
requirement: &id004 !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
- 2
|
78
|
+
- 6
|
79
|
+
version: 0.2.6
|
80
|
+
type: :runtime
|
81
|
+
version_requirements: *id004
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: code-spec
|
84
|
+
prerelease: false
|
85
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
69
86
|
none: false
|
70
87
|
requirements:
|
71
88
|
- - ~>
|
@@ -76,11 +93,11 @@ dependencies:
|
|
76
93
|
- 1
|
77
94
|
version: 0.2.1
|
78
95
|
type: :runtime
|
79
|
-
version_requirements: *
|
96
|
+
version_requirements: *id005
|
80
97
|
- !ruby/object:Gem::Dependency
|
81
98
|
name: file-spec
|
82
99
|
prerelease: false
|
83
|
-
requirement: &
|
100
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
84
101
|
none: false
|
85
102
|
requirements:
|
86
103
|
- - ~>
|
@@ -91,7 +108,7 @@ dependencies:
|
|
91
108
|
- 1
|
92
109
|
version: 0.1.1
|
93
110
|
type: :runtime
|
94
|
-
version_requirements: *
|
111
|
+
version_requirements: *id006
|
95
112
|
description: RSpec 2 matchers to spec the structure of your Rails 3 app
|
96
113
|
email: kmandrup@gmail.com
|
97
114
|
executables: []
|
@@ -110,14 +127,26 @@ files:
|
|
110
127
|
- Rakefile
|
111
128
|
- VERSION
|
112
129
|
- lib/rails-app-spec.rb
|
130
|
+
- lib/rails_app_spec/matchers.rb
|
131
|
+
- lib/rails_app_spec/matchers/artifact.rb
|
113
132
|
- lib/rails_app_spec/matchers/artifact/class/have_artifact_class.rb
|
114
133
|
- lib/rails_app_spec/matchers/artifact/class/have_artifact_subclass.rb
|
115
134
|
- lib/rails_app_spec/matchers/artifact/have_artifact.rb
|
116
135
|
- lib/rails_app_spec/matchers/artifact/have_artifact_file.rb
|
136
|
+
- lib/rails_app_spec/matchers/artifact/have_artifacts.rb
|
117
137
|
- lib/rails_app_spec/matchers/artifact/have_rails_artifact_file.rb
|
118
|
-
- lib/rails_app_spec/matchers/
|
138
|
+
- lib/rails_app_spec/matchers/artifact/have_rails_artifact_files.rb
|
139
|
+
- lib/rails_app_spec/matchers/artifact/shared/artifact_file_helper.rb
|
140
|
+
- lib/rails_app_spec/matchers/artifact/shared/artifact_helper.rb
|
141
|
+
- lib/rails_app_spec/matchers/directory/have_artifact_dirs.rb
|
142
|
+
- lib/rails_app_spec/matchers/directory/have_rails_dir.rb
|
143
|
+
- lib/rails_app_spec/matchers/directory/have_rails_dirs.rb
|
119
144
|
- lib/rails_app_spec/matchers/file/have_rails_file.rb
|
145
|
+
- lib/rails_app_spec/matchers/file/have_rails_files.rb
|
146
|
+
- lib/rails_app_spec/matchers/file/rails_file_helper.rb
|
120
147
|
- lib/rails_app_spec/matchers/special/have_app_config.rb
|
148
|
+
- lib/rails_app_spec/matchers/special/have_gem.rb
|
149
|
+
- lib/rails_app_spec/matchers/special/have_gems.rb
|
121
150
|
- lib/rails_app_spec/namespaces.rb
|
122
151
|
- lib/rails_app_spec/rspec.rb
|
123
152
|
- lib/rails_app_spec/rspec/configure.rb
|
@@ -132,8 +161,13 @@ files:
|
|
132
161
|
- spec/rails_app_spec/matchers/artifact/model_spec.rb
|
133
162
|
- spec/rails_app_spec/matchers/artifact/observer_spec.rb
|
134
163
|
- spec/rails_app_spec/matchers/artifact/view_spec.rb
|
135
|
-
- spec/rails_app_spec/matchers/
|
136
|
-
- spec/rails_app_spec/matchers/
|
164
|
+
- spec/rails_app_spec/matchers/directory/have_rails_dir_spec.rb
|
165
|
+
- spec/rails_app_spec/matchers/directory/have_rails_dirs_spec.rb
|
166
|
+
- spec/rails_app_spec/matchers/file/have_rails_file_spec.rb
|
167
|
+
- spec/rails_app_spec/matchers/file/have_rails_files_spec.rb
|
168
|
+
- spec/rails_app_spec/matchers/special/have_app_config_spec.rb
|
169
|
+
- spec/rails_app_spec/matchers/special/have_gem_spec.rb
|
170
|
+
- spec/rails_app_spec/matchers/special/have_gems_spec.rb
|
137
171
|
- spec/spec_helper.rb
|
138
172
|
has_rdoc: true
|
139
173
|
homepage: http://github.com/kristianmandrup/rails-app-spec
|
@@ -176,6 +210,11 @@ test_files:
|
|
176
210
|
- spec/rails_app_spec/matchers/artifact/model_spec.rb
|
177
211
|
- spec/rails_app_spec/matchers/artifact/observer_spec.rb
|
178
212
|
- spec/rails_app_spec/matchers/artifact/view_spec.rb
|
179
|
-
- spec/rails_app_spec/matchers/
|
180
|
-
- spec/rails_app_spec/matchers/
|
213
|
+
- spec/rails_app_spec/matchers/directory/have_rails_dir_spec.rb
|
214
|
+
- spec/rails_app_spec/matchers/directory/have_rails_dirs_spec.rb
|
215
|
+
- spec/rails_app_spec/matchers/file/have_rails_file_spec.rb
|
216
|
+
- spec/rails_app_spec/matchers/file/have_rails_files_spec.rb
|
217
|
+
- spec/rails_app_spec/matchers/special/have_app_config_spec.rb
|
218
|
+
- spec/rails_app_spec/matchers/special/have_gem_spec.rb
|
219
|
+
- spec/rails_app_spec/matchers/special/have_gems_spec.rb
|
181
220
|
- spec/spec_helper.rb
|