diff --git a/codegen/layouts/client.hbs b/codegen/layouts/client.hbs index 5d0c276..17f67f1 100644 --- a/codegen/layouts/client.hbs +++ b/codegen/layouts/client.hbs @@ -1,7 +1,7 @@ # frozen_string_literal: true {{#if importActionAttempt}} -require "seam/helpers/action_attempt" +require "seam/action_attempt_resolver" {{/if}} module Seam diff --git a/codegen/layouts/partials/client-method.hbs b/codegen/layouts/partials/client-method.hbs index 3775fd5..284ae11 100644 --- a/codegen/layouts/partials/client-method.hbs +++ b/codegen/layouts/partials/client-method.hbs @@ -23,7 +23,7 @@ wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["{{returnPath}}"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["{{returnPath}}"]), @client, wait_for_action_attempt) {{/if}} {{#if isNil}} diff --git a/lib/seam/action_attempt_resolver.rb b/lib/seam/action_attempt_resolver.rb new file mode 100644 index 0000000..394563e --- /dev/null +++ b/lib/seam/action_attempt_resolver.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +require_relative "wait_for_action_attempt" + +module Seam + class ActionAttemptResolver + def self.resolve(action_attempt, client, wait_for_action_attempt) + return wait_until_resolved(action_attempt, client) if wait_for_action_attempt == true + + options = wait_options(wait_for_action_attempt) + return action_attempt if options.nil? + + wait_until_resolved(action_attempt, client, timeout: options[:timeout], + polling_interval: options[:polling_interval]) + end + + # The client wraps its defaults in a DeepHashAccessor, so the hash form of + # this option reaches here as an accessor when it comes from the client + # and as a plain Hash when it comes from the method call. + def self.wait_options(wait_for_action_attempt) + case wait_for_action_attempt + when Hash then wait_for_action_attempt + when Seam::DeepHashAccessor then wait_for_action_attempt.to_h + end + end + + def self.wait_until_resolved(action_attempt, client, timeout: nil, polling_interval: nil) + timeout = timeout.nil? ? 5.0 : timeout + polling_interval = polling_interval.nil? ? 0.5 : polling_interval + + time_waiting = 0.0 + + while action_attempt.status == "pending" + sleep(polling_interval) + time_waiting += polling_interval + + raise Seam::ActionAttemptTimeoutError.new(action_attempt, timeout) if time_waiting > timeout + + action_attempt = update_action_attempt(action_attempt, client) + end + + raise Seam::ActionAttemptFailedError.new(action_attempt) if action_attempt.status == "error" + + action_attempt + end + + def self.update_action_attempt(action_attempt, client) + response = client.get("/action_attempts/get", {action_attempt_id: action_attempt.action_attempt_id}) + + action_attempt.update_from_response(response.body["action_attempt"]) + action_attempt + end + end +end diff --git a/lib/seam/helpers/action_attempt.rb b/lib/seam/helpers/action_attempt.rb deleted file mode 100644 index ba28a7f..0000000 --- a/lib/seam/helpers/action_attempt.rb +++ /dev/null @@ -1,56 +0,0 @@ -# frozen_string_literal: true - -require_relative "../wait_for_action_attempt" - -module Seam - module Helpers - module ActionAttempt - def self.decide_and_wait(action_attempt, client, wait_for_action_attempt) - return wait_until_finished(action_attempt, client) if wait_for_action_attempt == true - - options = wait_options(wait_for_action_attempt) - return action_attempt if options.nil? - - wait_until_finished(action_attempt, client, timeout: options[:timeout], - polling_interval: options[:polling_interval]) - end - - # The client wraps its defaults in a DeepHashAccessor, so the hash form of - # this option reaches here as an accessor when it comes from the client - # and as a plain Hash when it comes from the method call. - def self.wait_options(wait_for_action_attempt) - case wait_for_action_attempt - when Hash then wait_for_action_attempt - when Seam::DeepHashAccessor then wait_for_action_attempt.to_h - end - end - - def self.wait_until_finished(action_attempt, client, timeout: nil, polling_interval: nil) - timeout = timeout.nil? ? 5.0 : timeout - polling_interval = polling_interval.nil? ? 0.5 : polling_interval - - time_waiting = 0.0 - - while action_attempt.status == "pending" - sleep(polling_interval) - time_waiting += polling_interval - - raise Seam::ActionAttemptTimeoutError.new(action_attempt, timeout) if time_waiting > timeout - - action_attempt = update_action_attempt(action_attempt, client) - end - - raise Seam::ActionAttemptFailedError.new(action_attempt) if action_attempt.status == "error" - - action_attempt - end - - def self.update_action_attempt(action_attempt, client) - response = client.get("/action_attempts/get", {action_attempt_id: action_attempt.action_attempt_id}) - - action_attempt.update_from_response(response.body["action_attempt"]) - action_attempt - end - end - end -end diff --git a/lib/seam/routes/access_methods.rb b/lib/seam/routes/access_methods.rb index 46fd0a5..70aed3a 100644 --- a/lib/seam/routes/access_methods.rb +++ b/lib/seam/routes/access_methods.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require "seam/helpers/action_attempt" +require "seam/action_attempt_resolver" module Seam module Clients @@ -23,7 +23,7 @@ def assign_card(access_method_id:, card_number:, wait_for_action_attempt: nil) wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Deletes an access method. @@ -50,7 +50,7 @@ def encode(access_method_id:, acs_encoder_id:, wait_for_action_attempt: nil) wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Gets an access method. @@ -102,7 +102,7 @@ def unlock_door(access_method_id:, acs_entrance_id:, wait_for_action_attempt: ni wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end end end diff --git a/lib/seam/routes/acs_encoders.rb b/lib/seam/routes/acs_encoders.rb index b7f84e4..74c2bff 100644 --- a/lib/seam/routes/acs_encoders.rb +++ b/lib/seam/routes/acs_encoders.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require "seam/helpers/action_attempt" +require "seam/action_attempt_resolver" module Seam module Clients @@ -24,7 +24,7 @@ def encode_credential(acs_encoder_id:, access_method_id: nil, acs_credential_id: wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Returns a specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). @@ -58,7 +58,7 @@ def scan_credential(acs_encoder_id:, salto_ks_metadata: nil, wait_for_action_att wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Scans a physical card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) and assigns the scanned credential to an ACS user. Provide either an `acs_user_id` or a `user_identity_id`. @@ -72,7 +72,7 @@ def scan_to_assign_credential(acs_encoder_id:, acs_user_id: nil, salto_ks_metada wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end end end diff --git a/lib/seam/routes/acs_entrances.rb b/lib/seam/routes/acs_entrances.rb index 6fb4f2b..8079678 100644 --- a/lib/seam/routes/acs_entrances.rb +++ b/lib/seam/routes/acs_entrances.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require "seam/helpers/action_attempt" +require "seam/action_attempt_resolver" module Seam module Clients @@ -69,7 +69,7 @@ def unlock(acs_credential_id:, acs_entrance_id:, wait_for_action_attempt: nil) wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end end end diff --git a/lib/seam/routes/action_attempts.rb b/lib/seam/routes/action_attempts.rb index 69b4eac..ce434c3 100644 --- a/lib/seam/routes/action_attempts.rb +++ b/lib/seam/routes/action_attempts.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require "seam/helpers/action_attempt" +require "seam/action_attempt_resolver" module Seam module Clients @@ -18,7 +18,7 @@ def get(action_attempt_id:, wait_for_action_attempt: nil) wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Returns a list of the [action attempts](https://docs.seam.co/core-concepts/action-attempts) that you specify as an array of `action_attempt_id`s. diff --git a/lib/seam/routes/locks.rb b/lib/seam/routes/locks.rb index 8af05f4..bbb890e 100644 --- a/lib/seam/routes/locks.rb +++ b/lib/seam/routes/locks.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require "seam/helpers/action_attempt" +require "seam/action_attempt_resolver" module Seam module Clients @@ -24,7 +24,7 @@ def configure_auto_lock(auto_lock_enabled:, device_id:, auto_lock_delay_seconds: wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Returns a specified [lock](https://docs.seam.co/low-level-apis/smart-locks). @@ -64,7 +64,7 @@ def lock_door(device_id:, wait_for_action_attempt: nil) wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Unlocks a [lock](https://docs.seam.co/low-level-apis/smart-locks). See also [Locking and Unlocking Smart Locks](https://docs.seam.co/low-level-apis/smart-locks/lock-and-unlock). @@ -75,7 +75,7 @@ def unlock_door(device_id:, wait_for_action_attempt: nil) wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end end end diff --git a/lib/seam/routes/locks_simulate.rb b/lib/seam/routes/locks_simulate.rb index 30c86bc..7d2463a 100644 --- a/lib/seam/routes/locks_simulate.rb +++ b/lib/seam/routes/locks_simulate.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require "seam/helpers/action_attempt" +require "seam/action_attempt_resolver" module Seam module Clients @@ -19,7 +19,7 @@ def keypad_code_entry(code:, device_id:, wait_for_action_attempt: nil) wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Simulates a manual lock action using a keypad. You can only perform this action for [August](https://docs.seam.co/device-and-system-integration-guides/august-locks) devices within [sandbox workspaces](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). @@ -30,7 +30,7 @@ def manual_lock_via_keypad(device_id:, wait_for_action_attempt: nil) wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end end end diff --git a/lib/seam/routes/thermostats.rb b/lib/seam/routes/thermostats.rb index 61948f6..916c3de 100644 --- a/lib/seam/routes/thermostats.rb +++ b/lib/seam/routes/thermostats.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require "seam/helpers/action_attempt" +require "seam/action_attempt_resolver" module Seam module Clients @@ -31,7 +31,7 @@ def activate_climate_preset(climate_preset_key:, device_id:, wait_for_action_att wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to [cool mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). @@ -44,7 +44,7 @@ def cool(device_id:, cooling_set_point_celsius: nil, cooling_set_point_fahrenhei wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Creates a [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). @@ -88,7 +88,7 @@ def heat(device_id:, heating_set_point_celsius: nil, heating_set_point_fahrenhei wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to [heat-cool ("auto") mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). @@ -103,7 +103,7 @@ def heat_cool(device_id:, cooling_set_point_celsius: nil, cooling_set_point_fahr wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Returns a list of all [thermostats](https://docs.seam.co/capability-guides/thermostats). @@ -128,7 +128,7 @@ def off(device_id:, wait_for_action_attempt: nil) wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Sets a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) as the ["fallback"](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets/setting-the-fallback-climate-preset) preset for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). @@ -152,7 +152,7 @@ def set_fan_mode(device_id:, fan_mode: nil, fan_mode_setting: nil, wait_for_acti wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Sets the [HVAC mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). @@ -168,7 +168,7 @@ def set_hvac_mode(device_id:, hvac_mode_setting:, cooling_set_point_celsius: nil wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Sets a [temperature threshold](https://docs.seam.co/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) for a specified thermostat. Seam emits a `thermostat.temperature_threshold_exceeded` event and adds a warning on a thermostat if it reports a temperature outside the threshold range. @@ -220,7 +220,7 @@ def update_weekly_program(device_id:, friday_program_id: nil, monday_program_id: wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end end end diff --git a/lib/seam/routes/thermostats_daily_programs.rb b/lib/seam/routes/thermostats_daily_programs.rb index 681484b..aca0326 100644 --- a/lib/seam/routes/thermostats_daily_programs.rb +++ b/lib/seam/routes/thermostats_daily_programs.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require "seam/helpers/action_attempt" +require "seam/action_attempt_resolver" module Seam module Clients @@ -40,7 +40,7 @@ def update(name:, periods:, thermostat_daily_program_id:, wait_for_action_attemp wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end end end diff --git a/lib/seam/routes/workspaces.rb b/lib/seam/routes/workspaces.rb index 40505d2..037837c 100644 --- a/lib/seam/routes/workspaces.rb +++ b/lib/seam/routes/workspaces.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require "seam/helpers/action_attempt" +require "seam/action_attempt_resolver" module Seam module Clients @@ -56,7 +56,7 @@ def reset_sandbox(wait_for_action_attempt: nil) wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt - Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + Seam::ActionAttemptResolver.resolve(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end # Updates the [workspace](https://docs.seam.co/core-concepts/workspaces) associated with the authentication value. diff --git a/spec/seam_client/wait_for_action_attempt_spec.rb b/spec/seam_client/wait_for_action_attempt_spec.rb index a0ff141..c0ed7fa 100644 --- a/spec/seam_client/wait_for_action_attempt_spec.rb +++ b/spec/seam_client/wait_for_action_attempt_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -RSpec.describe Seam::Helpers::ActionAttempt, :fake do +RSpec.describe Seam::ActionAttemptResolver, :fake do let(:seam) do Seam.new( api_key: seed["seam_apikey1_token"],