diff --git a/lib/registration.rb b/lib/registration.rb index bb5d02b1dc273d24abcb40bc89597fc0b3e1d8bf..2f5d789736db1153c06d46522baa09f87b2a1ddd 100644 --- a/lib/registration.rb +++ b/lib/registration.rb @@ -4,8 +4,6 @@ require_relative "./oob" class Registration def self.for(iq, customer, web_register_manager) - raise "TODO" if customer&.active? - EMPromise.resolve(customer&.registered?).then do |registered| if registered Registered.new(iq, registered.phone) @@ -36,10 +34,14 @@ class Registration class Activation def self.for(iq, customer, tel) - return EMPromise.resolve(new(iq, customer, tel)) if customer - - # Create customer_id - raise "TODO" + if customer&.active? + Finish.new(iq, customer, tel) + elsif customer + EMPromise.resolve(new(iq, customer, tel)) + else + # Create customer_id + raise "TODO" + end end def initialize(iq, customer, tel) diff --git a/test/test_registration.rb b/test/test_registration.rb index 3b8876023c074f0125cd241d54f29e08419d2706..be315bf686dee6758d3a7574b8ae77108c31a24f 100644 --- a/test/test_registration.rb +++ b/test/test_registration.rb @@ -4,10 +4,35 @@ require "test_helper" require "registration" class RegistrationTest < Minitest::Test + def test_for_registered + BACKEND_SGX.expect( + :registered?, + EMPromise.resolve(OpenStruct.new(phone: "+15555550000")), + ["test"] + ) + iq = Blather::Stanza::Iq::Command.new + iq.from = "test@example.com" + result = Registration.for(iq, Customer.new("test"), Minitest::Mock.new).sync + assert_kind_of Registration::Registered, result + end + em :test_for_registered + def test_for_activated - skip "Registration#for activated not implemented yet" + BACKEND_SGX.expect( + :registered?, + EMPromise.resolve(nil), + ["test"] + ) + web_manager = WebRegisterManager.new + web_manager["test@example.com"] = "+15555550000" iq = Blather::Stanza::Iq::Command.new - Registration.for(iq, Customer.new("test"), Minitest::Mock.new).sync + iq.from = "test@example.com" + result = Registration.for( + iq, + Customer.new("test", plan_name: "test_usd", expires_at: Time.now + 999), + web_manager + ).sync + assert_kind_of Registration::Finish, result end em :test_for_activated