summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjessib <jessib@riseup.net>2013-08-12 12:10:05 -0700
committerjessib <jessib@riseup.net>2013-08-12 12:10:05 -0700
commitd895a582df7c8f333c0aa1b97b555fbd8e4ea50f (patch)
tree7fd940bf4ac8dd394d7a25a07329d5469a17dfa0
parent8d9d7b369d99b40d709ac49b124f8c3f67579202 (diff)
parent466e22fa896d307f26cddab7a2e1302cf3a0f1fc (diff)
Merge pull request #2 from azul/feature/billing-with-passing-tests
fix billing tests to use user id with customer resources
-rw-r--r--Gemfile2
-rw-r--r--billing/app/helpers/billing_helper.rb3
-rw-r--r--billing/test/functional/customer_controller_test.rb2
-rw-r--r--billing/test/functional/customers_controller_test.rb2
-rw-r--r--billing/test/integration/admin_customer_test.rb46
-rw-r--r--billing/test/integration/customer_creation_test.rb3
6 files changed, 53 insertions, 5 deletions
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/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