require 'test_helper'

class RemoteBeanstreamInteracTest < Test::Unit::TestCase
  def setup
    @gateway = BeanstreamInteracGateway.new(fixtures(:beanstream_interac))

    @amount = 100

    @options = {
      order_id: generate_unique_id,
      billing_address: {
        name: 'xiaobo zzz',
        phone: '555-555-5555',
        address1: '1234 Levesque St.',
        address2: 'Apt B',
        city: 'Montreal',
        state: 'QC',
        country: 'CA',
        zip: 'H2C1X8'
      },
      email: 'xiaobozzz@example.com',
      subtotal: 800,
      shipping: 100,
      tax1: 100,
      tax2: 100,
      custom: 'reference one'
    }
  end

  def test_successful_purchase
    assert response = @gateway.purchase(@amount, @options)
    assert_success response
    assert_equal 'R', response.params['responseType']
    assert_false response.redirect.blank?
  end

  def test_failed_confirmation
    assert response = @gateway.confirm('')
    assert_failure response
  end

  def test_invalid_login
    gateway = BeanstreamInteracGateway.new(
      merchant_id: '',
      login: '',
      password: ''
    )
    assert response = gateway.purchase(@amount, @options)
    assert_failure response
    assert_equal 'Invalid merchant id (merchant_id = 0)', response.message
  end
end
