diff --git a/lib/bwmsgsv2_repo.rb b/lib/bwmsgsv2_repo.rb index aaf89928f74afadde08020a3302bbbbbfbdb310b..429ea6ff25eb930f094abc82ee481f30512b033d 100644 --- a/lib/bwmsgsv2_repo.rb +++ b/lib/bwmsgsv2_repo.rb @@ -3,15 +3,21 @@ require "lazy_object" require_relative "customer_fwd" -require_relative "ibr" +require_relative "ibr_repo" require_relative "trivial_backend_sgx_repo" class Bwmsgsv2Repo VOICEMAIL_TRANSCRIPTION_DISABLED = 0 - def initialize(jid: CONFIG[:sgx], redis: LazyObject.new { REDIS }, **kwargs) + def initialize( + jid: CONFIG[:sgx], + redis: LazyObject.new { REDIS }, + ibr_repo: IBRRepo.new, + **kwargs + ) @jid = jid @redis = redis + @ibr_repo = ibr_repo @trivial_repo = TrivialBackendSgxRepo.new(jid: jid, **kwargs) end @@ -74,16 +80,7 @@ protected end def registration(from_jid) - ibr = IBR.new(:get, @jid) - ibr.from = from_jid - - IQ_MANAGER.write(ibr).catch { nil }.then do |result| - if result.respond_to?(:registered?) && result.registered? - result - else - false - end - end + @ibr_repo.registered?(@jid, from: from_jid) end def from_redis(from_jid, tel) diff --git a/lib/ibr_repo.rb b/lib/ibr_repo.rb new file mode 100644 index 0000000000000000000000000000000000000000..f00d3c8a46df82e21d01095d35b1aaf2e0158234 --- /dev/null +++ b/lib/ibr_repo.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require "lazy_object" +require "value_semantics/monkey_patched" + +require_relative "ibr" + +class IBRRepo + value_semantics do + iq_manager Anything(), default: LazyObject.new { IQ_MANAGER } + end + + def registered?(jid, from:) + ibr = IBR.new(:get, jid) + ibr.from = from + + iq_manager.write(ibr).catch { nil }.then do |result| + if result.respond_to?(:registered?) && result.registered? + result + else + false + end + end + end +end diff --git a/test/test_backend_sgx.rb b/test/test_backend_sgx.rb index 60663362ae4a98154e26b0480ce961d87b0582aa..361ddc4c7d961033e4913a3fc4640aad0c63a89f 100644 --- a/test/test_backend_sgx.rb +++ b/test/test_backend_sgx.rb @@ -6,11 +6,11 @@ require "backend_sgx" require "trivial_backend_sgx_repo" BackendSgx::IQ_MANAGER = Minitest::Mock.new -Bwmsgsv2Repo::IQ_MANAGER = Minitest::Mock.new +IBRRepo::IQ_MANAGER = Minitest::Mock.new class BackendSgxTest < Minitest::Test def test_registered - Bwmsgsv2Repo::IQ_MANAGER.expect( + IBRRepo::IQ_MANAGER.expect( :write, EMPromise.resolve(IBR.new.tap { |ibr| ibr.registered = true }), [Matching.new do |ibr| @@ -24,7 +24,7 @@ class BackendSgxTest < Minitest::Test em :test_registered def test_registered_not_registered - Bwmsgsv2Repo::IQ_MANAGER.expect( + IBRRepo::IQ_MANAGER.expect( :write, EMPromise.resolve(IBR.new.tap { |ibr| ibr.registered = false }), [Matching.new do |ibr|