From 728e3b4047a55ead0f5fbb3bc57095b2b273352b Mon Sep 17 00:00:00 2001
From: Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>
Date: Fri, 26 Jun 2009 11:21:17 -0700
Subject: Simple initial Paths impl

---
 railties/test/paths_test.rb | 68 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)
 create mode 100644 railties/test/paths_test.rb

(limited to 'railties/test')

diff --git a/railties/test/paths_test.rb b/railties/test/paths_test.rb
new file mode 100644
index 0000000000..0da31b467a
--- /dev/null
+++ b/railties/test/paths_test.rb
@@ -0,0 +1,68 @@
+require 'abstract_unit'
+
+module Rails
+  class Application
+    class Path
+      attr_accessor :path, :root #, :glob, :load_once, :eager
+      
+      def initialize(path, root = nil)
+        @children = {}
+        @path = path
+        @root = root || self
+      end
+      
+      def method_missing(id, *args)
+        name = id.to_s
+        
+        if name =~ /^(.*)=$/
+          @children[$1] = Path.new(args.first, @root)
+        elsif path = @children[name]
+          path
+        else
+          super
+        end
+      end
+      
+      def path
+        @path.index('/') == 0 ? @path : File.join(@root.path, @path)
+      end
+      
+      alias to_s path
+    end
+  end
+end
+
+class PathsTest < ActiveSupport::TestCase
+  
+  def setup
+    @root = Rails::Application::Path.new("/foo/bar")
+  end
+  
+  test "the paths object is initialized with the root path" do
+    root = Rails::Application::Path.new("/fiz/baz")
+    assert_equal "/fiz/baz", root.to_s
+  end
+  
+  test "creating a root level path" do
+    @root.app = "/foo/bar"
+    assert_equal "/foo/bar", @root.app.to_s
+  end
+  
+  test "relative paths are relative to the paths root" do
+    @root.app = "app"
+    assert_equal "/foo/bar/app", @root.app.to_s
+  end
+  
+  test "creating a child level path" do
+    @root.app        = "/foo/bar"
+    @root.app.models = "/foo/bar/baz"
+    assert_equal "/foo/bar/baz", @root.app.models.to_s
+  end
+  
+  test "child level paths are relative from the root" do
+    @root.app        = "/app"
+    @root.app.models = "baz"
+    
+    assert_equal "/foo/bar/baz", @root.app.models.to_s
+  end
+end
\ No newline at end of file
-- 
cgit v1.2.3