related 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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.zrange(key, page_start, page_end)
215
+ @result = Related.redis.zrevrange(key, page_start, page_end)
216
216
  else
217
- @result = Related.redis.zrange(key, 0, -1)
217
+ @result = Related.redis.zrevrange(key, 0, -1)
218
218
  end
219
219
  end
220
220
  end
@@ -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.zrank("#{self.start_node_id}:rel:#{self.label}:out", self.id)
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 = {})
@@ -1,3 +1,3 @@
1
1
  module Related
2
- Version = VERSION = '0.3.0'
2
+ Version = VERSION = '0.3.1'
3
3
  end
@@ -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::Relationship
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 [rel1,rel2,rel3], node1.outgoing(:friends).relationships.per_page(3).page(1).to_a
154
- assert_equal [rel4,rel5], node1.outgoing(:friends).relationships.per_page(3).page(2).to_a
155
- assert_equal [rel2,rel3,rel4], node1.outgoing(:friends).relationships.per_page(3).page(rel1).to_a
156
- assert_equal [rel4,rel5], node1.outgoing(:friends).relationships.per_page(3).page(rel3).to_a
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: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 0
10
- version: 0.3.0
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-07 00:00:00 +02:00
18
+ date: 2011-10-10 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency