homeschool 0.0.1.34 → 0.0.1.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/form_buildr.rb CHANGED
@@ -37,7 +37,6 @@
37
37
  # <input id="person_name" name="person[name]" size="30" type="text" />
38
38
  #
39
39
  module Homeschool::FormBuildr
40
- module ClassMethods; end
41
40
  module InstanceMethods
42
41
  def label_for(method, options={})
43
42
  options = {:label => options} if options.is_a? String
data/lib/homeschool.rb CHANGED
@@ -86,8 +86,8 @@ class Module
86
86
  alias_method :append_features, :append_features_with_pattern_methods
87
87
 
88
88
  def add_extension(extension)
89
- self.extend extension::ClassMethods
90
- self.send(:include, extension::InstanceMethods)
89
+ self.extend extension::ClassMethods unless !defined?(extension::ClassMethods)
90
+ self.send(:include, extension::InstanceMethods) unless !defined?(extension::InstanceMethods)
91
91
  end
92
92
  end
93
93
 
@@ -153,5 +153,5 @@ class Hash
153
153
  end
154
154
  end
155
155
 
156
- require 'standardized_test' if defined?(RAILS_ENV) && RAILS_ENV == 'test'
156
+ require 'standardized_test' if defined?(RAILS_ENV) && RAILS_ENV == 'test' || defined?(TEST_ENV)
157
157
  require 'tame_rails' if defined?(RAILS_ENV)
@@ -1,41 +1,50 @@
1
1
  require 'test/unit'
2
- module Test::Unit::Assertions
3
- def diff(one, two)
4
- prefix = 0
5
- (0...[one, two].min_by(&:length).length).each do |i|
6
- if one[i] == two[i]
7
- prefix = i + 1
2
+ module Homeschool::StandardizedTest; end
3
+ module Homeschool::StandardizedTest::Assertions
4
+ module InstanceMethods
5
+ def assert_fails
6
+ yield
7
+ passed = true
8
+ rescue
9
+ ensure
10
+ assert !passed
11
+ end
12
+
13
+ def diff(one, two)
14
+ prefix = 0
15
+ (0...[one, two].min_by(&:length).length).each do |i|
16
+ if one[i] == two[i]
17
+ prefix = i + 1
18
+ else
19
+ break
20
+ end
21
+ end
22
+ "Expected <#{diff_format(one, prefix)}> but was <#{diff_format(two, prefix)}>"
23
+ end
24
+
25
+ def diff_format(string, prefix)
26
+ prefix > 0 ? "...#{string[prefix..-1]}" : string
27
+ end
28
+
29
+ def assert_equal_with_diffing(expected, actual, message=nil)
30
+ if message == :diff
31
+ assert_block(diff(expected, actual)) {expected == actual}
8
32
  else
9
- break
33
+ assert_equal_without_diffing(expected, actual, message)
10
34
  end
11
35
  end
12
- "Expected <#{diff_format(one, prefix)}> but was <#{diff_format(two, prefix)}>"
13
- end
14
- def diff_format(string, prefix)
15
- prefix > 0 ? "...#{string[prefix..-1]}" : string
16
- end
17
- def assert_equal_with_diffing(expected, actual, message=nil)
18
- if message == :diff
19
- assert_block(diff(expected, actual)) {expected == actual}
20
- else
21
- assert_equal_without_diffing(expected, actual, message)
36
+ def self.included(klass)
37
+ klass.send :alias_method, :assert_equal_without_diffing, :assert_equal
38
+ klass.send :alias_method, :assert_equal, :assert_equal_with_diffing
22
39
  end
23
40
  end
24
- alias_method :assert_equal_without_diffing, :assert_equal
25
- alias_method :assert_equal, :assert_equal_with_diffing
26
41
  end
42
+ Test::Unit::TestCase.add_extension(Homeschool::StandardizedTest::Assertions)
27
43
 
28
44
  module HomeschoolTestHelper
29
45
  def assert_json(expected, actual)
30
46
  assert_equal JSON.parse(expected), JSON.parse(actual)
31
47
  end
32
- def assert_fails
33
- yield
34
- passed = true
35
- rescue
36
- ensure
37
- assert !passed
38
- end
39
48
 
40
49
  def HomeschoolTestHelper.included(klass)
41
50
  klass.rdef(/last_(.*)/) do |match|
@@ -0,0 +1,107 @@
1
+ TEST_ENV = true
2
+ #RAILS_ENV = ENV["RAILS_ENV"] = "test"
3
+ require 'test/unit'
4
+ require 'rubygems'
5
+ require 'active_support'
6
+ require 'json'
7
+ require File.dirname(__FILE__) + "/../lib/homeschool"
8
+
9
+ class Chicken
10
+ attr_accessor :feet
11
+ def initialize(properties)
12
+ @feet = properties[:feet]
13
+ end
14
+ def self.find(*args)
15
+ [2]
16
+ end
17
+ end
18
+
19
+ module RdefHelper
20
+ rdef /mod_(.*)/ do |match|
21
+ match[1]
22
+ end
23
+ end
24
+ class HomeschoolTest < Test::Unit::TestCase
25
+ include HomeschoolTestHelper
26
+ include RdefHelper
27
+ homeschool_fixtures :chickens
28
+
29
+ def test_fixtures
30
+ assert_equal red_chicken, red_chicken
31
+ assert_not_equal red_chicken, blue_chicken
32
+ assert_equal 3, chicken_experiment(:feet => 3).feet
33
+ end
34
+
35
+ def test_last
36
+ assert_equal 2, last_chicken
37
+ end
38
+
39
+ def test_dom_id
40
+ object = {:id => 3}.to_obj
41
+ assert_equal 'object_3', object.dom_id
42
+ assert_equal 'object_3_tr', object.dom_id(:tr)
43
+ assert_equal 'object_3_one_two', object.dom_id('one', 'two')
44
+ assert_json '{"element": "object_3", "tr": "object_3_tr", "one_two": "object_3_one_two"}', object.dom_ids.to_json
45
+ end
46
+
47
+ def test_assert_json
48
+ assert_json '{"one": 1, "two": 2}', '{"two": 2, "one": 1}'
49
+ end
50
+
51
+ def test_symbol_patterns
52
+ assert :lala!.bang?
53
+ assert_equal :lala!, :lala.bang
54
+ end
55
+
56
+ def test_to_obj
57
+ obj = {:one => 1, :two => 2}.to_obj
58
+ assert_equal 1, obj.one
59
+ assert_equal 2, obj.two
60
+ assert_equal Object, obj.class
61
+ end
62
+
63
+ def test_hash_list
64
+ obj = {:one => 1, :two => 2, :three => 3, :four => 4}
65
+ assert [4,2,3] == obj.list(:four, :two, :three)
66
+ end
67
+
68
+ def test_iv_cache
69
+ iv_cache(:one) {Object.new}
70
+ assert @one
71
+ assert_equal @one, iv_cache(:one) {Object.new}
72
+ assert_not_equal @one, iv_cache(:two) {Object.new}
73
+ end
74
+
75
+ rdef(/in_(.*)_between/) do |match|
76
+ return match[1]
77
+ end
78
+
79
+ def test_rdef
80
+ assert_equal "expected", in_expected_between
81
+ assert_fails {in_expected_between_lala}
82
+ end
83
+
84
+ def test_module_rdef
85
+ assert_equal 'worked', mod_worked
86
+ end
87
+
88
+ def test_filter
89
+ assert_equal({:one => 1, :two => 2}, {:one => 1, :two => 2, :three => 3}.filter(:one, :two))
90
+ end
91
+
92
+ def test_assert_fails
93
+ assert_fails {lala}
94
+ begin
95
+ assert_fails {one = 1}
96
+ passed = true
97
+ rescue
98
+ end
99
+ assert !passed
100
+ end
101
+
102
+ def test_assert_equal
103
+ assert_equal 'this string is the same until you get here.', 'this string is the same until you get somewhere else.', :diff
104
+ rescue
105
+ assert_equal 'Expected <...here.> but was <...somewhere else.>', $!.message
106
+ end
107
+ end
data/test/module_tests.rb CHANGED
@@ -1,26 +1,31 @@
1
+ TEST_ENV = true
1
2
  require 'test/unit'
2
3
  require File.dirname(__FILE__) + "/../lib/homeschool"
3
4
 
4
5
  class ModuleTests < Test::Unit::TestCase
6
+
5
7
  def test_add_extension
6
- assert !MyTestClass.methods.include?(:my_class_method)
7
- assert !MyTestClass.new.respond_to?(:my_instance_method)
8
- MyTestClass.add_extension(MyTestModule)
9
- assert MyTestClass.methods.include?('my_class_method')
10
- assert MyTestClass.new.respond_to?(:my_instance_method)
11
- end
12
- end
13
-
14
- class MyTestClass
15
- end
16
-
17
- module MyTestModule
18
- module ClassMethods
19
- def my_class_method
8
+ new_class do |klass|
9
+ klass.add_extension(new_module(:class_methods, :instance_methods))
10
+ assert klass.methods.include?('c_method') && klass.new.respond_to?(:i_method)
20
11
  end
21
- end
22
- module InstanceMethods
23
- def my_instance_method
12
+ new_class do |klass|
13
+ klass.add_extension(new_module(:class_methods))
14
+ assert klass.methods.include?('c_method') && !klass.new.respond_to?(:i_method)
15
+ klass.add_extension(new_module(:instance_methods))
16
+ assert klass.new.respond_to?(:i_method)
24
17
  end
25
18
  end
26
- end
19
+
20
+ private
21
+ def new_class(&block)
22
+ yield Class.new
23
+ end
24
+
25
+ def new_module(*methods)
26
+ Module.new do |m|
27
+ m.module_eval("module ClassMethods; def c_method; end; end") if methods.include?(:class_methods)
28
+ m.module_eval("module InstanceMethods; def i_method; end; end") if methods.include?(:instance_methods)
29
+ end
30
+ end
31
+ end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: homeschool
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.1.34
7
- date: 2007-10-06 00:00:00 -04:00
6
+ version: 0.0.1.38
7
+ date: 2007-10-07 00:00:00 -04:00
8
8
  summary: The homeschool gem
9
9
  require_paths:
10
10
  - lib
@@ -36,6 +36,7 @@ files:
36
36
  - bin/gfight
37
37
  - bin/homeschool
38
38
  - bin/svm
39
+ - test/homeschool_test.rb
39
40
  - test/module_tests.rb
40
41
  - test/the_test.rb
41
42
  - lib/fight.rb