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 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