From 7e4edcd2ca7dfa69821c2409038cc23eb8db840e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niclas=20=C3=85hd=C3=A9n?= Date: Thu, 14 Mar 2024 21:39:30 +0100 Subject: [PATCH] Clear interactions when setting mode The previous commit cleared interactions every time a new interaction was recorded. That meant that only a single interaction could ever be saved. Here we clear interactions once when the mode is set. This'll happen after interactions have been loaded, since `VCRMiddleware` is instantiated using `TryFrom` which loads the old interactions. --- src/lib.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 3d7345b..5777633 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -88,6 +88,10 @@ pub type VCRError = &'static str; impl VCRMiddleware { /// Adjust mode in the middleware and return it pub fn with_mode(mut self, mode: VCRMode) -> Self { + if mode == VCRMode::Record { + let mut cassette = self.storage.lock().unwrap(); + cassette.http_interactions.clear(); + } self.mode = mode; self } @@ -377,7 +381,6 @@ impl VCRMiddleware { fn record(&self, request: vcr_cassette::Request, response: vcr_cassette::Response) { let mut cassette = self.storage.lock().unwrap(); - cassette.http_interactions.clear(); cassette .http_interactions .push(vcr_cassette::HttpInteraction { @@ -482,7 +485,7 @@ impl Drop for VCRMiddleware { } } -/// Load VCR cassette for filesystem +/// Load VCR cassette from filesystem // /// For simplicity, support JSON format only for now impl TryFrom for VCRMiddleware {