cable_ready 5.0.0.pre0 → 5.0.0.pre4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +87 -8
  3. data/Gemfile.lock +105 -97
  4. data/README.md +10 -6
  5. data/app/channels/cable_ready/stream.rb +12 -0
  6. data/app/helpers/cable_ready_helper.rb +24 -0
  7. data/app/jobs/cable_ready_broadcast_job.rb +14 -0
  8. data/app/models/concerns/cable_ready/updatable/collection_updatable_callbacks.rb +19 -0
  9. data/app/models/concerns/cable_ready/updatable/collections_registry.rb +33 -0
  10. data/app/models/concerns/cable_ready/updatable/model_updatable_callbacks.rb +28 -0
  11. data/app/models/concerns/cable_ready/updatable.rb +98 -0
  12. data/app/models/concerns/extend_has_many.rb +13 -0
  13. data/lib/cable_ready/channels.rb +1 -1
  14. data/lib/cable_ready/compoundable.rb +1 -1
  15. data/lib/cable_ready/config.rb +2 -0
  16. data/lib/cable_ready/identifiable.rb +13 -2
  17. data/lib/cable_ready/operation_builder.rb +25 -14
  18. data/lib/cable_ready/sanity_checker.rb +50 -50
  19. data/lib/cable_ready/version.rb +1 -1
  20. data/lib/cable_ready.rb +3 -0
  21. data/lib/generators/cable_ready/{stream_from_generator.rb → helpers_generator.rb} +1 -1
  22. data/test/dummy/app/channels/application_cable/channel.rb +4 -0
  23. data/test/dummy/app/channels/application_cable/connection.rb +4 -0
  24. data/test/dummy/app/controllers/application_controller.rb +2 -0
  25. data/test/dummy/app/helpers/application_helper.rb +2 -0
  26. data/test/dummy/app/jobs/application_job.rb +7 -0
  27. data/test/dummy/app/mailers/application_mailer.rb +4 -0
  28. data/test/dummy/app/models/application_record.rb +3 -0
  29. data/test/dummy/app/models/global_idable_entity.rb +16 -0
  30. data/test/dummy/app/models/post.rb +4 -0
  31. data/test/dummy/app/models/section.rb +6 -0
  32. data/test/dummy/app/models/team.rb +6 -0
  33. data/test/dummy/app/models/topic.rb +4 -0
  34. data/test/dummy/app/models/user.rb +7 -0
  35. data/test/dummy/config/application.rb +22 -0
  36. data/test/dummy/config/boot.rb +5 -0
  37. data/test/dummy/config/environment.rb +5 -0
  38. data/test/dummy/config/environments/development.rb +76 -0
  39. data/test/dummy/config/environments/production.rb +120 -0
  40. data/test/dummy/config/environments/test.rb +59 -0
  41. data/test/dummy/config/initializers/application_controller_renderer.rb +8 -0
  42. data/test/dummy/config/initializers/assets.rb +12 -0
  43. data/test/dummy/config/initializers/backtrace_silencers.rb +8 -0
  44. data/test/dummy/config/initializers/cable_ready.rb +18 -0
  45. data/test/dummy/config/initializers/content_security_policy.rb +28 -0
  46. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  47. data/test/dummy/config/initializers/filter_parameter_logging.rb +6 -0
  48. data/test/dummy/config/initializers/inflections.rb +16 -0
  49. data/test/dummy/config/initializers/mime_types.rb +4 -0
  50. data/test/dummy/config/initializers/permissions_policy.rb +11 -0
  51. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  52. data/test/dummy/config/puma.rb +43 -0
  53. data/test/dummy/config/routes.rb +3 -0
  54. data/test/dummy/db/migrate/20210902154139_create_users.rb +9 -0
  55. data/test/dummy/db/migrate/20210902154153_create_posts.rb +10 -0
  56. data/test/dummy/db/migrate/20210904081930_create_topics.rb +9 -0
  57. data/test/dummy/db/migrate/20210904093607_create_sections.rb +9 -0
  58. data/test/dummy/db/migrate/20210913191735_create_teams.rb +8 -0
  59. data/test/dummy/db/migrate/20210913191759_add_team_reference_to_users.rb +5 -0
  60. data/test/dummy/db/schema.rb +49 -0
  61. data/test/dummy/test/models/post_test.rb +7 -0
  62. data/test/dummy/test/models/section_test.rb +7 -0
  63. data/test/dummy/test/models/team_test.rb +7 -0
  64. data/test/dummy/test/models/topic_test.rb +7 -0
  65. data/test/dummy/test/models/user_test.rb +7 -0
  66. data/test/lib/cable_ready/cable_car_test.rb +25 -3
  67. data/test/lib/cable_ready/compoundable_test.rb +26 -0
  68. data/test/lib/cable_ready/helper_test.rb +25 -0
  69. data/test/lib/cable_ready/identifiable_test.rb +0 -6
  70. data/test/lib/cable_ready/operation_builder_test.rb +89 -28
  71. data/test/lib/cable_ready/updatable_test.rb +112 -0
  72. data/test/test_helper.rb +4 -1
  73. metadata +126 -14
  74. data/cable_ready.gemspec +0 -27
  75. data/package.json +0 -39
  76. data/tags +0 -80
  77. data/yarn.lock +0 -2562
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+ require_relative "../../../lib/cable_ready"
5
+
6
+ class CableReady::CompoundableTest < ActiveSupport::TestCase
7
+ include CableReady::Compoundable
8
+
9
+ test "compounds an ActiveRecord::Base" do
10
+ user = User.create(name: "Alan Turing")
11
+
12
+ assert_equal "gid://dummy/User/1", compound([user])
13
+ end
14
+
15
+ test "compounds any GlobalId-able entity" do
16
+ entity = GlobalIdableEntity.new
17
+
18
+ assert_equal "gid://dummy/GlobalIdableEntity/fake-id", compound([entity])
19
+ end
20
+
21
+ test "compounds any combination of globalid-able and strings" do
22
+ user = User.create(name: "Alan Turing")
23
+
24
+ assert_equal "gid://dummy/User/1:enigma", compound([user, :enigma])
25
+ end
26
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class CableReady::HelperTest < ActionView::TestCase
6
+ include CableReadyHelper
7
+
8
+ # stream_from
9
+
10
+ test "stream_from renders html options" do
11
+ element = Nokogiri::HTML.fragment(stream_from("key", html_options: {class: "block", data: {controller: "modal"}}) {})
12
+
13
+ assert_equal "block", element.children.first["class"]
14
+ assert_equal "modal", element.children.first["data-controller"]
15
+ end
16
+
17
+ # updates_for
18
+
19
+ test "updates_for renders html options" do
20
+ element = Nokogiri::HTML.fragment(updates_for("key", html_options: {class: "block", data: {controller: "modal"}}) {})
21
+
22
+ assert_equal "block", element.children.first["class"]
23
+ assert_equal "modal", element.children.first["data-controller"]
24
+ end
25
+ end
@@ -3,12 +3,6 @@
3
3
  require "test_helper"
4
4
  require_relative "../../../lib/cable_ready"
5
5
 
6
- class User
7
- include ActiveModel::Model
8
-
9
- attr_accessor :id
10
- end
11
-
12
6
  class CableReady::IdentifiableTest < ActiveSupport::TestCase
13
7
  include CableReady::Identifiable
14
8
 
@@ -3,6 +3,29 @@
3
3
  require "test_helper"
4
4
  require_relative "../../../lib/cable_ready"
5
5
 
6
+ class Death
7
+ def to_html
8
+ "I rock"
9
+ end
10
+
11
+ def to_dom_id
12
+ "death"
13
+ end
14
+
15
+ def to_operation_options
16
+ [:html, :dom_id, :spaz]
17
+ end
18
+ end
19
+
20
+ class Life
21
+ def to_operation_options
22
+ {
23
+ html: "You go, girl",
24
+ dom_id: "life"
25
+ }
26
+ end
27
+ end
28
+
6
29
  class CableReady::OperationBuilderTest < ActiveSupport::TestCase
7
30
  setup do
8
31
  @operation_builder = CableReady::OperationBuilder.new("test")
@@ -32,42 +55,42 @@ class CableReady::OperationBuilderTest < ActiveSupport::TestCase
32
55
 
33
56
  operations = @operation_builder.instance_variable_get(:@enqueued_operations)
34
57
 
35
- assert_equal 1, operations["foobar"].size
36
- assert_equal({"name" => "passed_option"}, operations["foobar"].first)
58
+ assert_equal 1, operations.size
59
+ assert_equal({"name" => "passed_option", "operation" => "foobar"}, operations.first)
37
60
  end
38
61
 
39
62
  test "should json-ify operations" do
40
63
  @operation_builder.add_operation_method("foobar")
41
64
  @operation_builder.foobar({name: "passed_option"})
42
- assert_equal("{\"foobar\":[{\"name\":\"passed_option\"}]}", @operation_builder.to_json)
65
+ assert_equal("[{\"name\":\"passed_option\",\"operation\":\"foobar\"}]", @operation_builder.to_json)
43
66
  end
44
67
 
45
68
  test "should apply! many operations" do
46
- @operation_builder.apply!(foobar: [{name: "passed_option"}])
69
+ @operation_builder.apply!({name: "passed_option"})
47
70
 
48
71
  operations = @operation_builder.instance_variable_get(:@enqueued_operations)
49
- assert_equal 1, operations["foobar"].size
50
- assert_equal({"name" => "passed_option"}, operations["foobar"].first)
72
+ assert_equal 1, operations.size
73
+ assert_equal({"name" => "passed_option"}, operations.first)
51
74
  end
52
75
 
53
76
  test "should apply! many operations from a string" do
54
- @operation_builder.apply!(JSON.generate({foobar: [{name: "passed_option"}]}))
77
+ @operation_builder.apply!(JSON.generate({name: "passed_option"}))
55
78
 
56
79
  operations = @operation_builder.instance_variable_get(:@enqueued_operations)
57
- assert_equal 1, operations["foobar"].size
58
- assert_equal({"name" => "passed_option"}, operations["foobar"].first)
80
+ assert_equal 1, operations.size
81
+ assert_equal({"name" => "passed_option"}, operations.first)
59
82
  end
60
83
 
61
84
  test "operations payload should omit empty operations" do
62
85
  @operation_builder.add_operation_method("foobar")
63
86
  payload = @operation_builder.operations_payload
64
- assert_equal({}, payload)
87
+ assert_equal([], payload)
65
88
  end
66
89
 
67
90
  test "operations payload should camelize keys" do
68
91
  @operation_builder.add_operation_method("foo_bar")
69
92
  @operation_builder.foo_bar({beep_boop: "passed_option"})
70
- assert_equal({"fooBar" => [{"beepBoop" => "passed_option"}]}, @operation_builder.operations_payload)
93
+ assert_equal([{"operation" => "fooBar", "beepBoop" => "passed_option"}], @operation_builder.operations_payload)
71
94
  end
72
95
 
73
96
  test "should take first argument as selector" do
@@ -75,9 +98,7 @@ class CableReady::OperationBuilderTest < ActiveSupport::TestCase
75
98
 
76
99
  @operation_builder.inner_html("#smelly", html: "<span>I rock</span>")
77
100
 
78
- operations = {
79
- "innerHtml" => [{"html" => "<span>I rock</span>", "selector" => "#smelly"}]
80
- }
101
+ operations = [{"operation" => "innerHtml", "html" => "<span>I rock</span>", "selector" => "#smelly"}]
81
102
 
82
103
  assert_equal(operations, @operation_builder.operations_payload)
83
104
  end
@@ -88,10 +109,10 @@ class CableReady::OperationBuilderTest < ActiveSupport::TestCase
88
109
 
89
110
  @operation_builder.set_focus("#smelly").inner_html(html: "<span>I rock</span>")
90
111
 
91
- operations = {
92
- "setFocus" => [{"selector" => "#smelly"}],
93
- "innerHtml" => [{"html" => "<span>I rock</span>", "selector" => "#smelly"}]
94
- }
112
+ operations = [
113
+ {"operation" => "setFocus", "selector" => "#smelly"},
114
+ {"operation" => "innerHtml", "html" => "<span>I rock</span>", "selector" => "#smelly"}
115
+ ]
95
116
 
96
117
  assert_equal(operations, @operation_builder.operations_payload)
97
118
  end
@@ -104,7 +125,7 @@ class CableReady::OperationBuilderTest < ActiveSupport::TestCase
104
125
 
105
126
  @operation_builder.inner_html(html: "<span>winning</span>")
106
127
 
107
- assert_equal({"innerHtml" => [{"html" => "<span>winning</span>"}]}, @operation_builder.operations_payload)
128
+ assert_equal([{"operation" => "innerHtml", "html" => "<span>winning</span>"}], @operation_builder.operations_payload)
108
129
  end
109
130
 
110
131
  test "should use previous_selector if present and should use `selector` if explicitly provided" do
@@ -113,15 +134,55 @@ class CableReady::OperationBuilderTest < ActiveSupport::TestCase
113
134
 
114
135
  @operation_builder.set_focus("#smelly").inner_html(html: "<span>I rock</span>").inner_html(html: "<span>I rock too</span>", selector: "#smelly2")
115
136
 
116
- operations = {
117
- "setFocus" => [
118
- {"selector" => "#smelly"}
119
- ],
120
- "innerHtml" => [
121
- {"html" => "<span>I rock</span>", "selector" => "#smelly"},
122
- {"html" => "<span>I rock too</span>", "selector" => "#smelly2"}
123
- ]
124
- }
137
+ operations = [
138
+ {"operation" => "setFocus", "selector" => "#smelly"},
139
+ {"operation" => "innerHtml", "html" => "<span>I rock</span>", "selector" => "#smelly"},
140
+ {"operation" => "innerHtml", "html" => "<span>I rock too</span>", "selector" => "#smelly2"}
141
+ ]
142
+
143
+ assert_equal(operations, @operation_builder.operations_payload)
144
+ end
145
+
146
+ test "should pull html option from Death object" do
147
+ @operation_builder.add_operation_method("inner_html")
148
+ death = Death.new
149
+
150
+ @operation_builder.inner_html(html: death)
151
+
152
+ operations = [{"operation" => "innerHtml", "html" => "I rock"}]
153
+
154
+ assert_equal(operations, @operation_builder.operations_payload)
155
+ end
156
+
157
+ test "should pull html option with selector from Death object" do
158
+ @operation_builder.add_operation_method("inner_html")
159
+ death = Death.new
160
+
161
+ @operation_builder.inner_html(death, html: death)
162
+
163
+ operations = [{"operation" => "innerHtml", "html" => "I rock", "selector" => "#death"}]
164
+
165
+ assert_equal(operations, @operation_builder.operations_payload)
166
+ end
167
+
168
+ test "should pull html and dom_id options from Death object" do
169
+ @operation_builder.add_operation_method("inner_html")
170
+ death = Death.new
171
+
172
+ @operation_builder.inner_html(death)
173
+
174
+ operations = [{"operation" => "innerHtml", "html" => "I rock", "domId" => "death"}]
175
+
176
+ assert_equal(operations, @operation_builder.operations_payload)
177
+ end
178
+
179
+ test "should pull html and dom_id options from Life object" do
180
+ @operation_builder.add_operation_method("inner_html")
181
+ life = Life.new
182
+
183
+ @operation_builder.inner_html(life)
184
+
185
+ operations = [{"operation" => "innerHtml", "html" => "You go, girl", "domId" => "life"}]
125
186
 
126
187
  assert_equal(operations, @operation_builder.operations_payload)
127
188
  end
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class CableReady::UpdatableTest < ActiveSupport::TestCase
6
+ test "includes the module automatically in associated models" do
7
+ user = User.create(name: "John Doe")
8
+
9
+ post = user.posts.build
10
+ assert post.class < CableReady::Updatable
11
+ end
12
+
13
+ test "updates the collection when an item is added" do
14
+ mock_server = mock("server")
15
+ mock_server.expects(:broadcast).with(User, {}).once
16
+ mock_server.expects(:broadcast).with("gid://dummy/User/1:posts", {}).once
17
+
18
+ ActionCable.stubs(:server).returns(mock_server)
19
+ user = User.create(name: "John Doe")
20
+
21
+ user.posts.create(title: "Lorem")
22
+ end
23
+
24
+ test "updates the collection when an item is destroyed" do
25
+ user = User.create(name: "John Doe")
26
+ post = user.posts.create(title: "Lorem")
27
+
28
+ mock_server = mock("server")
29
+ mock_server.expects(:broadcast).with("gid://dummy/User/1:posts", {}).once
30
+
31
+ ActionCable.stubs(:server).returns(mock_server)
32
+
33
+ post.destroy
34
+ end
35
+
36
+ test "updates the collection when an item is updated" do
37
+ user = User.create(name: "John Doe")
38
+ post = user.posts.create(title: "Lorem")
39
+
40
+ mock_server = mock("server")
41
+ mock_server.expects(:broadcast).with("gid://dummy/User/1:posts", {}).once
42
+
43
+ ActionCable.stubs(:server).returns(mock_server)
44
+
45
+ post.update(title: "Ipsum")
46
+ end
47
+
48
+ test "updates the model when it is updated" do
49
+ user = User.create(name: "John Doe")
50
+
51
+ mock_server = mock("server")
52
+ mock_server.expects(:broadcast).with(User, {}).once
53
+ mock_server.expects(:broadcast).with(user.to_global_id, {}).once
54
+
55
+ ActionCable.stubs(:server).returns(mock_server)
56
+
57
+ user.update(name: "Jane Doe")
58
+ end
59
+
60
+ test "updates the parent when it is touched" do
61
+ team = Team.create
62
+ user = team.users.create(name: "Ada Lovelace")
63
+
64
+ mock_server = mock("server")
65
+ mock_server.expects(:broadcast).with(User, {}).once
66
+ mock_server.expects(:broadcast).with(user.to_global_id, {}).once
67
+ mock_server.expects(:broadcast).with("gid://dummy/Team/1:users", {}).once
68
+ mock_server.expects(:broadcast).with(Team, {}).once
69
+ mock_server.expects(:broadcast).with(team.to_global_id, {}).once
70
+
71
+ ActionCable.stubs(:server).returns(mock_server)
72
+
73
+ user.update(name: "Jane Doe")
74
+ end
75
+
76
+ test "respects :on to specify persistence methods" do
77
+ mock_server = mock("server")
78
+
79
+ ActionCable.stubs(:server).returns(mock_server)
80
+
81
+ mock_server.expects(:broadcast).with(Topic, {}).once
82
+ topic = Topic.create(title: "Reactive Rails with Hotwire")
83
+
84
+ mock_server.expects(:broadcast).with(topic.to_global_id, {}).never
85
+ topic.update(title: "Reactive Rails with CableReady")
86
+ end
87
+
88
+ test "respects :if on enable_updates" do
89
+ mock_server = mock("server")
90
+
91
+ ActionCable.stubs(:server).returns(mock_server)
92
+
93
+ section = Section.create
94
+ section.updates_enabled = true
95
+
96
+ mock_server.expects(:broadcast).with(Section, {}).once
97
+ mock_server.expects(:broadcast).with(section.to_global_id, {}).once
98
+ section.update(title: "First Section")
99
+ end
100
+
101
+ test "updates any GlobalID-able entity" do
102
+ entity = GlobalIdableEntity.new
103
+
104
+ mock_server = mock("server")
105
+ mock_server.expects(:broadcast).with(GlobalIdableEntity, {}).once
106
+ mock_server.expects(:broadcast).with(entity.to_global_id, {}).once
107
+
108
+ ActionCable.stubs(:server).returns(mock_server)
109
+
110
+ entity.fake_update
111
+ end
112
+ end
data/test/test_helper.rb CHANGED
@@ -3,10 +3,13 @@
3
3
  # Configure Rails Environment
4
4
  ENV["RAILS_ENV"] = "test"
5
5
 
6
+ require_relative "../test/dummy/config/environment"
7
+ ActiveRecord::Migrator.migrations_paths = [File.expand_path("../test/dummy/db/migrate", __dir__)]
8
+
6
9
  require "mocha"
7
10
  require "rails"
8
- require "rails/generators"
9
11
  require "rails/test_help"
12
+ require "rails/generators"
10
13
  require "minitest/mock"
11
14
  require "mocha/minitest"
12
15
  require "pry"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cable_ready
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0.pre0
4
+ version: 5.0.0.pre4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Hopkins
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-20 00:00:00.000000000 Z
11
+ date: 2021-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -136,7 +136,21 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
- description:
139
+ - !ruby/object:Gem::Dependency
140
+ name: sqlite3
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ description:
140
154
  email:
141
155
  - natehop@gmail.com
142
156
  executables: []
@@ -151,11 +165,18 @@ files:
151
165
  - LICENSE.txt
152
166
  - README.md
153
167
  - Rakefile
168
+ - app/channels/cable_ready/stream.rb
169
+ - app/helpers/cable_ready_helper.rb
170
+ - app/jobs/cable_ready_broadcast_job.rb
171
+ - app/models/concerns/cable_ready/updatable.rb
172
+ - app/models/concerns/cable_ready/updatable/collection_updatable_callbacks.rb
173
+ - app/models/concerns/cable_ready/updatable/collections_registry.rb
174
+ - app/models/concerns/cable_ready/updatable/model_updatable_callbacks.rb
175
+ - app/models/concerns/extend_has_many.rb
154
176
  - bin/console
155
177
  - bin/loc
156
178
  - bin/setup
157
179
  - bin/standardize
158
- - cable_ready.gemspec
159
180
  - lib/cable_ready.rb
160
181
  - lib/cable_ready/broadcaster.rb
161
182
  - lib/cable_ready/cable_car.rb
@@ -169,23 +190,67 @@ files:
169
190
  - lib/cable_ready/stream_identifier.rb
170
191
  - lib/cable_ready/version.rb
171
192
  - lib/generators/cable_ready/channel_generator.rb
193
+ - lib/generators/cable_ready/helpers_generator.rb
172
194
  - lib/generators/cable_ready/initializer_generator.rb
173
- - lib/generators/cable_ready/stream_from_generator.rb
174
195
  - lib/generators/cable_ready/templates/config/initializers/cable_ready.rb
175
- - package.json
176
- - tags
196
+ - test/dummy/app/channels/application_cable/channel.rb
197
+ - test/dummy/app/channels/application_cable/connection.rb
198
+ - test/dummy/app/controllers/application_controller.rb
199
+ - test/dummy/app/helpers/application_helper.rb
200
+ - test/dummy/app/jobs/application_job.rb
201
+ - test/dummy/app/mailers/application_mailer.rb
202
+ - test/dummy/app/models/application_record.rb
203
+ - test/dummy/app/models/global_idable_entity.rb
204
+ - test/dummy/app/models/post.rb
205
+ - test/dummy/app/models/section.rb
206
+ - test/dummy/app/models/team.rb
207
+ - test/dummy/app/models/topic.rb
208
+ - test/dummy/app/models/user.rb
209
+ - test/dummy/config/application.rb
210
+ - test/dummy/config/boot.rb
211
+ - test/dummy/config/environment.rb
212
+ - test/dummy/config/environments/development.rb
213
+ - test/dummy/config/environments/production.rb
214
+ - test/dummy/config/environments/test.rb
215
+ - test/dummy/config/initializers/application_controller_renderer.rb
216
+ - test/dummy/config/initializers/assets.rb
217
+ - test/dummy/config/initializers/backtrace_silencers.rb
218
+ - test/dummy/config/initializers/cable_ready.rb
219
+ - test/dummy/config/initializers/content_security_policy.rb
220
+ - test/dummy/config/initializers/cookies_serializer.rb
221
+ - test/dummy/config/initializers/filter_parameter_logging.rb
222
+ - test/dummy/config/initializers/inflections.rb
223
+ - test/dummy/config/initializers/mime_types.rb
224
+ - test/dummy/config/initializers/permissions_policy.rb
225
+ - test/dummy/config/initializers/wrap_parameters.rb
226
+ - test/dummy/config/puma.rb
227
+ - test/dummy/config/routes.rb
228
+ - test/dummy/db/migrate/20210902154139_create_users.rb
229
+ - test/dummy/db/migrate/20210902154153_create_posts.rb
230
+ - test/dummy/db/migrate/20210904081930_create_topics.rb
231
+ - test/dummy/db/migrate/20210904093607_create_sections.rb
232
+ - test/dummy/db/migrate/20210913191735_create_teams.rb
233
+ - test/dummy/db/migrate/20210913191759_add_team_reference_to_users.rb
234
+ - test/dummy/db/schema.rb
235
+ - test/dummy/test/models/post_test.rb
236
+ - test/dummy/test/models/section_test.rb
237
+ - test/dummy/test/models/team_test.rb
238
+ - test/dummy/test/models/topic_test.rb
239
+ - test/dummy/test/models/user_test.rb
177
240
  - test/lib/cable_ready/cable_car_test.rb
241
+ - test/lib/cable_ready/compoundable_test.rb
242
+ - test/lib/cable_ready/helper_test.rb
178
243
  - test/lib/cable_ready/identifiable_test.rb
179
244
  - test/lib/cable_ready/operation_builder_test.rb
245
+ - test/lib/cable_ready/updatable_test.rb
180
246
  - test/lib/generators/cable_ready/channel_generator_test.rb
181
247
  - test/support/generator_test_helpers.rb
182
248
  - test/test_helper.rb
183
- - yarn.lock
184
249
  homepage: https://github.com/stimulusreflex/cable_ready
185
250
  licenses:
186
251
  - MIT
187
252
  metadata: {}
188
- post_install_message:
253
+ post_install_message:
189
254
  rdoc_options: []
190
255
  require_paths:
191
256
  - lib
@@ -200,14 +265,61 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
265
  - !ruby/object:Gem::Version
201
266
  version: 1.3.1
202
267
  requirements: []
203
- rubygems_version: 3.2.3
204
- signing_key:
268
+ rubygems_version: 3.1.6
269
+ signing_key:
205
270
  specification_version: 4
206
271
  summary: Out-of-Band Server Triggered DOM Operations
207
272
  test_files:
273
+ - test/dummy/db/migrate/20210904093607_create_sections.rb
274
+ - test/dummy/db/migrate/20210913191759_add_team_reference_to_users.rb
275
+ - test/dummy/db/migrate/20210904081930_create_topics.rb
276
+ - test/dummy/db/migrate/20210913191735_create_teams.rb
277
+ - test/dummy/db/migrate/20210902154153_create_posts.rb
278
+ - test/dummy/db/migrate/20210902154139_create_users.rb
279
+ - test/dummy/db/schema.rb
280
+ - test/dummy/config/environment.rb
281
+ - test/dummy/config/routes.rb
282
+ - test/dummy/config/application.rb
283
+ - test/dummy/config/initializers/mime_types.rb
284
+ - test/dummy/config/initializers/content_security_policy.rb
285
+ - test/dummy/config/initializers/backtrace_silencers.rb
286
+ - test/dummy/config/initializers/permissions_policy.rb
287
+ - test/dummy/config/initializers/wrap_parameters.rb
288
+ - test/dummy/config/initializers/assets.rb
289
+ - test/dummy/config/initializers/inflections.rb
290
+ - test/dummy/config/initializers/filter_parameter_logging.rb
291
+ - test/dummy/config/initializers/cookies_serializer.rb
292
+ - test/dummy/config/initializers/application_controller_renderer.rb
293
+ - test/dummy/config/initializers/cable_ready.rb
294
+ - test/dummy/config/boot.rb
295
+ - test/dummy/config/puma.rb
296
+ - test/dummy/config/environments/test.rb
297
+ - test/dummy/config/environments/production.rb
298
+ - test/dummy/config/environments/development.rb
299
+ - test/dummy/app/channels/application_cable/channel.rb
300
+ - test/dummy/app/channels/application_cable/connection.rb
301
+ - test/dummy/app/jobs/application_job.rb
302
+ - test/dummy/app/helpers/application_helper.rb
303
+ - test/dummy/app/controllers/application_controller.rb
304
+ - test/dummy/app/models/user.rb
305
+ - test/dummy/app/models/section.rb
306
+ - test/dummy/app/models/post.rb
307
+ - test/dummy/app/models/team.rb
308
+ - test/dummy/app/models/topic.rb
309
+ - test/dummy/app/models/application_record.rb
310
+ - test/dummy/app/models/global_idable_entity.rb
311
+ - test/dummy/app/mailers/application_mailer.rb
312
+ - test/dummy/test/models/section_test.rb
313
+ - test/dummy/test/models/post_test.rb
314
+ - test/dummy/test/models/user_test.rb
315
+ - test/dummy/test/models/team_test.rb
316
+ - test/dummy/test/models/topic_test.rb
317
+ - test/support/generator_test_helpers.rb
318
+ - test/lib/generators/cable_ready/channel_generator_test.rb
208
319
  - test/lib/cable_ready/cable_car_test.rb
320
+ - test/lib/cable_ready/helper_test.rb
209
321
  - test/lib/cable_ready/identifiable_test.rb
322
+ - test/lib/cable_ready/compoundable_test.rb
210
323
  - test/lib/cable_ready/operation_builder_test.rb
211
- - test/lib/generators/cable_ready/channel_generator_test.rb
212
- - test/support/generator_test_helpers.rb
324
+ - test/lib/cable_ready/updatable_test.rb
213
325
  - test/test_helper.rb
data/cable_ready.gemspec DELETED
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require File.expand_path("../lib/cable_ready/version", __FILE__)
4
-
5
- Gem::Specification.new do |gem|
6
- gem.name = "cable_ready"
7
- gem.license = "MIT"
8
- gem.version = CableReady::VERSION
9
- gem.authors = ["Nathan Hopkins"]
10
- gem.email = ["natehop@gmail.com"]
11
- gem.homepage = "https://github.com/stimulusreflex/cable_ready"
12
- gem.summary = "Out-of-Band Server Triggered DOM Operations"
13
-
14
- gem.files = Dir["lib/**/*.rb", "app/assets/javascripts/cable_ready.js", "bin/*", "[A-Z]*"]
15
- gem.test_files = Dir["test/**/*.rb"]
16
-
17
- gem.add_dependency "rails", ">= 5.2"
18
- gem.add_dependency "thread-local", ">= 1.1.0"
19
-
20
- gem.add_development_dependency "github_changelog_generator"
21
- gem.add_development_dependency "magic_frozen_string_literal"
22
- gem.add_development_dependency "pry"
23
- gem.add_development_dependency "pry-nav"
24
- gem.add_development_dependency "rake"
25
- gem.add_development_dependency "standardrb"
26
- gem.add_development_dependency "mocha"
27
- end
data/package.json DELETED
@@ -1,39 +0,0 @@
1
- {
2
- "name": "cable_ready",
3
- "version": "4.5.0",
4
- "description": "CableReady helps you create great real-time user experiences by making it simple to trigger client-side DOM changes from server-side Ruby.",
5
- "keywords": [
6
- "ruby",
7
- "rails",
8
- "websockets",
9
- "actioncable",
10
- "cable",
11
- "ssr",
12
- "stimulus_reflex",
13
- "client-side",
14
- "dom"
15
- ],
16
- "homepage": "https://cableready.stimulusreflex.com/",
17
- "bugs": {
18
- "url": "https://github.com/stimulusreflex/cable_ready/issues"
19
- },
20
- "repository": {
21
- "type": "git",
22
- "url": "git+https://github.com:stimulusreflex/cable_ready.git"
23
- },
24
- "license": "MIT",
25
- "author": "Nathan Hopkins <natehop@gmail.com>",
26
- "main": "./javascript/index.js",
27
- "scripts": {
28
- "lint": "yarn run prettier-standard:check",
29
- "format": "yarn run prettier-standard:format",
30
- "prettier-standard:check": "yarn run prettier-standard --check ./javascript/**/*.js",
31
- "prettier-standard:format": "yarn run prettier-standard ./javascript/**/*.js"
32
- },
33
- "dependencies": {
34
- "morphdom": "^2.6.1"
35
- },
36
- "devDependencies": {
37
- "prettier-standard": "^16.1.0"
38
- }
39
- }