Module: GameboxSpecHelpers::ClassMethods

Defined in:
lib/gamebox/spec/helper.rb

Instance Method Summary (collapse)

Instance Method Details

- (Object) inject_mocks(*mock_names_array)



17
18
19
20
# File 'lib/gamebox/spec/helper.rb', line 17

def inject_mocks(*mock_names_array)
  before { @_mocks_created = create_mocks(*mock_names_array) }
  subject { described_class.new @_mocks_created }
end

- (Object) subjectify_actor(actor_type)



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/gamebox/spec/helper.rb', line 70

def subjectify_actor(actor_type)
  actor_definition = Actor.definitions[actor_type]
  before { 
    @_mocks_created = create_mocks *Actor.object_definition.component_names
  }
  subject { 
    Actor.new(@_mocks_created).tap do |actor|

      actor_definition.behaviors.each do |behavior|
        beh_opts = {}
        beh_key = behavior

        if behavior.is_a?(Hash)
          beh_opts = behavior.values.first
          beh_key = behavior.keys.first
        end

        actor_definition.attributes.each do |attr|
          actor.has_attributes attr
        end

        actor.add_behavior beh_key, beh_opts
      end
    end
  }
end

- (Object) subjectify_actor_view(view_name)



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/gamebox/spec/helper.rb', line 97

def subjectify_actor_view(view_name)
  view_definition = ActorView.definitions[view_name]
  before { 
    reqs = view_definition.required_injections || []

    @_mocks_created = create_mocks( *ActorView.object_definition.component_names + reqs)
    @_mocks_created[:actor] = evented_stub(@_mocks_created[:actor])

  }
  subject { 
    ActorView.new(@_mocks_created).tap do |view|
      view.define_singleton_method :draw, &view_definition.draw_block if view_definition.draw_block
      if view_definition.setup_block
        view.define_singleton_method :setup, &view_definition.setup_block 
        view.configure
      end
    end
  }
end

- (Object) subjectify_behavior(behavior_name)



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/gamebox/spec/helper.rb', line 22

def subjectify_behavior(behavior_name)
  before { 
    @_beh_mock_names = Behavior.object_definition.component_names
    @actor = evented_stub(mock("actor_for_#{behavior_name}"))
    @_mocks_created = create_mocks *(@_beh_mock_names - [:actor])
    @_mocks_created[:actor] = @actor


    @behavior_definition = Behavior.definitions[behavior_name]
    reqs = @behavior_definition.required_injections || []
    reqs -= @_beh_mock_names
    @_req_mocks = create_mocks(*reqs)
  }
  let (:opts) { {} }
  subject { 

    # TODO so much duplication here from the *Factories
    Behavior.new(@_mocks_created).tap do |behavior|
      @_req_mocks.keys.each do |req|
        object = @_req_mocks[req]
        behavior.define_singleton_method req do
          components[req] 
        end
        components = behavior.send :components
        components[req] = object
      end

      helpers = @behavior_definition.helpers_block
      if helpers
        helpers_module = Module.new &helpers
        behavior.extend helpers_module
      end

      behavior.define_singleton_method :react_to, @behavior_definition.react_to_block if @behavior_definition.react_to_block

      # TODO not sure the right way to mock this out
      # deps = @behavior_definition.required_behaviors
      # if deps
      #   deps.each do |beh|
      #     _add_behavior actor, beh unless actor.has_behavior?(beh)
      #   end
      # end
      behavior.configure(opts)
      behavior.instance_eval &@behavior_definition.setup_block if @behavior_definition.setup_block
    end
  }
end