ork 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +146 -18
- data/lib/ork/embedded.rb +48 -0
- data/lib/ork/errors.rb +8 -0
- data/lib/ork/model/associations.rb +114 -13
- data/lib/ork/model/class_methods.rb +106 -20
- data/lib/ork/model/document.rb +155 -0
- data/lib/ork/model/finders.rb +45 -13
- data/lib/ork/model/index.rb +20 -0
- data/lib/ork/model.rb +33 -114
- data/lib/ork/utils.rb +3 -2
- data/lib/ork.rb +3 -1
- data/ork.gemspec +2 -2
- data/rakefile +3 -26
- data/test/helper.rb +21 -31
- metadata +7 -13
- data/test/finders.rb +0 -43
- data/test/model.rb +0 -139
- data/test/reference.rb +0 -73
- data/test/test_riak_server.toml +0 -15
- data/test/test_riak_server.toml.example +0 -15
data/test/model.rb
DELETED
@@ -1,139 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
require_relative 'helper'
|
3
|
-
|
4
|
-
class Event
|
5
|
-
include Ork::Model
|
6
|
-
|
7
|
-
attribute :name
|
8
|
-
attribute :location
|
9
|
-
|
10
|
-
unique :name
|
11
|
-
index :location
|
12
|
-
end
|
13
|
-
|
14
|
-
Protest.describe 'Ork::Model' do
|
15
|
-
context 'Definition' do
|
16
|
-
test 'have an attributes list' do
|
17
|
-
assert_equal [:name, :location], Event.attributes
|
18
|
-
end
|
19
|
-
|
20
|
-
test 'have a uniques list' do
|
21
|
-
assert_equal [:name], Event.uniques
|
22
|
-
end
|
23
|
-
|
24
|
-
test 'have an indices list' do
|
25
|
-
assert_equal [:location], Event.indices
|
26
|
-
end
|
27
|
-
|
28
|
-
test 'model owns a bucket name by default' do
|
29
|
-
assert_equal 'event', Event.bucket_name
|
30
|
-
end
|
31
|
-
|
32
|
-
test 'generate accessors for attributes' do
|
33
|
-
event = Event.new
|
34
|
-
|
35
|
-
assert event.respond_to? :name
|
36
|
-
assert event.respond_to? :name=
|
37
|
-
assert event.respond_to? :location
|
38
|
-
assert event.respond_to? :location=
|
39
|
-
end
|
40
|
-
|
41
|
-
test 'cast to different types' do
|
42
|
-
pending 'Define how to cast objects'
|
43
|
-
end
|
44
|
-
|
45
|
-
test 'model can change bucket name' do
|
46
|
-
Event.bucket_name= 'other_bucket_for_event'
|
47
|
-
assert_equal 'other_bucket_for_event', Event.bucket_name
|
48
|
-
end
|
49
|
-
|
50
|
-
test 'there is a Riak::Bucket corresponding to the model' do
|
51
|
-
assert_equal Riak::Bucket, Event.bucket.class
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
context 'Instance' do
|
56
|
-
setup do
|
57
|
-
@event = Event.new(name: 'Ruby')
|
58
|
-
end
|
59
|
-
|
60
|
-
test 'determine if it is a new instance or it was saved' do
|
61
|
-
assert @event.new?
|
62
|
-
@event.save
|
63
|
-
assert !@event.new?
|
64
|
-
end
|
65
|
-
|
66
|
-
test 'assign attributes from the hash' do
|
67
|
-
assert_equal 'Ruby', @event.name
|
68
|
-
end
|
69
|
-
|
70
|
-
test 'inspect a new object shows the class, attributes with id nil' do
|
71
|
-
assert_equal '#<Event:nil {:name=>"Ruby"}>', @event.inspect
|
72
|
-
end
|
73
|
-
|
74
|
-
test 'inspect a saved object shows the class, attributes with id nil' do
|
75
|
-
@event.save
|
76
|
-
assert_equal '#<Event:' + @event.id + ' {:name=>"Ruby"}>', @event.inspect
|
77
|
-
end
|
78
|
-
|
79
|
-
test 'assign an ID and save the object' do
|
80
|
-
event = Event.create(name: 'Ruby')
|
81
|
-
|
82
|
-
assert !event.new?
|
83
|
-
assert !event.id.nil?
|
84
|
-
end
|
85
|
-
|
86
|
-
test 'update and save the attributes in UTF8' do
|
87
|
-
@event.update(name: '32° Kisei-sen')
|
88
|
-
assert_equal '32° Kisei-sen', Event[@event.id].name
|
89
|
-
end
|
90
|
-
|
91
|
-
test 'update_attributes changes attributes but does not save the object' do
|
92
|
-
assert @event.new?
|
93
|
-
assert_equal 'Ruby', @event.name
|
94
|
-
|
95
|
-
@event.update_attributes(name: 'Emerald', location: 4)
|
96
|
-
|
97
|
-
assert @event.new?
|
98
|
-
assert_equal 'Emerald', @event.name
|
99
|
-
assert_equal 4, @event.location
|
100
|
-
end
|
101
|
-
|
102
|
-
context 'Deletion' do
|
103
|
-
test 'freeze the object' do
|
104
|
-
assert !@event.frozen?
|
105
|
-
@event.delete
|
106
|
-
assert @event.frozen?
|
107
|
-
end
|
108
|
-
|
109
|
-
test 'delete the object from the bucket' do
|
110
|
-
@event.save
|
111
|
-
assert Event.bucket.exist?(@event.id)
|
112
|
-
@event.delete
|
113
|
-
assert !Event.bucket.exist?(@event.id)
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
context "Equality" do
|
119
|
-
setup do
|
120
|
-
@event = Event.new(name: 'Ruby')
|
121
|
-
@other = Event.new(name: 'Emerald')
|
122
|
-
end
|
123
|
-
|
124
|
-
test 'different types' do
|
125
|
-
assert @event != 'Not an event'
|
126
|
-
end
|
127
|
-
|
128
|
-
test 'saved instances with different ids' do
|
129
|
-
@event.save
|
130
|
-
@other.save
|
131
|
-
|
132
|
-
assert @event != @other
|
133
|
-
end
|
134
|
-
|
135
|
-
test 'unsaved intances' do
|
136
|
-
pending 'Define how equality will be'
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
data/test/reference.rb
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
|
3
|
-
class Post
|
4
|
-
include Ork::Model
|
5
|
-
attribute :name
|
6
|
-
end
|
7
|
-
|
8
|
-
class Comment
|
9
|
-
include Ork::Model
|
10
|
-
attribute :text
|
11
|
-
|
12
|
-
reference :post, :Post
|
13
|
-
reference :weird_post, :Post
|
14
|
-
end
|
15
|
-
|
16
|
-
Protest.describe 'reference' do
|
17
|
-
teardown do
|
18
|
-
flush_db!
|
19
|
-
end
|
20
|
-
|
21
|
-
should 'return nil when there is no reference object' do
|
22
|
-
comment = Comment.new
|
23
|
-
|
24
|
-
assert comment.post.nil?
|
25
|
-
end
|
26
|
-
|
27
|
-
should 'raise an exception assigning an object of the wrong type' do
|
28
|
-
pending 'Not sure to support this'
|
29
|
-
assert_raise(Error) do
|
30
|
-
Comment.new post: 'Not a post'
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
should 'return the object referenced' do
|
35
|
-
post = Post.create name: 'New'
|
36
|
-
comment = Comment.new post: post
|
37
|
-
|
38
|
-
assert_equal post, comment.post
|
39
|
-
assert_equal post.id, comment.post_id
|
40
|
-
end
|
41
|
-
|
42
|
-
test 'object reference with not default key' do
|
43
|
-
post = Post.create name: 'New'
|
44
|
-
comment = Comment.new weird_post: post
|
45
|
-
|
46
|
-
assert_equal post, comment.weird_post
|
47
|
-
assert_equal post.id, comment.weird_post_id
|
48
|
-
end
|
49
|
-
|
50
|
-
should 'update reference to an object given the id or object' do
|
51
|
-
post = Post.create name: 'New'
|
52
|
-
comment = Comment.new
|
53
|
-
|
54
|
-
assert comment.post.nil?
|
55
|
-
assert comment.post_id.nil?
|
56
|
-
|
57
|
-
comment.post = post
|
58
|
-
|
59
|
-
assert_equal post, comment.post
|
60
|
-
assert_equal post.id, comment.post_id
|
61
|
-
|
62
|
-
post = Post.create name: 'Other'
|
63
|
-
comment.post_id = post.id
|
64
|
-
|
65
|
-
assert_equal post, comment.post
|
66
|
-
assert_equal post.id, comment.post_id
|
67
|
-
end
|
68
|
-
|
69
|
-
context 'Deletion' do
|
70
|
-
# Discuss if we want cascade all deletetion and that sort of things
|
71
|
-
end
|
72
|
-
|
73
|
-
end
|
data/test/test_riak_server.toml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# This is where the test server node will be generated. Something on
|
2
|
-
# /tmp is usually ok.
|
3
|
-
root = "/tmp/.ork_node"
|
4
|
-
min_port = 15000
|
5
|
-
|
6
|
-
# This is where Riak is installed on your system, that is, the path to
|
7
|
-
# the 'riak' and 'riak-admin' scripts. I use a self-built node, but
|
8
|
-
# here's where it will generally be on various platforms:
|
9
|
-
#
|
10
|
-
# Linux: /usr/sbin
|
11
|
-
# Solaris/OpenSolaris: /opt/riak/bin
|
12
|
-
# Mac OS/X (Homebrew): /usr/local/bin
|
13
|
-
# Source/Self built: /path/to/your/install/rel/riak/bin
|
14
|
-
#
|
15
|
-
source = "/usr/local/bin"
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# This is where the test server node will be generated. Something on
|
2
|
-
# /tmp is usually ok.
|
3
|
-
root = "/tmp/.ork_node"
|
4
|
-
min_port = 15000
|
5
|
-
|
6
|
-
# This is where Riak is installed on your system, that is, the path to
|
7
|
-
# the 'riak' and 'riak-admin' scripts. I use a self-built node, but
|
8
|
-
# here's where it will generally be on various platforms:
|
9
|
-
#
|
10
|
-
# Linux: /usr/sbin
|
11
|
-
# Solaris/OpenSolaris: /opt/riak/bin
|
12
|
-
# Mac OS/X (Homebrew): /usr/local/bin
|
13
|
-
# Source/Self built: /path/to/your/install/rel/riak/bin
|
14
|
-
#
|
15
|
-
source = "/usr/local/bin"
|