0

I want to create a Minitest for service responsible for creating data inside of external provider and updating few things in my db. To do so I'm using VCR and below test:

#test/services/identity_checks/check_creator_test.rb

require 'test_helper'

module IdentityChecks
  class CheckCreator < ActiveSupport::TestCase
    setup do
      VCR.insert_cassette name
      identity_check.user_id = user.id
    end
    
    teardown do
      VCR.eject_cassette
    end
    
    test 'update status' do
      service
      identity_check.reload
      assert_equal 'Not started', identity_check.status
    end
    
    private
    
    def service
      ::CheckCreator.new(identity_check).call
    end
    
    def identity_check
      @identity_check ||= identity_checks(:in_progress)
    end
    
    def user
      @user ||= users(:registered)
    end
  end  
end

And tested service:

#app/services/identity_checks/check_creator.rb

module IdentityChecks
  class CheckCreator
    def initialize(identity_check)
      @identity_check = identity_check
    end
    
    def call
      response = api.create_check(options: build_options)
      identity_check.update!(check_uuid: response['id'], status: response['status_label'], check_body: response)
    end
    
    attr_accessor :identity_check
    
    private
    
    def api
      @api ||= ::Identity::Api.new
    end
  end
end

With this code I'm getting an error:

NoMethodError: undefined method call' for #<IdentityChecks::CheckCreator test/services/identity_checks/check_creator_test.rb:31:in service' test/services/identity_checks/check_creator_test.rb:23:in `block in class:CheckCreator'

I thought it's because VCR but when I get rid of it it's still the same. Inside of Rails console everything works well.

mr_muscle
  • 2,536
  • 18
  • 61
  • 1
    the name of test-class should be `CheckCreatorTest`, and i think no need wrap it in `module IdentityChecks` (in test) – Lam Phan Jul 14 '21 at 04:22
  • @LamPhan omg indeed! I forgot to add `Test` at the end of the class - rookie mistake, thanks a lot! – mr_muscle Jul 14 '21 at 07:35

0 Answers0