Class: HTMLRender::RenderTest::Rails::RenderExampleGroup

Inherits:
Spec::Example::ExampleGroup
  • Object
show all
Defined in:
lib/html_render/render_test/rails.rb

Class Method Summary collapse

Class Method Details

.define_example(setup_path, base_path, servers, options) ⇒ Object



148
149
150
151
152
153
154
155
156
157
158
159
160
# File 'lib/html_render/render_test/rails.rb', line 148

def self.define_example(setup_path, base_path, servers, options)
  relative_path = setup_path[(base_path.length + 1)..-10]
  template_path = File.dirname(relative_path)
  test_key = File.basename(relative_path)

  it 'should render properly' do
    test_case = Common::create_test_case_from_path(relative_path, options.merge(:test_prefix => base_path))
    result = test_case.run(servers)
    result.details.each do |server, detail|
      detail.pass?.should == true
    end
  end
end

.define_examples(base_path, options) ⇒ Object



162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/html_render/render_test/rails.rb', line 162

def self.define_examples(base_path, options)
  servers = options.delete(:servers)

  if !servers || !servers.is_a?(Hash)
    raise ArgumentError.new("options[:servers] must be a hash of :unique_identifier => \"http://path.to.server/which/renders/pngs\"")
  end

  cwd = []
  context_stack = []

  paths = Dir.glob(File.join(base_path, '**', 'setup.rb')).sort.each do |setup_path|
    relative_path = File.dirname(setup_path[(base_path.length + 1)..-1])
    path_parts = relative_path.split('/')

    until relative_path =~ %r%^#{Regexp.quote(cwd.join('/'))}%
      cwd.pop
      context_stack.pop
    end

    until cwd.length == path_parts.length
      cwd.push(path_parts[cwd.length])
      context_stack.push((context_stack.last || self).describe("/#{cwd.join('/')}", :type => :render))
    end

    context_stack.last.define_example(setup_path, base_path, servers, options)
  end
end