entangled 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8569cc565377ee14c6dac3dcbfb6e29280063196
4
- data.tar.gz: 84f9ce03e7cb9c983daecfcb62669c7f35294444
3
+ metadata.gz: 5c90e25e9bc6ff181667253af48ad1b36235425c
4
+ data.tar.gz: 21dfcd7b48ed82e22056e8528d196962f6c93ae8
5
5
  SHA512:
6
- metadata.gz: 7faf6c2db02a6892c1202f36295a717682103bfaa88308fa2fd1b6ecff2bede7199d10e18db2c92d602424b8e303ae8dfd8b9eb79eef60ba5041a1246db73cc4
7
- data.tar.gz: 571a4107712c5d61aa1f63345dfcf79362e37a5a8b09cc432246d9e4960a441c63e14da66ca1c7a462788dacc7c9358decd8f46b72dec6440f7774a3aa69a78a
6
+ metadata.gz: 54f037193337876ec1bc462903f3a05fd9960ef9cc94391772ba33bf754b53405786000a84928f0673d34a56c910ec855a632aceb13d6cd903fadcc81ed072a5
7
+ data.tar.gz: 68e195848fd01c5349fa81d540dbf23b28adac42fc6210e71c1282f67a6bc2e29dfebbc33408d162edd73bf5c0908f6015a09249d5654f13058f727d20f8dbc8
data/README.md CHANGED
@@ -270,7 +270,6 @@ The gem relies heavily on convention over configuration and currently only works
270
270
  ## Development Priorities
271
271
  The following features are to be implemented next:
272
272
 
273
- - Do not build channels for nil parents
274
273
  - Make prefix of create path `create_message` instead of `create_messages`
275
274
  - Support `belongsTo` in front end
276
275
  - Support `has_one` association in back end and front end
@@ -82,6 +82,11 @@ module Entangled
82
82
  # recursively
83
83
  def channels(tail = '')
84
84
  channels = []
85
+
86
+ # If the record is not persisted, it should not have
87
+ # any channels
88
+ return channels unless persisted?
89
+
85
90
  plural_name = self.class.name.underscore.pluralize
86
91
 
87
92
  # Add collection channel for child only. If the tails
@@ -131,11 +136,13 @@ module Entangled
131
136
  }.to_json
132
137
  end
133
138
 
134
- # Find parent classes from belongs_to associations
139
+ # Find parent classes from belongs_to associations that
140
+ # are not nil
135
141
  def parents
136
142
  self.class.
137
143
  reflect_on_all_associations(:belongs_to).
138
- map{ |a| send(a.name) }
144
+ map{ |a| send(a.name) }.
145
+ reject(&:nil?)
139
146
  end
140
147
  end
141
148
 
@@ -1,3 +1,3 @@
1
1
  module Entangled
2
- VERSION = "1.1.1"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -14,6 +14,16 @@ RSpec.describe 'Channels', type: :model do
14
14
 
15
15
  let!(:child) { Child.create(parent_id: parent.id) }
16
16
 
17
+ # Child without parents
18
+ let!(:orphan) do
19
+ child = Child.new
20
+ child.save(validate: false)
21
+ child
22
+ end
23
+
24
+ # Child that's not persisted
25
+ let!(:fetus) { Child.new }
26
+
17
27
  describe "grandmother's channels" do
18
28
  it 'has two channels' do
19
29
  expect(grandmother.channels.size).to eq 2
@@ -24,7 +34,8 @@ RSpec.describe 'Channels', type: :model do
24
34
  end
25
35
 
26
36
  it 'has a member channel' do
27
- expect(grandmother.channels).to include "/grandmothers/#{grandmother.to_param}"
37
+ channel = "/grandmothers/#{grandmother.to_param}"
38
+ expect(grandmother.channels).to include channel
28
39
  end
29
40
  end
30
41
 
@@ -38,7 +49,8 @@ RSpec.describe 'Channels', type: :model do
38
49
  end
39
50
 
40
51
  it 'has a member channel' do
41
- expect(grandfather.channels).to include "/grandfathers/#{grandfather.to_param}"
52
+ channel = "/grandfathers/#{grandfather.to_param}"
53
+ expect(grandfather.channels).to include channel
42
54
  end
43
55
  end
44
56
 
@@ -56,19 +68,25 @@ RSpec.describe 'Channels', type: :model do
56
68
  end
57
69
 
58
70
  it 'has a collection channel nested under its grandmother' do
59
- expect(parent.channels).to include "/grandmothers/#{grandmother.to_param}/parents"
71
+ channel = "/grandmothers/#{grandmother.to_param}/parents"
72
+ expect(parent.channels).to include channel
60
73
  end
61
74
 
62
75
  it 'has a member channel nested under its grandmother' do
63
- expect(parent.channels).to include "/grandmothers/#{grandmother.to_param}/parents/#{parent.to_param}"
76
+ channel = "/grandmothers/#{grandmother.to_param}"\
77
+ "/parents/#{parent.to_param}"
78
+ expect(parent.channels).to include channel
64
79
  end
65
80
 
66
81
  it 'has a collection channel nested under its grandfather' do
67
- expect(parent.channels).to include "/grandfathers/#{grandfather.to_param}/parents"
82
+ channel = "/grandfathers/#{grandfather.to_param}/parents"
83
+ expect(parent.channels).to include channel
68
84
  end
69
85
 
70
86
  it 'has a member channel nested under its grandfather' do
71
- expect(parent.channels).to include "/grandfathers/#{grandfather.to_param}/parents/#{parent.to_param}"
87
+ channel = "/grandfathers/#{grandfather.to_param}"\
88
+ "/parents/#{parent.to_param}"
89
+ expect(parent.channels).to include channel
72
90
  end
73
91
  end
74
92
 
@@ -90,23 +108,44 @@ RSpec.describe 'Channels', type: :model do
90
108
  end
91
109
 
92
110
  it 'has a member channel nested under its parent' do
93
- expect(child.channels).to include "/parents/#{parent.to_param}/children/#{child.to_param}"
111
+ channel = "/parents/#{parent.to_param}/children/#{child.to_param}"
112
+ expect(child.channels).to include channel
94
113
  end
95
114
 
96
115
  it 'has a collection channel nested under its parent and grandmother' do
97
- expect(child.channels).to include "/grandmothers/#{grandmother.to_param}/parents/#{parent.to_param}/children"
116
+ channel = "/grandmothers/#{grandmother.to_param}"\
117
+ "/parents/#{parent.to_param}/children"
118
+ expect(child.channels).to include channel
98
119
  end
99
120
 
100
121
  it 'has a member channel nested under its parent and grandmother' do
101
- expect(child.channels).to include "/grandmothers/#{grandmother.to_param}/parents/#{parent.to_param}/children/#{child.to_param}"
122
+ channel = "/grandmothers/#{grandmother.to_param}"\
123
+ "/parents/#{parent.to_param}/children/#{child.to_param}"
124
+ expect(child.channels).to include channel
102
125
  end
103
126
 
104
127
  it 'has a collection channel nested under its parent and grandfather' do
105
- expect(child.channels).to include "/grandfathers/#{grandfather.to_param}/parents/#{parent.to_param}/children"
128
+ channel = "/grandfathers/#{grandfather.to_param}"\
129
+ "/parents/#{parent.to_param}/children"
130
+ expect(child.channels).to include channel
106
131
  end
107
132
 
108
133
  it 'has a member channel nested under its parent and grandfather' do
109
- expect(child.channels).to include "/grandfathers/#{grandfather.to_param}/parents/#{parent.to_param}/children/#{child.to_param}"
134
+ channel = "/grandfathers/#{grandfather.to_param}"\
135
+ "/parents/#{parent.to_param}/children/#{child.to_param}"
136
+ expect(child.channels).to include channel
137
+ end
138
+ end
139
+
140
+ describe "orphan's channels" do
141
+ it 'does not have any parent channels since it has no parent' do
142
+ expect(orphan.channels.size).to eq 2
143
+ end
144
+ end
145
+
146
+ describe "fetus's channel" do
147
+ it 'does not have any channels since it is not persisted' do
148
+ expect(fetus.channels).to be_empty
110
149
  end
111
150
  end
112
151
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: entangled
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dennis Charles Hackethal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-07 00:00:00.000000000 Z
11
+ date: 2015-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -285,7 +285,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
285
285
  version: '0'
286
286
  requirements: []
287
287
  rubyforge_project:
288
- rubygems_version: 2.4.6
288
+ rubygems_version: 2.2.2
289
289
  signing_key:
290
290
  specification_version: 4
291
291
  summary: Makes Rails real time through websockets.