diff --git a/app/aspects/extensions/importers/local/creators/exchange.rb b/app/aspects/extensions/importers/local/creators/exchange.rb index eb8849ce..c4778997 100644 --- a/app/aspects/extensions/importers/local/creators/exchange.rb +++ b/app/aspects/extensions/importers/local/creators/exchange.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require "initable" + module Terminus module Aspects module Extensions @@ -9,6 +11,7 @@ module Terminus # Creates exchange. class Exchange include Deps[:logger, repository: "repositories.extension_exchange"] + include Initable[job: Terminus::Jobs::Extensions::ExchangeRefresh] def initialize(schema: Schemas::Exchange, error_joiner: Errors::ResultJoiner, **) @schema = schema @@ -27,7 +30,12 @@ module Terminus attr_reader :schema, :error_joiner - def create(attributes) = repository.create(attributes).tap { log it, attributes } + def create attributes + repository.create(attributes).tap do |exchange| + log exchange, attributes + job.perform_async exchange.id + end + end def log exchange, attributes tags = [{extension_id: attributes[:extension_id], exchange_id: exchange.id}] diff --git a/spec/app/aspects/extensions/importers/local/creators/exchange_spec.rb b/spec/app/aspects/extensions/importers/local/creators/exchange_spec.rb index ccc9ab80..e36fb085 100644 --- a/spec/app/aspects/extensions/importers/local/creators/exchange_spec.rb +++ b/spec/app/aspects/extensions/importers/local/creators/exchange_spec.rb @@ -40,6 +40,16 @@ RSpec.describe Terminus::Aspects::Extensions::Importers::Local::Creators::Exchan ) end + it "enqueues job" do + Sidekiq::Testing.fake! do + creator.call attributes + + expect(Terminus::Jobs::Extensions::ExchangeRefresh.jobs).to contain_exactly( + hash_including("args" => [kind_of(Integer)]) + ) + end + end + it "answers extension when success" do expect(creator.call(attributes)).to match( Success(kind_of(Terminus::Structs::ExtensionExchange))