live_record 0.2.4 → 0.2.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cd7810b1566eda128b77c0d451fedf5056c006b1
4
- data.tar.gz: ac200f664f84fb987e563a6dbbed7b186fdcf5f1
3
+ metadata.gz: 941011b728166d7c1dc7853bcf5f1fc0b02d77da
4
+ data.tar.gz: ae38164516a9cb42fe726350ca1e816d34f727b7
5
5
  SHA512:
6
- metadata.gz: 181ef9c74581d40fb9e4cd9f9992f25dc798370467fc93c67b6934e305c02a463390fc505210b04dc68c1a2efd2a92f32e5586d828978af897ae1eaf958ac0f5
7
- data.tar.gz: d6c549d59bad9e84abc80d734abc39c093dd62fd673886abe8c98953ade0c5d66d327c8dc75aecd9b371573bb3f81ae0d1321232d86176f14912678d8e5fbc32
6
+ metadata.gz: 65e3f6082c3b48bd2ce8f96d2c05eeefcbba020dba309229baae94926a8c5df916a3d59e9551fb32dc0ce9a557952fa2303f9363bb6c6b058411d5a2130950e5
7
+ data.tar.gz: 456403469aa4f8b2c53e374e2cd621a13f9b45a20b1f317381e6d98d2e7c83cb1e0b6c9374215500ab7f62a05a80779dcdbafdfb27a75c7837db5f75a8ada012
data/README.md CHANGED
@@ -117,7 +117,7 @@
117
117
  1. Add the following to your `Gemfile`:
118
118
 
119
119
  ```ruby
120
- gem 'live_record', '~> 0.2.4'
120
+ gem 'live_record', '~> 0.2.5'
121
121
  ```
122
122
 
123
123
  2. Run:
@@ -284,7 +284,7 @@
284
284
  * `"forbidden"` - Current User is not authorized to sync record changes. Happens when Model's `live_record_whitelisted_attributes` method returns empty array.
285
285
  * `"bad_request"` - Happens when `LiveRecord.Model.create({modelName: 'INCORRECTMODELNAME'})`
286
286
 
287
- 8. Load the records into the JS Model-store through JSON REST (i.e.):
287
+ 8. Load the records into the JS Model-store:
288
288
 
289
289
  * Any record created/loaded in the JS-store is automatically synced whenever it is updated from the backend
290
290
  * When reconnected after losing connection, the records in the store are synced automatically.
@@ -610,6 +610,8 @@
610
610
  * MIT
611
611
 
612
612
  ## Changelog
613
+ * 0.2.5
614
+ * fixed a major bug where same-model record instances were all sharing the same `@_callbacks` object, which then effectively calling also callbacks not specifically defined just for a specific record instance.
613
615
  * 0.2.4
614
616
  * you can now pass in `{reload: true}` to `subscribe()` like the folowing:
615
617
  * `MODEL.subscribe({reload: true})` to immediately load all records from backend, and not just the new ones
@@ -11,6 +11,19 @@ LiveRecord.Model.create = (config) ->
11
11
  if Model.prototype[attribute_key] == undefined
12
12
  Model.prototype[attribute_key] = ->
13
13
  @attributes[attribute_key]
14
+
15
+ @_callbacks = {
16
+ 'on:connect': [],
17
+ 'on:disconnect': [],
18
+ 'on:responseError': [],
19
+ 'before:create': [],
20
+ 'after:create': [],
21
+ 'before:update': [],
22
+ 'after:update': [],
23
+ 'before:destroy': [],
24
+ 'after:destroy': []
25
+ }
26
+
14
27
  this
15
28
 
16
29
  Model.modelName = config.modelName
@@ -248,18 +261,6 @@ LiveRecord.Model.create = (config) ->
248
261
  'after:destroy': []
249
262
  }
250
263
 
251
- Model.prototype._callbacks = {
252
- 'on:connect': [],
253
- 'on:disconnect': [],
254
- 'on:responseError': [],
255
- 'before:create': [],
256
- 'after:create': [],
257
- 'before:update': [],
258
- 'after:update': [],
259
- 'before:destroy': [],
260
- 'after:destroy': []
261
- }
262
-
263
264
  # adding new callbackd to the list
264
265
  Model.prototype.addCallback = Model.addCallback = (callbackKey, callbackFunction) ->
265
266
  index = @_callbacks[callbackKey].indexOf(callbackFunction)
@@ -1,3 +1,3 @@
1
1
  module LiveRecord
2
- VERSION = '0.2.4'.freeze
2
+ VERSION = '0.2.5'.freeze
3
3
  end
@@ -215,5 +215,22 @@ RSpec.feature 'LiveRecord Syncing', type: :feature do
215
215
  wait before: -> { evaluate_script("LiveRecord.Model.all.Post.all[#{post_created_before_disconnection.id}] == undefined") }, becomes: -> (value) { value == false }
216
216
  expect(evaluate_script("LiveRecord.Model.all.Post.all[#{post_created_before_disconnection.id}] == undefined")).to be true
217
217
  end
218
+
219
+ scenario 'JS-Client should not have shared callbacks for those callbacks defined only for a particular post record', js: true do
220
+ visit '/posts'
221
+
222
+ wait before: -> { evaluate_script("Object.keys( LiveRecord.Model.all.Post.all ).length") }, becomes: -> (value) { value == posts.count }, duration: 10.seconds
223
+ expect(evaluate_script("Object.keys( LiveRecord.Model.all.Post.all ).length")).to be posts.count
224
+
225
+ execute_script(
226
+ <<-eos
227
+ var post1 = LiveRecord.Model.all.Post.all[#{post1.id}];
228
+ var someCallbackFunction = function() {};
229
+ post1.addCallback('after:create', someCallbackFunction);
230
+ eos
231
+ )
232
+
233
+ expect(evaluate_script("LiveRecord.Model.all.Post.all[#{post2.id}]._callbacks['after:create'].length")).to eq 0
234
+ end
218
235
  end
219
236
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: live_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jules Roman B. Polidario
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-09 00:00:00.000000000 Z
11
+ date: 2017-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails