hickey 0.0.2
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/CHANGES +1 -0
- data/LICENSE.TXT +203 -0
- data/LICENSE.txt +203 -0
- data/README.rdoc +106 -0
- data/Rakefile +129 -0
- data/TODO +53 -0
- data/hickey.gemspec +27 -0
- data/lib/hickey.rb +24 -0
- data/lib/hickey/acceptor.rb +25 -0
- data/lib/hickey/domain_detector.rb +17 -0
- data/lib/hickey/domain_detector/actions.rb +38 -0
- data/lib/hickey/domain_detector/associations.rb +80 -0
- data/lib/hickey/domain_detector/base.rb +55 -0
- data/lib/hickey/domain_detector/configurable.rb +38 -0
- data/lib/hickey/domain_detector/scopes.rb +30 -0
- data/test/belongs_to_association_test.rb +17 -0
- data/test/database_config.rb +20 -0
- data/test/enable_callbacks_test.rb +144 -0
- data/test/find_or_create_actions_test.rb +62 -0
- data/test/has_and_belongs_to_many_association_test.rb +10 -0
- data/test/has_many_association_test.rb +71 -0
- data/test/has_one_association_test.rb +53 -0
- data/test/model_association_test.rb +21 -0
- data/test/models/address.rb +5 -0
- data/test/models/author.rb +10 -0
- data/test/models/country.rb +4 -0
- data/test/models/project.rb +9 -0
- data/test/models/projects_member.rb +5 -0
- data/test/models/property_definition.rb +21 -0
- data/test/models/simple.rb +26 -0
- data/test/models/tag.rb +24 -0
- data/test/models/topic.rb +19 -0
- data/test/models/user.rb +9 -0
- data/test/models/writer.rb +9 -0
- data/test/schema.rb +88 -0
- data/test/single_model_test.rb +130 -0
- data/test/test_helper.rb +75 -0
- data/test/with_scope_test.rb +66 -0
- metadata +98 -0
@@ -0,0 +1,66 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__)) + '/test_helper'
|
2
|
+
|
3
|
+
class WithScopeTest < Test::Unit::TestCase
|
4
|
+
def test_should_be_able_get_associated_scope_object_in_before_save
|
5
|
+
Hickey.setup(:card => {:callbacks => :all})
|
6
|
+
Hickey.setup(:tag => {:callbacks => :all})
|
7
|
+
Hickey.dump :project => {
|
8
|
+
:identifier => 'hickey', :cards => [{:name => 'first card', :taggings => [{:tag => {:name => 'first_tag'}}]}]
|
9
|
+
}
|
10
|
+
ensure
|
11
|
+
Hickey.setup.clear
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_should_auto_associate_models_even_they_are_not_related_directly
|
15
|
+
Hickey.dump :project => {
|
16
|
+
:identifier => 'hickey', :cards => [
|
17
|
+
{
|
18
|
+
:name => 'first card',
|
19
|
+
:taggings => [{:tag => {:name => 'first_tag'}}],
|
20
|
+
}
|
21
|
+
]
|
22
|
+
}
|
23
|
+
assert_equal ['first_tag'], project.tags.collect(&:name)
|
24
|
+
assert_equal ['first card'], project.cards.collect(&:name)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_should_work_with_find_or_create_actions
|
28
|
+
Hickey.dump :project => {
|
29
|
+
:identifier => 'hickey', :cards => [
|
30
|
+
{
|
31
|
+
:name => 'first card',
|
32
|
+
:taggings => [{:tag => {:find_or_create => {:name => 'first_tag'}}}],
|
33
|
+
},
|
34
|
+
{
|
35
|
+
:name => 'dont make me think',
|
36
|
+
:taggings => [{:tag => {:find_or_create => {:name => 'first_tag'}}}],
|
37
|
+
}
|
38
|
+
]
|
39
|
+
}
|
40
|
+
assert_equal ['first_tag'], project.tags.collect(&:name)
|
41
|
+
assert_equal ['first card', 'dont make me think'].sort, project.cards.collect(&:name).sort
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_should_not_effect_object_out_of_model_scope
|
45
|
+
Hickey.dump :writer => {:login => 'writer', :disscutions => [{:speaker => {:login => 'xli'}}, {:speaker => {:login => 'oo'}}]}
|
46
|
+
assert_equal 2, writer.disscutions.collect(&:id).uniq.size
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_should_ignore_keys_that_dont_belong_to_model_in_the_scopes
|
50
|
+
project = Hickey.dump :project => {
|
51
|
+
:identifier => 'hickey', :cards => [
|
52
|
+
{
|
53
|
+
:name => 'first card',
|
54
|
+
:taggings => [{:tag => {:find_or_create => {:name => 'first_tag'}}}],
|
55
|
+
},
|
56
|
+
{
|
57
|
+
:name => 'second card',
|
58
|
+
:taggings => [{:tag => {:find_or_create => {:name => 'first_tag'}}}],
|
59
|
+
}
|
60
|
+
]
|
61
|
+
}
|
62
|
+
tag = project.cards.first.taggings.first.tag
|
63
|
+
assert_equal 'first_tag', tag.read_attribute('name')
|
64
|
+
assert_nil tag.read_attribute('card_id')
|
65
|
+
end
|
66
|
+
end
|
metadata
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: hickey
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Li Xiao
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-12-17 00:00:00 +08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description:
|
17
|
+
email: iam@li-xiao.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README.rdoc
|
24
|
+
- LICENSE.txt
|
25
|
+
- TODO
|
26
|
+
- CHANGES
|
27
|
+
files:
|
28
|
+
- lib/hickey/acceptor.rb
|
29
|
+
- lib/hickey/domain_detector/actions.rb
|
30
|
+
- lib/hickey/domain_detector/associations.rb
|
31
|
+
- lib/hickey/domain_detector/base.rb
|
32
|
+
- lib/hickey/domain_detector/configurable.rb
|
33
|
+
- lib/hickey/domain_detector/scopes.rb
|
34
|
+
- lib/hickey/domain_detector.rb
|
35
|
+
- lib/hickey.rb
|
36
|
+
- CHANGES
|
37
|
+
- hickey.gemspec
|
38
|
+
- lib
|
39
|
+
- LICENSE.TXT
|
40
|
+
- Rakefile
|
41
|
+
- README.rdoc
|
42
|
+
- TODO
|
43
|
+
- LICENSE.txt
|
44
|
+
has_rdoc: true
|
45
|
+
homepage: http://github.com/xli/hickey/tree/master
|
46
|
+
post_install_message:
|
47
|
+
rdoc_options:
|
48
|
+
- --line-numbers
|
49
|
+
- --inline-source
|
50
|
+
- --main
|
51
|
+
- README.rdoc
|
52
|
+
- --title
|
53
|
+
- Hickey
|
54
|
+
require_paths:
|
55
|
+
- lib
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: "0"
|
61
|
+
version:
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: "0"
|
67
|
+
version:
|
68
|
+
requirements: []
|
69
|
+
|
70
|
+
rubyforge_project: hickey
|
71
|
+
rubygems_version: 1.2.0
|
72
|
+
signing_key:
|
73
|
+
specification_version: 2
|
74
|
+
summary: Hickey provides a simple way of preparing test data inside test for Rails project.
|
75
|
+
test_files:
|
76
|
+
- test/belongs_to_association_test.rb
|
77
|
+
- test/database_config.rb
|
78
|
+
- test/enable_callbacks_test.rb
|
79
|
+
- test/find_or_create_actions_test.rb
|
80
|
+
- test/has_and_belongs_to_many_association_test.rb
|
81
|
+
- test/has_many_association_test.rb
|
82
|
+
- test/has_one_association_test.rb
|
83
|
+
- test/model_association_test.rb
|
84
|
+
- test/models/address.rb
|
85
|
+
- test/models/author.rb
|
86
|
+
- test/models/country.rb
|
87
|
+
- test/models/project.rb
|
88
|
+
- test/models/projects_member.rb
|
89
|
+
- test/models/property_definition.rb
|
90
|
+
- test/models/simple.rb
|
91
|
+
- test/models/tag.rb
|
92
|
+
- test/models/topic.rb
|
93
|
+
- test/models/user.rb
|
94
|
+
- test/models/writer.rb
|
95
|
+
- test/schema.rb
|
96
|
+
- test/single_model_test.rb
|
97
|
+
- test/test_helper.rb
|
98
|
+
- test/with_scope_test.rb
|