Best Vcr_ruby code snippet using VCR.should_assert_no_unused_interactions
cassette.rb
Source:cassette.rb
...50 # @param (see VCR#eject_casssette)51 # @see VCR#eject_cassette52 def eject(options = {})53 write_recorded_interactions_to_disk54 if should_assert_no_unused_interactions? && !options[:skip_no_unused_interactions_assertion]55 http_interactions.assert_no_unused_interactions!56 end57 end58 # @private59 def http_interactions60 @http_interactions ||= HTTPInteractionList.new \61 should_stub_requests? ? previously_recorded_interactions : [],62 match_requests_on,63 @allow_playback_repeats,64 @parent_list,65 log_prefix66 end67 # @private68 def record_http_interaction(interaction)69 log "Recorded HTTP interaction #{request_summary(interaction.request)} => #{response_summary(interaction.response)}"70 new_recorded_interactions << interaction71 end72 # @private73 def new_recorded_interactions74 @new_recorded_interactions ||= []75 end76 # @return [String] The file for this cassette.77 # @raise [NotImplementedError] if the configured cassette persister78 # does not support resolving file paths.79 # @note VCR will take care of sanitizing the cassette name to make it a valid file name.80 def file81 unless @persister.respond_to?(:absolute_path_to_file)82 raise NotImplementedError, "The configured cassette persister does not support resolving file paths"83 end84 @persister.absolute_path_to_file(storage_key)85 end86 # @return [Boolean] Whether or not the cassette is recording.87 def recording?88 case record_mode89 when :none; false90 when :once; raw_cassette_bytes.to_s.empty?91 else true92 end93 end94 # @return [Hash] The hash that will be serialized when the cassette is written to disk.95 def serializable_hash96 {97 "http_interactions" => interactions_to_record.map(&:to_hash),98 "recorded_with" => "VCR #{VCR.version}"99 }100 end101 # @return [Time, nil] The `recorded_at` time of the first HTTP interaction102 # or nil if the cassette has no prior HTTP interactions.103 #104 # @example105 #106 # VCR.use_cassette("some cassette") do |cassette|107 # Timecop.freeze(cassette.originally_recorded_at || Time.now) do108 # # ...109 # end110 # end111 def originally_recorded_at112 @originally_recorded_at ||= previously_recorded_interactions.map(&:recorded_at).min113 end114 private115 def assert_valid_options!116 invalid_options = @options.keys - [117 :record, :erb, :match_requests_on, :re_record_interval, :tag, :tags,118 :update_content_length_header, :allow_playback_repeats, :allow_unused_http_interactions,119 :exclusive, :serialize_with, :preserve_exact_body_bytes, :decode_compressed_response,120 :persist_with121 ]122 if invalid_options.size > 0123 raise ArgumentError.new("You passed the following invalid options to VCR::Cassette.new: #{invalid_options.inspect}.")124 end125 end126 def extract_options127 [:erb, :match_requests_on, :re_record_interval,128 :allow_playback_repeats, :allow_unused_http_interactions, :exclusive].each do |name|129 instance_variable_set("@#{name}", @options[name])130 end131 assign_tags132 @record_mode = @options[:record]133 @serializer = VCR.cassette_serializers[@options[:serialize_with]]134 @persister = VCR.cassette_persisters[@options[:persist_with]]135 @record_mode = :all if should_re_record?136 @parent_list = @exclusive ? HTTPInteractionList::NullList : VCR.http_interactions137 end138 def assign_tags139 @tags = Array(@options.fetch(:tags) { @options[:tag] })140 [:update_content_length_header, :preserve_exact_body_bytes, :decode_compressed_response].each do |tag|141 @tags << tag if @options[tag]142 end143 end144 def previously_recorded_interactions145 @previously_recorded_interactions ||= if !raw_cassette_bytes.to_s.empty?146 deserialized_hash['http_interactions'].map { |h| HTTPInteraction.from_hash(h) }.tap do |interactions|147 invoke_hook(:before_playback, interactions)148 interactions.reject! do |i|149 i.request.uri.is_a?(String) && VCR.request_ignorer.ignore?(i.request)150 end151 end152 else153 []154 end155 end156 def storage_key157 @storage_key ||= [name, @serializer.file_extension].join('.')158 end159 def raise_error_unless_valid_record_mode160 unless VALID_RECORD_MODES.include?(record_mode)161 raise ArgumentError.new("#{record_mode} is not a valid cassette record mode. Valid modes are: #{VALID_RECORD_MODES.inspect}")162 end163 end164 def should_re_record?165 return false unless @re_record_interval166 return false unless originally_recorded_at167 now = Time.now168 (originally_recorded_at + @re_record_interval < now).tap do |value|169 info = "previously recorded at: '#{originally_recorded_at}'; now: '#{now}'; interval: #{@re_record_interval} seconds"170 if !value171 log "Not re-recording since the interval has not elapsed (#{info})."172 elsif InternetConnection.available?173 log "re-recording (#{info})."174 else175 log "Not re-recording because no internet connection is available (#{info})."176 return false177 end178 end179 end180 def should_stub_requests?181 record_mode != :all182 end183 def should_remove_matching_existing_interactions?184 record_mode == :all185 end186 def should_assert_no_unused_interactions?187 !(@allow_unused_http_interactions || $!)188 end189 def raw_cassette_bytes190 @raw_cassette_bytes ||= VCR::Cassette::ERBRenderer.new(@persister[storage_key], erb, name).render191 end192 def merged_interactions193 old_interactions = previously_recorded_interactions194 if should_remove_matching_existing_interactions?195 new_interaction_list = HTTPInteractionList.new(new_recorded_interactions, match_requests_on)196 old_interactions = old_interactions.reject do |i|197 new_interaction_list.response_for(i.request)198 end199 end200 old_interactions + new_recorded_interactions...
should_assert_no_unused_interactions
Using AI Code Generation
1 c.default_cassette_options = { :record => :new_episodes }2 c.default_cassette_options = { :record => :new_episodes }3 c.default_cassette_options = { :record => :new_episodes }4 c.default_cassette_options = { :record => :new_episodes }
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!