Module: JsonRigs::Fixtures

Defined in:
lib/json-rigs/fixtures.rb

Defined Under Namespace

Classes: FixturedActionKey

Constant Summary collapse

ACTIVE_FIXTURE_FILE =
'tmp/active_fixtures.json'

Class Method Summary collapse

Class Method Details

._key(url, method) ⇒ Object



75
76
77
# File 'lib/json-rigs/fixtures.rb', line 75

def self._key(url, method)
  FixturedActionKey.new(url, method)
end

.clear_active_fixturesObject



26
27
28
29
30
# File 'lib/json-rigs/fixtures.rb', line 26

def self.clear_active_fixtures
  @actions.values.each do |action|
    action.active_fixture_name = ''
  end
end

.clear_all!Object



63
64
65
# File 'lib/json-rigs/fixtures.rb', line 63

def self.clear_all!
  @actions = {}
end

.find_action(url, method) ⇒ Object



20
21
22
23
24
# File 'lib/json-rigs/fixtures.rb', line 20

def self.find_action(url, method)
  method = method.to_s
  @actions ||= {}
  @actions[_key(url, method)]
end

.fixture_action(url, method, &block) ⇒ Object



10
11
12
13
14
15
16
17
18
# File 'lib/json-rigs/fixtures.rb', line 10

def self.fixture_action(url, method, &block)
  method = method.to_s
  @actions ||= {}

  key = _key(url, method)
  fixture_action = @actions[key] || FixturedAction.new(url, method)
  @actions[key] = fixture_action
  fixture_action.instance_eval &block
end

.fixturesObject



67
68
69
70
71
72
73
# File 'lib/json-rigs/fixtures.rb', line 67

def self.fixtures
  json = @actions.values.group_by(&:url)
  json.each do |url, actions|
    json[url] = actions.map(&:to_hash)
  end
  json
end

.load_active_fixturesObject



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/json-rigs/fixtures.rb', line 40

def self.load_active_fixtures
  begin
    active_fixtures = JSON.parse(File.read(ACTIVE_FIXTURE_FILE))
  rescue Errno::ENOENT, Errno::ESRCH
    return
  end

  active_fixtures.each do |fixture|
    url, method, active_fixture = fixture
    action = find_action(url, method)
    if action
      action.active_fixture_name = active_fixture
    end
  end
end

.remove_action(url, method, response_name) ⇒ Object



56
57
58
59
60
61
# File 'lib/json-rigs/fixtures.rb', line 56

def self.remove_action(url, method, response_name)
  action = find_action(url, method)
  if action
    action.remove_fixture(response_name.to_s)
  end
end

.save_active_fixturesObject



32
33
34
35
36
37
38
# File 'lib/json-rigs/fixtures.rb', line 32

def self.save_active_fixtures
  active_fixtures = @actions.map { |key, action|
    [ key.url, key.method, action.active_fixture_name ]
  }
  FileUtils.mkdir_p(File.dirname(ACTIVE_FIXTURE_FILE))
  File.open(ACTIVE_FIXTURE_FILE, 'w') { |io| io.write(active_fixtures.to_json) }
end