/
spec_helper.rb
42 lines (36 loc) · 1.21 KB
/
spec_helper.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
require 'redcloth'
require 'yaml'
class FormatterExampleGroup < Spec::Example::ExampleGroup
def self.examples_from_yaml(&block)
formatter = description.downcase
define_method("format_as_#{formatter}", &block)
fixtures.each do |name, doc|
if doc[formatter]
example("should output #{formatter} for #{name}") do
output = method("format_as_#{formatter}").call(doc)
output.should == doc[formatter]
end
else
example("should not raise errors when rendering #{formatter} for #{name}") do
lambda { method("format_as_#{formatter}").call(doc) }.should_not raise_error
end
end
end
end
def self.fixtures
return @fixtures if @fixtures
@fixtures = {}
Dir[File.join(File.dirname(__FILE__), *%w[fixtures *.yml])].each do |testfile|
testgroup = File.basename(testfile, '.yml')
num = 0
YAML::load_documents(File.open(testfile)) do |doc|
name = doc['name'] || num
@fixtures["#{testgroup} #{name}"] = doc
num += 1
end
end
@fixtures
end
end
Spec::Example::ExampleGroupFactory.register(:formatter, FormatterExampleGroup)