neoid 0.1.1 → 0.1.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/README.md +3 -3
- data/lib/neoid/node.rb +2 -2
- data/lib/neoid/version.rb +1 -1
- data/spec/neoid/node_spec.rb +131 -0
- data/spec/neoid/relationship_spec.rb +102 -0
- metadata +6 -4
- data/spec/neoid/model_additions_spec.rb +0 -222
data/README.md
CHANGED
@@ -15,7 +15,7 @@ Neoid offers querying Neo4j for IDs of objects and then fetch them from your RDB
|
|
15
15
|
|
16
16
|
## Changelog
|
17
17
|
|
18
|
-
[See Changelog](https://github.com/elado/neoid/blob/master/CHANGELOG.md)
|
18
|
+
[See Changelog](https://github.com/elado/neoid/blob/master/CHANGELOG.md). Including some breaking changes (and solutions) from previos versions.
|
19
19
|
|
20
20
|
|
21
21
|
## Installation
|
@@ -23,7 +23,7 @@ Neoid offers querying Neo4j for IDs of objects and then fetch them from your RDB
|
|
23
23
|
Add to your Gemfile and run the `bundle` command to install it.
|
24
24
|
|
25
25
|
```ruby
|
26
|
-
gem 'neoid', '~> 0.1'
|
26
|
+
gem 'neoid', '~> 0.1.1'
|
27
27
|
```
|
28
28
|
|
29
29
|
**Requires Ruby 1.9.2 or later.**
|
@@ -217,7 +217,7 @@ Neoid::Node.from_hash(Neoid.db.get_node_auto_index(Neoid::UNIQUE_ID_KEY, user.ne
|
|
217
217
|
If Subreferences are enabled, you can get the subref node and then get all attached nodes:
|
218
218
|
|
219
219
|
```ruby
|
220
|
-
Neoid.ref_node.outgoing('users_subref').first.outgoing('
|
220
|
+
Neoid.ref_node.outgoing('users_subref').first.outgoing('users').to_a
|
221
221
|
# => this, according to Neography, returns an array of Neography::Node so no conversion is needed
|
222
222
|
```
|
223
223
|
|
data/lib/neoid/node.rb
CHANGED
@@ -106,7 +106,7 @@ module Neoid
|
|
106
106
|
}
|
107
107
|
} else {
|
108
108
|
node = g.addVertex(node_data);
|
109
|
-
if (enable_subrefs) g.addEdge(g.v(subref_id), node,
|
109
|
+
if (enable_subrefs) g.addEdge(g.v(subref_id), node, neo_subref_node_rel_type);
|
110
110
|
|
111
111
|
if (enable_model_index) g.idx(neo_model_index_name).put('ar_id', node.ar_id, node);
|
112
112
|
}
|
@@ -125,7 +125,7 @@ module Neoid
|
|
125
125
|
if Neoid.config.enable_subrefs
|
126
126
|
script_vars.update(
|
127
127
|
subref_id: self.class.neo_subref_node.neo_id,
|
128
|
-
|
128
|
+
neo_subref_node_rel_type: self.class.neo_subref_node_rel_type
|
129
129
|
)
|
130
130
|
end
|
131
131
|
|
data/lib/neoid/version.rb
CHANGED
@@ -0,0 +1,131 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Neoid::Node do
|
4
|
+
context "create graph nodes" do
|
5
|
+
it "should call neo_save after model creation" do
|
6
|
+
user = User.new(name: "Elad Ossadon")
|
7
|
+
user.should_receive(:neo_save)
|
8
|
+
user.save!
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should create a node for user" do
|
12
|
+
user = User.create!(name: "Elad Ossadon", slug: "elado")
|
13
|
+
|
14
|
+
user.neo_node.should_not be_nil
|
15
|
+
|
16
|
+
user.neo_node.ar_id.should == user.id
|
17
|
+
user.neo_node.name.should == user.name
|
18
|
+
user.neo_node.slug.should == user.slug
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should create a neo_node for movie" do
|
22
|
+
movie = Movie.create!(name: "Memento", slug: "memento-1999", year: 1999)
|
23
|
+
|
24
|
+
movie.neo_node.should_not be_nil
|
25
|
+
|
26
|
+
movie.neo_node.ar_id.should == movie.id
|
27
|
+
movie.neo_node.name.should == movie.name
|
28
|
+
movie.neo_node.year.should == movie.year
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "update graph nodes" do
|
33
|
+
it "should call neo_save after model update" do
|
34
|
+
user = User.create!(name: "Elad Ossadon")
|
35
|
+
user.should_receive(:neo_save)
|
36
|
+
user.name = "John Doe"
|
37
|
+
user.save!
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should update a node after model update" do
|
41
|
+
user = User.create!(name: "Elad Ossadon")
|
42
|
+
user.neo_node.name.should == "Elad Ossadon"
|
43
|
+
|
44
|
+
user.name = "John Doe"
|
45
|
+
user.save!
|
46
|
+
|
47
|
+
user.neo_node.name.should == "John Doe"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context "find by id" do
|
52
|
+
it "should find a neo_node for user" do
|
53
|
+
user = User.create!(name: "Elad Ossadon", slug: "elado")
|
54
|
+
|
55
|
+
user.neo_node.should_not be_nil
|
56
|
+
user.neo_find_by_id.should_not be_nil
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context "no auto_index" do
|
61
|
+
it "should not index a node if option :auto_index is set to false" do
|
62
|
+
model = NoAutoIndexNode.new(name: "Hello")
|
63
|
+
model.should_not_receive(:neo_save)
|
64
|
+
model.save!
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
context "subrefs" do
|
69
|
+
it "should connect subrefs to reference node" do
|
70
|
+
old, Neoid.config.enable_subrefs = Neoid.config.enable_subrefs, true
|
71
|
+
|
72
|
+
Neoid.send(:initialize_subrefs)
|
73
|
+
|
74
|
+
begin
|
75
|
+
Neoid.ref_node.rel(:outgoing, :users_subref).should_not be_nil
|
76
|
+
ensure
|
77
|
+
Neoid.config.enable_subrefs = old
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should create a relationship with a subref node" do
|
82
|
+
old, Neoid.config.enable_subrefs = Neoid.config.enable_subrefs, true
|
83
|
+
|
84
|
+
Neoid.send(:initialize_subrefs)
|
85
|
+
|
86
|
+
begin
|
87
|
+
user = User.create!(name: "Elad")
|
88
|
+
user.neo_node.rel(:incoming, :users).should_not be_nil
|
89
|
+
ensure
|
90
|
+
Neoid.config.enable_subrefs = old
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should not create a relationship with a subref node if disabled" do
|
95
|
+
old, Neoid.config.enable_subrefs = Neoid.config.enable_subrefs, false
|
96
|
+
|
97
|
+
begin
|
98
|
+
user = User.create!(name: "Elad")
|
99
|
+
user.neo_node.rel(:incoming, :users_subref).should be_nil
|
100
|
+
ensure
|
101
|
+
Neoid.config.enable_subrefs = old
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
context "per_model_indexes" do
|
107
|
+
it "should create a relationship with a subref node" do
|
108
|
+
old, Neoid.config.enable_per_model_indexes = Neoid.config.enable_per_model_indexes, true
|
109
|
+
|
110
|
+
Neoid.send(:initialize_per_model_indexes)
|
111
|
+
|
112
|
+
begin
|
113
|
+
user = User.create!(name: "Elad")
|
114
|
+
Neoid.db.get_node_index(User.neo_model_index_name, 'ar_id', user.id).should_not be_nil
|
115
|
+
ensure
|
116
|
+
Neoid.config.enable_per_model_indexes = old
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should not create a relationship with a subref node if disabled" do
|
121
|
+
old, Neoid.config.enable_per_model_indexes = Neoid.config.enable_per_model_indexes, false
|
122
|
+
|
123
|
+
begin
|
124
|
+
user = User.create!(name: "Elad")
|
125
|
+
expect { Neoid.db.get_node_index(User.neo_model_index_name, 'ar_id', user.id) }.to raise_error(Neography::NotFoundException)
|
126
|
+
ensure
|
127
|
+
Neoid.config.enable_per_model_indexes = old
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Neoid::Relationship do
|
4
|
+
let(:user) { User.create!(name: "Elad Ossadon", slug: "elado") }
|
5
|
+
let(:movie) { Movie.create!(name: "Memento", slug: "memento-1999", year: 1999) }
|
6
|
+
|
7
|
+
it "should call neo_save after relationship model creation" do
|
8
|
+
Like.any_instance.should_receive(:neo_save)
|
9
|
+
user.like! movie
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should create a neo_relationship for like" do
|
13
|
+
like = user.like! movie
|
14
|
+
like = user.likes.last
|
15
|
+
|
16
|
+
like.neo_find_by_id.should_not be_nil
|
17
|
+
|
18
|
+
like.neo_relationship.should_not be_nil
|
19
|
+
|
20
|
+
like.neo_relationship.start_node.should == user.neo_node
|
21
|
+
like.neo_relationship.end_node.should == movie.neo_node
|
22
|
+
like.neo_relationship.rel_type.should == 'likes'
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should delete a relationship on deleting a record" do
|
26
|
+
user.like! movie
|
27
|
+
like = user.likes.last
|
28
|
+
|
29
|
+
relationship_neo_id = like.neo_relationship.neo_id
|
30
|
+
|
31
|
+
Neography::Relationship.load(relationship_neo_id).should_not be_nil
|
32
|
+
|
33
|
+
user.unlike! movie
|
34
|
+
|
35
|
+
expect { Neography::Relationship.load(relationship_neo_id) }.to raise_error(Neography::RelationshipNotFoundException)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should update neo4j on manual set of a collection" do
|
39
|
+
movies = [
|
40
|
+
Movie.create(name: "Memento"),
|
41
|
+
Movie.create(name: "The Prestige"),
|
42
|
+
Movie.create(name: "The Dark Knight"),
|
43
|
+
Movie.create(name: "Spiderman")
|
44
|
+
]
|
45
|
+
|
46
|
+
user.neo_node.outgoing(:likes).length.should == 0
|
47
|
+
|
48
|
+
expect {
|
49
|
+
user.movies = movies
|
50
|
+
}.to change{ user.neo_node.outgoing(:likes).length }.to(movies.length)
|
51
|
+
|
52
|
+
expect { expect {
|
53
|
+
user.movies -= movies[0..1]
|
54
|
+
}.to change{ user.movies.count }.by(-2)
|
55
|
+
}.to change{ user.neo_node.outgoing(:likes).length }.by(-2)
|
56
|
+
|
57
|
+
expect {
|
58
|
+
user.movies = []
|
59
|
+
}.to change{ user.neo_node.outgoing(:likes).length }.to(0)
|
60
|
+
|
61
|
+
expect {
|
62
|
+
user.movie_ids = movies[0...2].collect(&:id)
|
63
|
+
}.to change{ user.neo_node.outgoing(:likes).length }.to(2)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should update a relationship after relationship model update" do
|
67
|
+
like = user.like! movie
|
68
|
+
|
69
|
+
like.neo_relationship.rate.should be_nil
|
70
|
+
|
71
|
+
like.rate = 10
|
72
|
+
like.save!
|
73
|
+
|
74
|
+
like.neo_relationship.rate.should == 10
|
75
|
+
end
|
76
|
+
|
77
|
+
context "polymorphic relationship" do
|
78
|
+
let(:user) { User.create(name: "Elad Ossadon", slug: "elado") }
|
79
|
+
|
80
|
+
it "should create relationships with polymorphic items" do
|
81
|
+
followed = [
|
82
|
+
User.create(name: "Some One", slug: "someone"),
|
83
|
+
Movie.create(name: "The Prestige"),
|
84
|
+
Movie.create(name: "The Dark Knight")
|
85
|
+
]
|
86
|
+
|
87
|
+
expect {
|
88
|
+
followed.each do |item|
|
89
|
+
user.user_follows.create!(item: item)
|
90
|
+
end
|
91
|
+
}.to change{ user.neo_node.outgoing(:follows).length }.to(followed.length)
|
92
|
+
|
93
|
+
expect {
|
94
|
+
user.user_follows = user.user_follows[0...1]
|
95
|
+
}.to change{ user.neo_node.outgoing(:follows).length }.to(1)
|
96
|
+
|
97
|
+
expect {
|
98
|
+
user.user_follows = []
|
99
|
+
}.to change{ user.neo_node.outgoing(:follows).length }.to(0)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: neoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -139,8 +139,9 @@ files:
|
|
139
139
|
- neoid.gemspec
|
140
140
|
- spec/neoid/batch_spec.rb
|
141
141
|
- spec/neoid/config_spec.rb
|
142
|
-
- spec/neoid/model_additions_spec.rb
|
143
142
|
- spec/neoid/model_config_spec.rb
|
143
|
+
- spec/neoid/node_spec.rb
|
144
|
+
- spec/neoid/relationship_spec.rb
|
144
145
|
- spec/neoid/search_spec.rb
|
145
146
|
- spec/neoid_spec.rb
|
146
147
|
- spec/spec_helper.rb
|
@@ -174,8 +175,9 @@ summary: Neo4j for ActiveRecord
|
|
174
175
|
test_files:
|
175
176
|
- spec/neoid/batch_spec.rb
|
176
177
|
- spec/neoid/config_spec.rb
|
177
|
-
- spec/neoid/model_additions_spec.rb
|
178
178
|
- spec/neoid/model_config_spec.rb
|
179
|
+
- spec/neoid/node_spec.rb
|
180
|
+
- spec/neoid/relationship_spec.rb
|
179
181
|
- spec/neoid/search_spec.rb
|
180
182
|
- spec/neoid_spec.rb
|
181
183
|
- spec/spec_helper.rb
|
@@ -1,222 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Neoid::ModelAdditions do
|
4
|
-
context "nodes" do
|
5
|
-
context "create graph nodes" do
|
6
|
-
it "should call neo_save after model creation" do
|
7
|
-
user = User.new(name: "Elad Ossadon")
|
8
|
-
user.should_receive(:neo_save)
|
9
|
-
user.save!
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should create a node for user" do
|
13
|
-
user = User.create!(name: "Elad Ossadon", slug: "elado")
|
14
|
-
|
15
|
-
user.neo_node.should_not be_nil
|
16
|
-
|
17
|
-
user.neo_node.ar_id.should == user.id
|
18
|
-
user.neo_node.name.should == user.name
|
19
|
-
user.neo_node.slug.should == user.slug
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should create a neo_node for movie" do
|
23
|
-
movie = Movie.create!(name: "Memento", slug: "memento-1999", year: 1999)
|
24
|
-
|
25
|
-
movie.neo_node.should_not be_nil
|
26
|
-
|
27
|
-
movie.neo_node.ar_id.should == movie.id
|
28
|
-
movie.neo_node.name.should == movie.name
|
29
|
-
movie.neo_node.year.should == movie.year
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context "update graph nodes" do
|
34
|
-
it "should call neo_save after model update" do
|
35
|
-
user = User.create!(name: "Elad Ossadon")
|
36
|
-
user.should_receive(:neo_save)
|
37
|
-
user.name = "John Doe"
|
38
|
-
user.save!
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should update a node after model update" do
|
42
|
-
user = User.create!(name: "Elad Ossadon")
|
43
|
-
user.neo_node.name.should == "Elad Ossadon"
|
44
|
-
|
45
|
-
user.name = "John Doe"
|
46
|
-
user.save!
|
47
|
-
|
48
|
-
user.neo_node.name.should == "John Doe"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
context "find by id" do
|
53
|
-
it "should find a neo_node for user" do
|
54
|
-
user = User.create!(name: "Elad Ossadon", slug: "elado")
|
55
|
-
|
56
|
-
user.neo_node.should_not be_nil
|
57
|
-
user.neo_find_by_id.should_not be_nil
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context "no auto_index" do
|
62
|
-
it "should not index a node if option :auto_index is set to false" do
|
63
|
-
model = NoAutoIndexNode.new(name: "Hello")
|
64
|
-
model.should_not_receive(:neo_save)
|
65
|
-
model.save!
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
context "subrefs" do
|
70
|
-
it "should create a relationship with a subref node" do
|
71
|
-
old, Neoid.config.enable_subrefs = Neoid.config.enable_subrefs, true
|
72
|
-
|
73
|
-
Neoid.send(:initialize_subrefs)
|
74
|
-
|
75
|
-
begin
|
76
|
-
user = User.create!(name: "Elad")
|
77
|
-
user.neo_node.rel(:incoming, :users_subref).should_not be_nil
|
78
|
-
ensure
|
79
|
-
Neoid.config.enable_subrefs = old
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
it "should not create a relationship with a subref node if disabled" do
|
84
|
-
old, Neoid.config.enable_subrefs = Neoid.config.enable_subrefs, false
|
85
|
-
|
86
|
-
begin
|
87
|
-
user = User.create!(name: "Elad")
|
88
|
-
user.neo_node.rel(:incoming, :users_subref).should be_nil
|
89
|
-
ensure
|
90
|
-
Neoid.config.enable_subrefs = old
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
context "per_model_indexes" do
|
96
|
-
it "should create a relationship with a subref node" do
|
97
|
-
old, Neoid.config.enable_per_model_indexes = Neoid.config.enable_per_model_indexes, true
|
98
|
-
|
99
|
-
Neoid.send(:initialize_per_model_indexes)
|
100
|
-
|
101
|
-
begin
|
102
|
-
user = User.create!(name: "Elad")
|
103
|
-
Neoid.db.get_node_index(User.neo_model_index_name, 'ar_id', user.id).should_not be_nil
|
104
|
-
ensure
|
105
|
-
Neoid.config.enable_per_model_indexes = old
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
it "should not create a relationship with a subref node if disabled" do
|
110
|
-
old, Neoid.config.enable_per_model_indexes = Neoid.config.enable_per_model_indexes, false
|
111
|
-
|
112
|
-
begin
|
113
|
-
user = User.create!(name: "Elad")
|
114
|
-
expect { Neoid.db.get_node_index(User.neo_model_index_name, 'ar_id', user.id) }.to raise_error(Neography::NotFoundException)
|
115
|
-
ensure
|
116
|
-
Neoid.config.enable_per_model_indexes = old
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
context "relationships" do
|
123
|
-
let(:user) { User.create!(name: "Elad Ossadon", slug: "elado") }
|
124
|
-
let(:movie) { Movie.create!(name: "Memento", slug: "memento-1999", year: 1999) }
|
125
|
-
|
126
|
-
it "should call neo_save after relationship model creation" do
|
127
|
-
Like.any_instance.should_receive(:neo_save)
|
128
|
-
user.like! movie
|
129
|
-
end
|
130
|
-
|
131
|
-
it "should create a neo_relationship for like" do
|
132
|
-
like = user.like! movie
|
133
|
-
like = user.likes.last
|
134
|
-
|
135
|
-
like.neo_find_by_id.should_not be_nil
|
136
|
-
|
137
|
-
like.neo_relationship.should_not be_nil
|
138
|
-
|
139
|
-
like.neo_relationship.start_node.should == user.neo_node
|
140
|
-
like.neo_relationship.end_node.should == movie.neo_node
|
141
|
-
like.neo_relationship.rel_type.should == 'likes'
|
142
|
-
end
|
143
|
-
|
144
|
-
it "should delete a relationship on deleting a record" do
|
145
|
-
user.like! movie
|
146
|
-
like = user.likes.last
|
147
|
-
|
148
|
-
relationship_neo_id = like.neo_relationship.neo_id
|
149
|
-
|
150
|
-
Neography::Relationship.load(relationship_neo_id).should_not be_nil
|
151
|
-
|
152
|
-
user.unlike! movie
|
153
|
-
|
154
|
-
expect { Neography::Relationship.load(relationship_neo_id) }.to raise_error(Neography::RelationshipNotFoundException)
|
155
|
-
end
|
156
|
-
|
157
|
-
it "should update neo4j on manual set of a collection" do
|
158
|
-
movies = [
|
159
|
-
Movie.create(name: "Memento"),
|
160
|
-
Movie.create(name: "The Prestige"),
|
161
|
-
Movie.create(name: "The Dark Knight"),
|
162
|
-
Movie.create(name: "Spiderman")
|
163
|
-
]
|
164
|
-
|
165
|
-
user.neo_node.outgoing(:likes).length.should == 0
|
166
|
-
|
167
|
-
expect {
|
168
|
-
user.movies = movies
|
169
|
-
}.to change{ user.neo_node.outgoing(:likes).length }.to(movies.length)
|
170
|
-
|
171
|
-
expect { expect {
|
172
|
-
user.movies -= movies[0..1]
|
173
|
-
}.to change{ user.movies.count }.by(-2)
|
174
|
-
}.to change{ user.neo_node.outgoing(:likes).length }.by(-2)
|
175
|
-
|
176
|
-
expect {
|
177
|
-
user.movies = []
|
178
|
-
}.to change{ user.neo_node.outgoing(:likes).length }.to(0)
|
179
|
-
|
180
|
-
expect {
|
181
|
-
user.movie_ids = movies[0...2].collect(&:id)
|
182
|
-
}.to change{ user.neo_node.outgoing(:likes).length }.to(2)
|
183
|
-
end
|
184
|
-
|
185
|
-
it "should update a relationship after relationship model update" do
|
186
|
-
like = user.like! movie
|
187
|
-
|
188
|
-
like.neo_relationship.rate.should be_nil
|
189
|
-
|
190
|
-
like.rate = 10
|
191
|
-
like.save!
|
192
|
-
|
193
|
-
like.neo_relationship.rate.should == 10
|
194
|
-
end
|
195
|
-
end
|
196
|
-
|
197
|
-
context "polymorphic relationship" do
|
198
|
-
let(:user) { User.create(name: "Elad Ossadon", slug: "elado") }
|
199
|
-
|
200
|
-
it "should create relationships with polymorphic items" do
|
201
|
-
followed = [
|
202
|
-
User.create(name: "Some One", slug: "someone"),
|
203
|
-
Movie.create(name: "The Prestige"),
|
204
|
-
Movie.create(name: "The Dark Knight")
|
205
|
-
]
|
206
|
-
|
207
|
-
expect {
|
208
|
-
followed.each do |item|
|
209
|
-
user.user_follows.create!(item: item)
|
210
|
-
end
|
211
|
-
}.to change{ user.neo_node.outgoing(:follows).length }.to(followed.length)
|
212
|
-
|
213
|
-
expect {
|
214
|
-
user.user_follows = user.user_follows[0...1]
|
215
|
-
}.to change{ user.neo_node.outgoing(:follows).length }.to(1)
|
216
|
-
|
217
|
-
expect {
|
218
|
-
user.user_follows = []
|
219
|
-
}.to change{ user.neo_node.outgoing(:follows).length }.to(0)
|
220
|
-
end
|
221
|
-
end
|
222
|
-
end
|