Class: Freightrain::AutoStubber

Inherits:
Object
  • Object
show all
Includes:
Mocha::API
Defined in:
lib/freightrain-dev/auto_stubber.rb

Instance Method Summary collapse

Instance Method Details

#stub_regions(region_host) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/freightrain-dev/auto_stubber.rb', line 22

def stub_regions(region_host)
  stub_regions = {}
  region_names = []
  regions      = region_host.class.instance_variable_get(:@regions)
  region_names = regions.keys if regions
  region_names.each do |region_name|
    stub_regions[region_name] = stub_everything
    region_host.class.send(:define_method, region_name) do
      return instance_variable_get(:@regions)[region_name]
    end
  end
  region_host.instance_variable_set(:@regions, stub_regions)
  region_host.class.send(:define_method, :should_change_region) do |region_name, viewmodel_name|
    return region_host.expects(:change_region).with(region_name, viewmodel_name)
  end
end

#stub_service(name) ⇒ Object



70
71
72
73
74
75
76
# File 'lib/freightrain-dev/auto_stubber.rb', line 70

def stub_service(name)
  service_name  = "#{name}_service"
  service       = Freightrain[service_name.to_sym]
  stub_services(service)
  stub_signals(service)
  return service
end

#stub_services(service_host) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/freightrain-dev/auto_stubber.rb', line 39

def stub_services(service_host)
  service_names = []
  services      = service_host.class.instance_variable_get(:@services)
  service_names = services.keys if services
  service_names.each do |service|
    service_stub = stub_everything
    service_host.instance_variable_set("@#{service}", service_stub)
    service_host.class.send(:define_method, service) do
      return instance_variable_get("@#{service}")
    end
  end
end

#stub_signals(signal_host) ⇒ Object

semi-private API



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/freightrain-dev/auto_stubber.rb', line 8

def stub_signals(signal_host)
  stub_signals = {}
  signal_names = []
  signals      = signal_host.class.instance_variable_get(:@signals)
  signal_names = signals.keys if signals
  signal_names.each do |signal_name|
    stub_signals[signal_name] = stub_everything
  end
  signal_host.instance_variable_set(:@signals, stub_signals)
  signal_host.class.send(:define_method, :should_fire) do |signal_name|
    return instance_variable_get(:@signals)[signal_name].expects(:fire)
  end
end

#stub_view(viewmodel) ⇒ Object



52
53
54
55
56
57
# File 'lib/freightrain-dev/auto_stubber.rb', line 52

def stub_view(viewmodel)
  viewmodel.instance_variable_set(:@view, stub_everything)
  viewmodel.class.send(:define_method, "view") do
    return instance_variable_get(:@view)
  end
end

#stub_viewmodel(name) ⇒ Object



59
60
61
62
63
64
65
66
67
68
# File 'lib/freightrain-dev/auto_stubber.rb', line 59

def stub_viewmodel(name)
  viewmodel_name = "#{name}_view_model"
  viewmodel = Freightrain[viewmodel_name.to_sym]
  viewmodel.class.send(:define_method, :bootstrap) { }
  stub_services(viewmodel)
  stub_signals(viewmodel)
  stub_regions(viewmodel)
  stub_view(viewmodel)
  return viewmodel
end