From a6c564dd4e7c604eae062779c45a1303b67cfbf2 Mon Sep 17 00:00:00 2001 From: Azul Date: Fri, 9 Aug 2013 10:37:09 +0200 Subject: fix billing tests to use user id with customer resources I think this is very confusing and should be changed to: resource :users do |user| user.resource :customer end --- billing/app/helpers/billing_helper.rb | 3 ++- billing/test/functional/customer_controller_test.rb | 2 +- billing/test/functional/customers_controller_test.rb | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) 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 -- cgit v1.2.3 From 466e22fa896d307f26cddab7a2e1302cf3a0f1fc Mon Sep 17 00:00:00 2001 From: Azul Date: Mon, 12 Aug 2013 19:41:49 +0200 Subject: more integration tests for billing --- Gemfile | 2 +- billing/test/integration/admin_customer_test.rb | 46 ++++++++++++++++++++++ billing/test/integration/customer_creation_test.rb | 3 +- 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 billing/test/integration/admin_customer_test.rb diff --git a/Gemfile b/Gemfile index a562f73..6e15a00 100644 --- a/Gemfile +++ b/Gemfile @@ -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/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 -- cgit v1.2.3