spec/client_spec.rb in redlock-0.1.6 vs spec/client_spec.rb in redlock-0.1.7
- old
+ new
@@ -168,9 +168,43 @@
expect(resource_key).to be_lockable(lock_manager, ttl)
end
end
+ describe "extend" do
+ context 'when lock is available' do
+ before { @lock_info = lock_manager.lock(resource_key, ttl) }
+ after(:each) { lock_manager.unlock(@lock_info) if @lock_info }
+
+ it 'can extend its own lock' do
+ lock_info = lock_manager.extend_life(@lock_info, ttl)
+ expect(lock_info).to be_lock_info_for(resource_key)
+ end
+
+ it "can't extend a nonexistent lock" do
+ lock_manager.unlock(@lock_info)
+ lock_info = lock_manager.extend_life(@lock_info, ttl)
+ expect(lock_info).to eq(false)
+ end
+ end
+ end
+
+ describe "extend!" do
+ context 'when lock is available' do
+ before { @lock_info = lock_manager.lock(resource_key, ttl) }
+ after(:each) { lock_manager.unlock(@lock_info) if @lock_info }
+
+ it 'can extend its own lock' do
+ expect{ lock_manager.extend_life!(@lock_info, ttl) }.to_not raise_error
+ end
+
+ it "can't extend a nonexistent lock" do
+ lock_manager.unlock(@lock_info)
+ expect{ lock_manager.extend_life!(@lock_info, ttl) }.to raise_error(Redlock::LockError)
+ end
+ end
+ end
+
describe 'lock!' do
context 'when lock is available' do
it 'locks' do
lock_manager.lock!(resource_key, ttl) do
expect(resource_key).to_not be_lockable(lock_manager, ttl)