Class: WebSocketVCR::Cassette

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, options) ⇒ Cassette

Returns a new instance of Cassette.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/simple_websocket_vcr/cassette.rb', line 12

def initialize(name, options)
  @name = name
  @options = options
  @using_json = WebSocketVCR.configuration.json_cassettes
  @name += @using_json ? '.json' : '.yml'

  if File.exist?(filename) && @options[:record] != :all
    @recording = false
    @sessions = initialize_sessions filename
  else
    fail "No cassette '#{name}' found and recording has been turned off" if @options[:record] == :none
    @recording = true
    @sessions = []
  end
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



8
9
10
# File 'lib/simple_websocket_vcr/cassette.rb', line 8

def name
  @name
end

#optionsObject (readonly)

Returns the value of attribute options.



8
9
10
# File 'lib/simple_websocket_vcr/cassette.rb', line 8

def options
  @options
end

#recordingObject (readonly) Also known as: recording?

Returns the value of attribute recording.



8
9
10
# File 'lib/simple_websocket_vcr/cassette.rb', line 8

def recording
  @recording
end

#sessionsObject (readonly)

Returns the value of attribute sessions.



8
9
10
# File 'lib/simple_websocket_vcr/cassette.rb', line 8

def sessions
  @sessions
end

Instance Method Details

#next_sessionObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/simple_websocket_vcr/cassette.rb', line 28

def next_session
  if recording?
    erb_variables = @options[:reverse_substitution] ? @options[:erb] : nil
    session = if @using_json
                RecordedJsonSession.new([], erb_variables)
              else
                RecordedYamlSession.new([], erb_variables)
              end
    @sessions.push(session)
    @sessions.last
  else
    fail NoMoreSessionsError if @sessions.empty?
    @sessions.shift
  end
end

#saveObject



44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/simple_websocket_vcr/cassette.rb', line 44

def save
  return unless recording?
  dirname = File.dirname(filename)
  # make sure the directory structure is there
  FileUtils.mkdir_p(dirname) unless File.directory?(dirname)
  if @using_json
    text = JSON.pretty_generate(@sessions.map(&:record_entries))
  else
    text = { 'websocket_interactions' => @sessions.map(&:record_entries) }.to_yaml(Indent: 8)
  end
  File.open(filename, 'w') { |f| f.write(text) }
end