related 0.3.0 → 0.3.1
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/related/node.rb +2 -2
- data/lib/related/relationship.rb +3 -1
- data/lib/related/version.rb +1 -1
- data/test/active_model_test.rb +1 -1
- data/test/related_test.rb +22 -9
- metadata +4 -4
data/lib/related/node.rb
CHANGED
|
@@ -212,9 +212,9 @@ module Related
|
|
|
212
212
|
end
|
|
213
213
|
else
|
|
214
214
|
if @limit
|
|
215
|
-
@result = Related.redis.
|
|
215
|
+
@result = Related.redis.zrevrange(key, page_start, page_end)
|
|
216
216
|
else
|
|
217
|
-
@result = Related.redis.
|
|
217
|
+
@result = Related.redis.zrevrange(key, 0, -1)
|
|
218
218
|
end
|
|
219
219
|
end
|
|
220
220
|
end
|
data/lib/related/relationship.rb
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
module Related
|
|
2
2
|
class Relationship < Entity
|
|
3
3
|
|
|
4
|
+
validates_presence_of :label, :start_node_id, :end_node_id
|
|
5
|
+
|
|
4
6
|
def initialize(*attributes)
|
|
5
7
|
if attributes.first.is_a?(String)
|
|
6
8
|
@id = attributes.first
|
|
@@ -17,7 +19,7 @@ module Related
|
|
|
17
19
|
end
|
|
18
20
|
|
|
19
21
|
def rank
|
|
20
|
-
Related.redis.
|
|
22
|
+
Related.redis.zrevrank("#{self.start_node_id}:rel:#{self.label}:out", self.id)
|
|
21
23
|
end
|
|
22
24
|
|
|
23
25
|
def self.create(label, node1, node2, attributes = {})
|
data/lib/related/version.rb
CHANGED
data/test/active_model_test.rb
CHANGED
|
@@ -3,7 +3,7 @@ require File.expand_path('test/test_helper')
|
|
|
3
3
|
class ActiveModelTest < ActiveModel::TestCase
|
|
4
4
|
include ActiveModel::Lint::Tests
|
|
5
5
|
|
|
6
|
-
class Like < Related::
|
|
6
|
+
class Like < Related::Entity
|
|
7
7
|
validates_numericality_of :how_much, :allow_nil => true
|
|
8
8
|
|
|
9
9
|
before_save :before_save_callback
|
data/test/related_test.rb
CHANGED
|
@@ -141,19 +141,20 @@ class RelatedTest < Test::Unit::TestCase
|
|
|
141
141
|
node3 = Related::Node.create
|
|
142
142
|
node4 = Related::Node.create
|
|
143
143
|
node5 = Related::Node.create
|
|
144
|
-
rel1 = Related::Relationship.create(:friends, node1, node2)
|
|
144
|
+
rel1 = Related::Relationship.create(:friends, node1, node2, :name => 'rel1')
|
|
145
145
|
sleep(1)
|
|
146
|
-
rel2 = Related::Relationship.create(:friends, node1, node3)
|
|
146
|
+
rel2 = Related::Relationship.create(:friends, node1, node3, :name => 'rel2')
|
|
147
147
|
sleep(1)
|
|
148
|
-
rel3 = Related::Relationship.create(:friends, node1, node4)
|
|
148
|
+
rel3 = Related::Relationship.create(:friends, node1, node4, :name => 'rel3')
|
|
149
149
|
sleep(1)
|
|
150
|
-
rel4 = Related::Relationship.create(:friends, node1, node5)
|
|
150
|
+
rel4 = Related::Relationship.create(:friends, node1, node5, :name => 'rel4')
|
|
151
151
|
sleep(1)
|
|
152
|
-
rel5 = Related::Relationship.create(:friends, node1, node5)
|
|
153
|
-
assert_equal [
|
|
154
|
-
assert_equal [
|
|
155
|
-
assert_equal [
|
|
156
|
-
assert_equal [rel4,
|
|
152
|
+
rel5 = Related::Relationship.create(:friends, node1, node5, :name => 'rel5')
|
|
153
|
+
assert_equal [rel5,rel4,rel3], node1.outgoing(:friends).relationships.per_page(3).page(1).to_a
|
|
154
|
+
assert_equal [rel2,rel1], node1.outgoing(:friends).relationships.per_page(3).page(2).to_a
|
|
155
|
+
assert_equal [rel5,rel4,rel3], node1.outgoing(:friends).relationships.per_page(3).page(nil).to_a
|
|
156
|
+
assert_equal [rel4,rel3,rel2], node1.outgoing(:friends).relationships.per_page(3).page(rel5).to_a
|
|
157
|
+
assert_equal [rel2,rel1], node1.outgoing(:friends).relationships.per_page(3).page(rel3).to_a
|
|
157
158
|
end
|
|
158
159
|
|
|
159
160
|
def test_can_count_the_number_of_related_nodes
|
|
@@ -272,4 +273,16 @@ class RelatedTest < Test::Unit::TestCase
|
|
|
272
273
|
assert_match /^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ$/, node.updated_at
|
|
273
274
|
end
|
|
274
275
|
|
|
276
|
+
def test_should_require_a_relationship_to_have_a_label_start_node_and_end_node
|
|
277
|
+
assert_raises Related::ValidationsFailed do
|
|
278
|
+
Related::Relationship.create(nil, 'x', 'y')
|
|
279
|
+
end
|
|
280
|
+
assert_raises Related::ValidationsFailed do
|
|
281
|
+
Related::Relationship.create(:friend, nil, 'y')
|
|
282
|
+
end
|
|
283
|
+
assert_raises Related::ValidationsFailed do
|
|
284
|
+
Related::Relationship.create(:friend, 'x', nil)
|
|
285
|
+
end
|
|
286
|
+
end
|
|
287
|
+
|
|
275
288
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: related
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 17
|
|
5
5
|
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 3
|
|
9
|
-
-
|
|
10
|
-
version: 0.3.
|
|
9
|
+
- 1
|
|
10
|
+
version: 0.3.1
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Niklas Holmgren
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2011-10-
|
|
18
|
+
date: 2011-10-10 00:00:00 +02:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|