From d948614d3e2bc190b9c819e961b94c03d7a24fcd Mon Sep 17 00:00:00 2001
From: jessib <jessib@riseup.net>
Date: Thu, 15 Aug 2013 12:09:26 -0700
Subject: Some notes on tests that don't work. (Failing tests are skipped
 though.)

---
 .../test/functional/customer_controller_test.rb    |  1 +
 .../test/functional/customers_controller_test.rb   |  2 +-
 billing/test/integration/admin_customer_test.rb    | 14 +++--------
 billing/test/integration/customer_creation_test.rb | 28 +++++++++++++++++++---
 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)
-- 
cgit v1.2.3