From 867a9cbbb818bb4f0d3990403c554a632f367944 Mon Sep 17 00:00:00 2001
From: James Wen <jrw2175@columbia.edu>
Date: Thu, 28 Jan 2016 00:41:26 -0500
Subject: Improve clarity of error message for missing includes and eager_load
 relations

---
 activerecord/test/cases/associations/join_model_test.rb | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

(limited to 'activerecord/test/cases')

diff --git a/activerecord/test/cases/associations/join_model_test.rb b/activerecord/test/cases/associations/join_model_test.rb
index f6dddaf5b4..b473c3436e 100644
--- a/activerecord/test/cases/associations/join_model_test.rb
+++ b/activerecord/test/cases/associations/join_model_test.rb
@@ -740,6 +740,23 @@ class AssociationsJoinModelTest < ActiveRecord::TestCase
     assert_equal aircraft.engines, [engine]
   end
 
+  def test_proper_error_message_for_eager_load_and_includes_association_errors
+    includes_error = assert_raises(ActiveRecord::ConfigurationError) {
+      Post.includes(:nonexistent_relation).where(nonexistent_relation: {name: 'Rochester'}).find(1)
+    }
+    assert_equal("Can't join 'Post' to association named 'nonexistent_relation'; perhaps you misspelled it?", includes_error.message)
+
+    eager_load_error = assert_raises(ActiveRecord::ConfigurationError) {
+      Post.eager_load(:nonexistent_relation).where(nonexistent_relation: {name: 'Rochester'}).find(1)
+    }
+    assert_equal("Can't join 'Post' to association named 'nonexistent_relation'; perhaps you misspelled it?", eager_load_error.message)
+
+    includes_and_eager_load_error = assert_raises(ActiveRecord::ConfigurationError) {
+      Post.eager_load(:nonexistent_relation).includes(:nonexistent_relation).where(nonexistent_relation: {name: 'Rochester'}).find(1)
+    }
+    assert_equal("Can't join 'Post' to association named 'nonexistent_relation'; perhaps you misspelled it?", includes_and_eager_load_error.message)
+  end
+
   private
     # create dynamic Post models to allow different dependency options
     def find_post_with_dependency(post_id, association, association_name, dependency)
-- 
cgit v1.2.3