diff options
4 files changed, 30 insertions, 15 deletions
diff --git a/billing/test/functional/customer_controller_test.rb b/billing/test/functional/customer_controller_test.rb index d7f221e..d62ee95 100644 --- a/billing/test/functional/customer_controller_test.rb +++ b/billing/test/functional/customer_controller_test.rb @@ -69,6 +69,7 @@ class CustomerControllerTest < ActionController::TestCase skip "can't get user creation to fail" login FakeBraintree.decline_all_cards! + # what is prepare_confirmation ?? this method isn't found to_confirm = prepare_confirmation :create_customer_data, customer: FactoryGirl.attributes_for(:broken_customer), redirect_url: confirm_customer_url diff --git a/billing/test/functional/customers_controller_test.rb b/billing/test/functional/customers_controller_test.rb index 02b3424..d4881bf 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.user), response.header['Location'] #todo should pass user not customer + assert_equal edit_customer_url(@customer.user), response.header['Location'] end diff --git a/billing/test/integration/admin_customer_test.rb b/billing/test/integration/admin_customer_test.rb index 1145ef4..5169d85 100644 --- a/billing/test/integration/admin_customer_test.rb +++ b/billing/test/integration/admin_customer_test.rb @@ -29,16 +29,8 @@ class CustomerCreationTest < ActionDispatch::IntegrationTest end test "check customer as admin" do -=begin - - 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 + skip "cannot check customer as admin" + # it would be good to have a test where an admin tries to view the 'Billing Settings' for another user. + # However, partially due to limitations of FakeBraintree, this doesn't seem pursuing at this time. end end diff --git a/billing/test/integration/customer_creation_test.rb b/billing/test/integration/customer_creation_test.rb index 532a5b5..9555ef1 100644 --- a/billing/test/integration/customer_creation_test.rb +++ b/billing/test/integration/customer_creation_test.rb @@ -18,22 +18,28 @@ class CustomerCreationTest < ActionDispatch::IntegrationTest # Let's test both steps together with capybara # - # This test is nice and clean but also a bit fragil: + # This test is nice and clean but also a bit fragile: # RackTest assumes all requests to be local. So we need # BraintreeTestApp for the braintree transparent redirect to work. + # + # this mystifies me why this works. when i type the click_button line (and the + # customer.braintree_customer line) in the debugger, it gives a timeout, + # but it works fine embedded in the test. test "create customer with braintree" do visit '/' click_link 'Billing Settings' + # i am a bit unclear why this works, as it seems there will be validation errors assert_difference("Customer.count") do - click_button 'Save Payment Info' + click_button 'Save Payment Info' # this gives me a timeout end - assert customer = Customer.find_by_user_id(@user.id) assert customer.braintree_customer end # We only test the confirmation here. # The request to Braintree is triggered outside of rails + # In skippped test below, we see this works even if the attributes are + # for a broken customer test "successfully confirms customer creation" do response = post_transparent_redirect :create_customer_data, customer: FactoryGirl.attributes_for(:braintree_customer), @@ -48,6 +54,22 @@ class CustomerCreationTest < ActionDispatch::IntegrationTest assert customer.braintree_customer end + + test "failed customer creation" do + skip "cannot get customer creation to fail" + + FakeBraintree.decline_all_cards! + response = post_transparent_redirect :create_customer_data, + customer: FactoryGirl.attributes_for(:broken_customer), + redirect_url: confirm_customer_url + + assert_no_difference("Customer.count") do + post response['Location'] #this gives me a timeout when run alone + end + assert_nil Customer.find_by_user_id(@user.id) + + end + def post_transparent_redirect(type, data) params = data.dup params[:tr_data] = Braintree::TransparentRedirect.send(type, params) |