summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2017-07-18 20:17:24 +0800
committerLin Jen-Shin <godfat@godfat.org>2017-07-18 20:17:24 +0800
commit3c34a0b99be2cf858831043403ba2268ac270c77 (patch)
treeb0d8239fc268a6e42c8c0dbc7874d8d85d723183 /spec
parent3c7cb6ad9e9d74c0f2fb7e8ba19f258c7316f445 (diff)
downloadgitlab-ce-3c34a0b99be2cf858831043403ba2268ac270c77.tar.gz
Remove old request store wrap
Diffstat (limited to 'spec')
-rw-r--r--spec/lib/gitlab/cache/request_store_wrap_spec.rb107
1 files changed, 0 insertions, 107 deletions
diff --git a/spec/lib/gitlab/cache/request_store_wrap_spec.rb b/spec/lib/gitlab/cache/request_store_wrap_spec.rb
deleted file mode 100644
index 87ea26a9635..00000000000
--- a/spec/lib/gitlab/cache/request_store_wrap_spec.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-require 'spec_helper'
-
-describe Gitlab::Cache::RequestStoreWrap, :request_store do
- class ExpensiveAlgorithm
- extend Gitlab::Cache::RequestStoreWrap
-
- attr_accessor :id, :name, :result
-
- def initialize(id, name, result)
- self.id = id
- self.name = name
- self.result = result
- end
-
- request_store_wrap_key do
- [id, name]
- end
-
- request_store_wrap def compute(arg)
- result << arg
- end
-
- request_store_wrap def repute(arg)
- result << arg
- end
- end
-
- let(:algorithm) { ExpensiveAlgorithm.new('id', 'name', []) }
-
- context 'when RequestStore is active' do
- it 'does not compute twice for the same argument' do
- result = algorithm.compute(true)
-
- expect(result).to eq([true])
- expect(algorithm.compute(true)).to eq(result)
- expect(algorithm.result).to eq(result)
- end
-
- it 'computes twice for the different argument' do
- algorithm.compute(true)
- result = algorithm.compute(false)
-
- expect(result).to eq([true, false])
- expect(algorithm.result).to eq(result)
- end
-
- it 'computes twice for the different keys, id' do
- algorithm.compute(true)
- algorithm.id = 'ad'
- result = algorithm.compute(true)
-
- expect(result).to eq([true, true])
- expect(algorithm.result).to eq(result)
- end
-
- it 'computes twice for the different keys, name' do
- algorithm.compute(true)
- algorithm.name = 'same'
- result = algorithm.compute(true)
-
- expect(result).to eq([true, true])
- expect(algorithm.result).to eq(result)
- end
-
- it 'computes twice for the different class name' do
- algorithm.compute(true)
- allow(ExpensiveAlgorithm).to receive(:name).and_return('CheapAlgo')
- result = algorithm.compute(true)
-
- expect(result).to eq([true, true])
- expect(algorithm.result).to eq(result)
- end
-
- it 'computes twice for the different method' do
- algorithm.compute(true)
- result = algorithm.repute(true)
-
- expect(result).to eq([true, true])
- expect(algorithm.result).to eq(result)
- end
-
- it 'computes twice if RequestStore starts over' do
- algorithm.compute(true)
- RequestStore.end!
- RequestStore.clear!
- RequestStore.begin!
- result = algorithm.compute(true)
-
- expect(result).to eq([true, true])
- expect(algorithm.result).to eq(result)
- end
- end
-
- context 'when RequestStore is inactive' do
- before do
- RequestStore.end!
- end
-
- it 'computes twice even if everything is the same' do
- algorithm.compute(true)
- result = algorithm.compute(true)
-
- expect(result).to eq([true, true])
- expect(algorithm.result).to eq(result)
- end
- end
-end