Class: SmashingDocs

Inherits:
Object
  • Object
show all
Defined in:
lib/base.rb

Defined Under Namespace

Classes: Conf, TestCase

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSmashingDocs



3
4
5
6
7
# File 'lib/base.rb', line 3

def initialize
  @tests = []
  @skip = false
  @information = {}
end

Instance Attribute Details

#testsObject

Returns the value of attribute tests.



2
3
4
# File 'lib/base.rb', line 2

def tests
  @tests
end

Class Method Details

.aside(message) ⇒ Object



87
88
89
# File 'lib/base.rb', line 87

def self.aside(message)
  current.aside(message)
end

.config {|self::Conf| ... } ⇒ Object

Yields:

  • (self::Conf)


96
97
98
# File 'lib/base.rb', line 96

def self.config(&block)
  yield(self::Conf)
end

.currentObject



91
92
93
94
# File 'lib/base.rb', line 91

def self.current
  # Behaves like an instance of SmashingDocs class
  Thread.current[:instance] ||= self.new
end

.finish!Object

= = =

These class methods are used to persist test data across tests RSpec and Minitest do not support hooks that would allow for an instance variable to be declared and used



69
70
71
72
73
# File 'lib/base.rb', line 69

def self.finish!
  current.sort_by_url!
  current.output_testcases_to_file
  current.clean_up!
end

.information(key, value) ⇒ Object



83
84
85
# File 'lib/base.rb', line 83

def self.information(key, value)
  current.information(key, value)
end

.run!(request, response) ⇒ Object



75
76
77
# File 'lib/base.rb', line 75

def self.run!(request, response)
  current.run!(request, response)
end

.skipObject



79
80
81
# File 'lib/base.rb', line 79

def self.skip
  current.skip
end

Instance Method Details

#add_test_case(request, response) ⇒ Object



39
40
41
42
43
# File 'lib/base.rb', line 39

def add_test_case(request, response)
  test = self.class::TestCase.new(request, response, @information, @aside)
  test.template = self.class::Conf.template
  self.tests << test
end

#aside(msg) ⇒ Object



19
20
21
22
# File 'lib/base.rb', line 19

def aside(msg)
  @aside = ''
  @aside = "<aside class='notice'>\n #{msg}\n</aside>"
end

#clean_up!Object



15
16
17
# File 'lib/base.rb', line 15

def clean_up!
  @tests = []
end

#information(key, value) ⇒ Object



24
25
26
# File 'lib/base.rb', line 24

def information(key, value)
  @information[key] = value
end

#output_testcases_to_fileObject



49
50
51
52
53
54
# File 'lib/base.rb', line 49

def output_testcases_to_file
  docs = self.class::Conf.output_file
  raise 'No output file specific for SmashingDocs' unless docs
  File.delete docs if File.exists? docs
  write_to_file
end

#run!(request, response) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# File 'lib/base.rb', line 28

def run!(request, response)
  if @skip
    @skip = false
    return
  end
  add_test_case(request, response)
  @information = {}
  @skip = false
  self
end

#skipObject



45
46
47
# File 'lib/base.rb', line 45

def skip
  @skip = true
end

#sort_by_url!Object



9
10
11
12
13
# File 'lib/base.rb', line 9

def sort_by_url!
  @tests.sort! do |x, y|
    x.request.path <=> y.request.path
  end
end

#write_to_fileObject



56
57
58
59
60
61
62
# File 'lib/base.rb', line 56

def write_to_file
  File.open(self.class::Conf.output_file, 'a') do |file|
    @tests.each do |test|
      file.write(test.compile_template)
    end
  end
end