diff options
| -rw-r--r-- | Gemfile | 2 | ||||
| -rw-r--r-- | billing/app/helpers/billing_helper.rb | 3 | ||||
| -rw-r--r-- | billing/test/functional/customer_controller_test.rb | 2 | ||||
| -rw-r--r-- | billing/test/functional/customers_controller_test.rb | 2 | ||||
| -rw-r--r-- | billing/test/integration/admin_customer_test.rb | 46 | ||||
| -rw-r--r-- | billing/test/integration/customer_creation_test.rb | 3 | 
6 files changed, 53 insertions, 5 deletions
@@ -21,8 +21,8 @@ gem 'debugger', :platforms => :mri_19  group :test do    gem 'fake_braintree', require: false    gem 'capybara', require: false +  gem 'launchy' # so save_and_open_page works in integration tests  end  # unreleased so far ... but leap_web_certs need it -  gem 'certificate_authority', :git => 'git://github.com/cchandler/certificate_authority.git' diff --git a/billing/app/helpers/billing_helper.rb b/billing/app/helpers/billing_helper.rb index 5272eab..3c0691f 100644 --- a/billing/app/helpers/billing_helper.rb +++ b/billing/app/helpers/billing_helper.rb @@ -10,7 +10,8 @@ module BillingHelper    end    def show_or_new_customer_link(user) -    # Link to show if user is admin viewing another user, or user is already a customer. Otherwise link to create a new customer. +    # Link to show if user is admin viewing another user, or user is already a customer. +    # Otherwise link to create a new customer.      if (admin? and (user != current_user)) or ((customer = Customer.find_by_user_id(user.id)) and customer.has_payment_info?)        show_customer_path(user)      else diff --git a/billing/test/functional/customer_controller_test.rb b/billing/test/functional/customer_controller_test.rb index 9bf2b5e..d7f221e 100644 --- a/billing/test/functional/customer_controller_test.rb +++ b/billing/test/functional/customer_controller_test.rb @@ -23,7 +23,7 @@ class CustomerControllerTest < ActionController::TestCase    test "edit uses params[:id]" do      customer = FactoryGirl.create :customer_with_payment_info      login customer.user -    get :edit, id: customer.id +    get :edit, id: customer.user.id      assert_response :success      assert assigns(:tr_data) diff --git a/billing/test/functional/customers_controller_test.rb b/billing/test/functional/customers_controller_test.rb index 2a431da..02b3424 100644 --- a/billing/test/functional/customers_controller_test.rb +++ b/billing/test/functional/customers_controller_test.rb @@ -45,7 +45,7 @@ class CustomersControllerTest < ActionController::TestCase      login @other_user      get :new      assert_response :redirect -    assert_equal edit_customer_url(@customer), response.header['Location'] #todo should pass user not customer +    assert_equal edit_customer_url(@customer.user), response.header['Location'] #todo should pass user not customer    end diff --git a/billing/test/integration/admin_customer_test.rb b/billing/test/integration/admin_customer_test.rb new file mode 100644 index 0000000..16f2931 --- /dev/null +++ b/billing/test/integration/admin_customer_test.rb @@ -0,0 +1,46 @@ +require 'test_helper' +require 'fake_braintree' +require 'capybara/rails' + +class CustomerCreationTest < ActionDispatch::IntegrationTest +  include Warden::Test::Helpers +  include Capybara::DSL + +  setup do +    Warden.test_mode! +    @admin = User.find_by_login('admin') || FactoryGirl.create(:user, login: 'admin') +    @user = FactoryGirl.create(:user) +  end + +  teardown do +    Warden.test_reset! +    @user.destroy +    @admin.destroy +  end + +  test "check non customer as admin" do +    login_as @admin +    visit '/' +    click_link 'Users' +    click_link @user.login +    click_link 'Billing Settings' +    assert page.has_content? @user.email_address +    assert page.has_content? 'No Saved Customer' +  end + +  test "check customer as admin" do +    login_as @user +    visit '/' +    click_link 'Billing Settings' +    click_button 'Save Payment Info' + +    login_as @admin +    visit '/' +    click_link 'Users' +    click_link @user.login +    click_link 'Billing Settings' +    assert page.has_content? @user.email_address +    assert !page.has_content?('No Saved Customer') +    save_and_open_page +  end +end diff --git a/billing/test/integration/customer_creation_test.rb b/billing/test/integration/customer_creation_test.rb index 3ab2e4f..532a5b5 100644 --- a/billing/test/integration/customer_creation_test.rb +++ b/billing/test/integration/customer_creation_test.rb @@ -22,7 +22,8 @@ class CustomerCreationTest < ActionDispatch::IntegrationTest    # RackTest assumes all requests to be local. So we need    # BraintreeTestApp for the braintree transparent redirect to work.    test "create customer with braintree" do -    visit '/customer/new' +    visit '/' +    click_link 'Billing Settings'      assert_difference("Customer.count") do        click_button 'Save Payment Info'      end  | 
