Class: Shokkenki::Consumer::Session

Inherits:
Object
  • Object
show all
Includes:
Configuration::Session, DSL::Session, Model::Simplification
Defined in:
lib/shokkenki/consumer/session.rb

Instance Attribute Summary collapse

Attributes included from Configuration::Session

#stubber_classes

Instance Method Summary collapse

Methods included from Configuration::Session

#configure, #define_provider, #register_stubber, #tickets

Methods included from DSL::Session

#order

Methods included from Model::Simplification

#simplify

Constructor Details

#initializeSession

Returns a new instance of Session.



16
17
18
19
20
21
# File 'lib/shokkenki/consumer/session.rb', line 16

def initialize
  @consumers = {}
  @providers = {}
  @patronages = {}
  @ticket_location = 'tickets'
end

Instance Attribute Details

#configurationObject (readonly)

Returns the value of attribute configuration.



13
14
15
# File 'lib/shokkenki/consumer/session.rb', line 13

def configuration
  @configuration
end

#consumersObject (readonly)

Returns the value of attribute consumers.



13
14
15
# File 'lib/shokkenki/consumer/session.rb', line 13

def consumers
  @consumers
end

#current_consumerObject (readonly)

Returns the value of attribute current_consumer.



13
14
15
# File 'lib/shokkenki/consumer/session.rb', line 13

def current_consumer
  @current_consumer
end

#patronagesObject (readonly)

Returns the value of attribute patronages.



13
14
15
# File 'lib/shokkenki/consumer/session.rb', line 13

def patronages
  @patronages
end

#providersObject (readonly)

Returns the value of attribute providers.



13
14
15
# File 'lib/shokkenki/consumer/session.rb', line 13

def providers
  @providers
end

#ticket_locationObject

Returns the value of attribute ticket_location.



14
15
16
# File 'lib/shokkenki/consumer/session.rb', line 14

def ticket_location
  @ticket_location
end

Instance Method Details

#add_consumer(consumer) ⇒ Object



38
39
40
# File 'lib/shokkenki/consumer/session.rb', line 38

def add_consumer consumer
  @consumers[simplify(consumer.name)] = consumer
end

#add_provider(provider) ⇒ Object



30
31
32
# File 'lib/shokkenki/consumer/session.rb', line 30

def add_provider provider
  @providers[simplify(provider.name)] = provider
end

#assert_all_interactions_used!Object



78
79
80
# File 'lib/shokkenki/consumer/session.rb', line 78

def assert_all_interactions_used!
  @providers.values.each { |p| p.assert_all_interactions_used! }
end

#assert_all_requests_matched!Object



74
75
76
# File 'lib/shokkenki/consumer/session.rb', line 74

def assert_all_requests_matched!
  @providers.values.each { |p| p.assert_all_requests_matched! }
end

#clear_interaction_stubsObject



54
55
56
# File 'lib/shokkenki/consumer/session.rb', line 54

def clear_interaction_stubs
  @providers.values.each { |p| p.clear_interaction_stubs }
end

#closeObject



62
63
64
# File 'lib/shokkenki/consumer/session.rb', line 62

def close
  @providers.values.each { |p| p.session_closed }
end

#consumer(name) ⇒ Object



46
47
48
# File 'lib/shokkenki/consumer/session.rb', line 46

def consumer name
  @consumers[simplify(name)]
end

#current_patronage_for(provider_name) ⇒ Object



23
24
25
26
27
28
# File 'lib/shokkenki/consumer/session.rb', line 23

def current_patronage_for provider_name
  consumer = @current_consumer
  provider = provider(provider_name) || raise("The provider '#{provider_name}' is not recognised. Have you defined it?")
  key = { consumer => provider }
  @patronages[key] ||= Shokkenki::Consumer::Model::Patronage.new :consumer => consumer, :provider => provider
end


66
67
68
69
70
71
72
# File 'lib/shokkenki/consumer/session.rb', line 66

def print_tickets
  @patronages.values.collect(&:ticket).each do |ticket|
    FileUtils.mkpath ticket_location
    ticket_path = File.expand_path(File.join(ticket_location, ticket.filename))
    File.open(ticket_path, 'w') { |file| file.write(ticket.to_json) }
  end
end

#provider(name) ⇒ Object



42
43
44
# File 'lib/shokkenki/consumer/session.rb', line 42

def provider name
  @providers[simplify(name)]
end

#set_current_consumer(name) ⇒ Object



50
51
52
# File 'lib/shokkenki/consumer/session.rb', line 50

def set_current_consumer name
  @current_consumer = consumer name
end

#startObject



58
59
60
# File 'lib/shokkenki/consumer/session.rb', line 58

def start
  @providers.values.each { |p| p.session_started }
end