require 'test_helper' class RemoteCaptureTest < Test::Unit::TestCase def setup @environment = Spreedly::Environment.new(remote_test_environment_key, remote_test_access_secret) end def test_invalid_login assert_invalid_login do |environment| environment.capture_transaction('authorize_token') end end def test_authorization_token_found assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the specified reference transaction.") do @environment.capture_transaction('unknown_auth_token') end end def test_needs_succeeded_reference gateway_token = @environment.add_gateway(:test).token card_token = create_failed_card_on(@environment).token authorization = @environment.authorize_on_gateway(gateway_token, card_token, 144) assert !authorization.succeeded? assert_raise_with_message(Spreedly::TransactionCreationError, "The reference transaction did not succeed. Only successful reference transactions are permitted.") do @environment.capture_transaction(authorization.token) end end def test_successful_capture_full_amount gateway_token = @environment.add_gateway(:test).token card_token = create_card_on(@environment).token authorization = @environment.authorize_on_gateway(gateway_token, card_token, 800) assert authorization.succeeded? capture = @environment.capture_transaction(authorization.token) assert capture.succeeded? assert_equal authorization.token, capture.reference_token assert_equal 800, capture.amount end def test_successful_capture_partial_amount gateway_token = @environment.add_gateway(:test).token card_token = create_card_on(@environment).token authorization = @environment.authorize_on_gateway(gateway_token, card_token, 800) assert authorization.succeeded? capture = @environment.capture_transaction(authorization.token, amount: 322) assert capture.succeeded? assert_equal authorization.token, capture.reference_token assert_equal 322, capture.amount end def test_failed_capture gateway_token = @environment.add_gateway(:test).token card_token = create_card_on(@environment).token authorization = @environment.authorize_on_gateway(gateway_token, card_token, 800) assert authorization.succeeded? capture = @environment.capture_transaction(authorization.token, amount: 44) assert !capture.succeeded? assert_equal authorization.token, capture.reference_token assert_equal 44, capture.amount assert_equal 'Unable to process the capture transaction.', capture.message end end