From ab29371424144010470118a6e8c4b60bf8253c6f Mon Sep 17 00:00:00 2001 From: Jean Pierre Guarin Date: Fri, 16 Feb 2018 10:28:15 -0500 Subject: [PATCH] Add caching for successful responses --- lib/idempotent-request/request_manager.rb | 5 +--- .../request_manager_spec.rb | 27 ++++++++++++++----- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/lib/idempotent-request/request_manager.rb b/lib/idempotent-request/request_manager.rb index 02a4a86..9a43f0e 100644 --- a/lib/idempotent-request/request_manager.rb +++ b/lib/idempotent-request/request_manager.rb @@ -19,11 +19,8 @@ module IdempotentRequest def write(*data) status, headers, response = data response = response.body if response.respond_to?(:body) - - return data unless status == 200 - + return data unless (200..226).include?(status) storage.write(key, payload(status, headers, response)) - data end diff --git a/spec/idempotent-request/request_manager_spec.rb b/spec/idempotent-request/request_manager_spec.rb index 2a690f8..a5f75e1 100644 --- a/spec/idempotent-request/request_manager_spec.rb +++ b/spec/idempotent-request/request_manager_spec.rb @@ -81,14 +81,27 @@ RSpec.describe IdempotentRequest::RequestManager do }) end - context 'when status is 200' do - let(:data) do - [200, {}, 'body'] + describe 'when status 2xx' do + context 'when status is 200' do + let(:data) do + [200, {}, 'body'] + end + + it 'should be stored' do + request_storage.write(*data) + expect(memory_storage.read(request.key)).to eq(payload) + end end - it 'should be stored' do - request_storage.write(*data) - expect(memory_storage.read(request.key)).to eq(payload) + context 'when status is 226' do + let(:data) do + [226, {}, 'body'] + end + + it 'should be stored' do + request_storage.write(*data) + expect(memory_storage.read(request.key)).to eq(payload) + end end end @@ -97,7 +110,7 @@ RSpec.describe IdempotentRequest::RequestManager do [404, {}, 'body'] end - it 'should be stored' do + it 'should not be stored' do request_storage.write(*data) expect(memory_storage.read(request.key)).to be_nil end