entangled 0.0.20 → 0.0.21
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 +4 -4
- data/README.md +96 -2
- data/entangled.gemspec +1 -0
- data/entangled.js +1 -1
- data/lib/entangled/controller.rb +5 -11
- data/lib/entangled/model.rb +36 -15
- data/lib/entangled/version.rb +1 -1
- data/spec/dummy/app/controllers/items_controller.rb +39 -0
- data/spec/dummy/app/controllers/lists_controller.rb +32 -0
- data/spec/dummy/app/models/item.rb +6 -0
- data/spec/dummy/app/models/list.rb +6 -0
- data/spec/dummy/db/migrate/20150314054548_create_lists.rb +9 -0
- data/spec/dummy/db/migrate/20150314055847_create_items.rb +11 -0
- data/spec/dummy/db/schema.rb +15 -1
- data/spec/dummy/public/app/app.js +10 -1
- data/spec/dummy/public/app/controllers/list.js +16 -0
- data/spec/dummy/public/app/controllers/lists.js +23 -0
- data/spec/dummy/public/app/controllers/message.js +0 -1
- data/spec/dummy/public/app/entangled/entangled.js +46 -29
- data/spec/dummy/public/app/services/list.js +9 -0
- data/spec/dummy/public/index.html +3 -0
- data/spec/dummy/public/test/controllers/lists_test.js +87 -0
- data/spec/dummy/public/views/lists/index.html +14 -0
- data/spec/dummy/public/views/lists/show.html +9 -0
- data/spec/models/inclusion_exclusion_spec.rb +22 -22
- data/spec/models/item_spec.rb +40 -0
- data/spec/models/list_spec.rb +31 -0
- data/spec/models/message_spec.rb +19 -16
- data/spec/routing/nested_routing_spec.rb +0 -7
- data/spec/spec_helper.rb +1 -0
- metadata +44 -2
| @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RSpec.describe Item, type: :model do
         | 
| 4 | 
            +
              describe 'Attributes' do
         | 
| 5 | 
            +
                it { is_expected.to respond_to :name }
         | 
| 6 | 
            +
                it { is_expected.to respond_to :complete }
         | 
| 7 | 
            +
                it { is_expected.to respond_to :list_id }
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              describe 'Database' do
         | 
| 11 | 
            +
                it { is_expected.to have_db_column :name }
         | 
| 12 | 
            +
                it { is_expected.to have_db_column(:complete).of_type(:boolean) }
         | 
| 13 | 
            +
                it { is_expected.to have_db_column(:list_id).of_type(:integer) }
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              describe 'Associations' do
         | 
| 17 | 
            +
                it { is_expected.to belong_to :list }
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              describe 'Methods' do
         | 
| 21 | 
            +
                let(:list) { List.create(name: 'foo') }
         | 
| 22 | 
            +
                let(:item) { list.items.create(name: 'bar') }
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                describe '#member_channel' do
         | 
| 25 | 
            +
                  it 'has a nested member channel' do
         | 
| 26 | 
            +
                    expect(item.member_channel).to eq "/lists/#{list.to_param}/items/#{item.to_param}"
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                describe '#collection_channel' do
         | 
| 31 | 
            +
                  it 'has a nested collection channel' do
         | 
| 32 | 
            +
                    expect(item.collection_channel).to eq "/lists/#{list.to_param}/items"
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              describe 'Validations' do
         | 
| 38 | 
            +
                it { is_expected.to validate_presence_of :list }
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
            end
         | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RSpec.describe List, type: :model do
         | 
| 4 | 
            +
              describe 'Attributes' do
         | 
| 5 | 
            +
                it { is_expected.to respond_to :name }
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              describe 'Database' do
         | 
| 9 | 
            +
                it { is_expected.to have_db_column :name }
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              describe 'Associations' do
         | 
| 13 | 
            +
                it { is_expected.to have_many(:items).dependent(:destroy) }
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              describe 'Methods' do
         | 
| 17 | 
            +
                let(:list) { List.create(name: 'foo') }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                describe '#channel' do
         | 
| 20 | 
            +
                  it 'has the right channel' do
         | 
| 21 | 
            +
                    expect(list.member_channel).to eq "/lists/#{list.to_param}"
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                describe '#collection_channel' do
         | 
| 26 | 
            +
                  it 'has the right channel' do
         | 
| 27 | 
            +
                    expect(list.collection_channel).to eq '/lists'
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
            end
         | 
    
        data/spec/models/message_spec.rb
    CHANGED
    
    | @@ -5,18 +5,24 @@ RSpec.describe Message, type: :model do | |
| 5 5 | 
             
                it { is_expected.to respond_to :body }
         | 
| 6 6 | 
             
              end
         | 
| 7 7 |  | 
| 8 | 
            +
              describe 'Database' do
         | 
| 9 | 
            +
                it { is_expected.to have_db_column :body }
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 8 12 | 
             
              describe 'Methods' do
         | 
| 9 | 
            -
                describe ' | 
| 13 | 
            +
                describe '#collection_channel' do
         | 
| 14 | 
            +
                  let(:message) { Message.create(body: 'foo') }
         | 
| 15 | 
            +
             | 
| 10 16 | 
             
                  it 'is the underscore, pluralized model name' do
         | 
| 11 | 
            -
                    expect( | 
| 17 | 
            +
                    expect(message.collection_channel).to eq '/messages'
         | 
| 12 18 | 
             
                  end
         | 
| 13 19 | 
             
                end
         | 
| 14 20 |  | 
| 15 | 
            -
                describe '# | 
| 21 | 
            +
                describe '#member_channel' do
         | 
| 16 22 | 
             
                  let(:message) { Message.create(body: 'foo') }
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                  it "is the  | 
| 19 | 
            -
                    expect(message. | 
| 23 | 
            +
                  
         | 
| 24 | 
            +
                  it "is the collection channel plus the member as param" do
         | 
| 25 | 
            +
                    expect(message.member_channel).to eq "/messages/#{message.to_param}"
         | 
| 20 26 | 
             
                  end
         | 
| 21 27 | 
             
                end
         | 
| 22 28 |  | 
| @@ -35,7 +41,7 @@ RSpec.describe Message, type: :model do | |
| 35 41 | 
             
                      redis = stub_redis
         | 
| 36 42 |  | 
| 37 43 | 
             
                      expect(redis).to have_received(:publish).with(
         | 
| 38 | 
            -
                         | 
| 44 | 
            +
                        message.collection_channel, {
         | 
| 39 45 | 
             
                          action: :create,
         | 
| 40 46 | 
             
                          resource: message
         | 
| 41 47 | 
             
                        }.to_json
         | 
| @@ -46,7 +52,7 @@ RSpec.describe Message, type: :model do | |
| 46 52 | 
             
                      redis = stub_redis
         | 
| 47 53 |  | 
| 48 54 | 
             
                      expect(redis).to have_received(:publish).with(
         | 
| 49 | 
            -
                        message. | 
| 55 | 
            +
                        message.member_channel, {
         | 
| 50 56 | 
             
                          action: :create,
         | 
| 51 57 | 
             
                          resource: message
         | 
| 52 58 | 
             
                        }.to_json
         | 
| @@ -63,7 +69,7 @@ RSpec.describe Message, type: :model do | |
| 63 69 | 
             
                      message.update(body: 'bar')
         | 
| 64 70 |  | 
| 65 71 | 
             
                      expect(redis).to have_received(:publish).with(
         | 
| 66 | 
            -
                         | 
| 72 | 
            +
                        message.collection_channel, {
         | 
| 67 73 | 
             
                          action: :update,
         | 
| 68 74 | 
             
                          resource: message
         | 
| 69 75 | 
             
                        }.to_json
         | 
| @@ -76,7 +82,7 @@ RSpec.describe Message, type: :model do | |
| 76 82 | 
             
                      message.update(body: 'bar')
         | 
| 77 83 |  | 
| 78 84 | 
             
                      expect(redis).to have_received(:publish).with(
         | 
| 79 | 
            -
                        message. | 
| 85 | 
            +
                        message.member_channel, {
         | 
| 80 86 | 
             
                          action: :update,
         | 
| 81 87 | 
             
                          resource: message
         | 
| 82 88 | 
             
                        }.to_json
         | 
| @@ -93,7 +99,7 @@ RSpec.describe Message, type: :model do | |
| 93 99 | 
             
                      message.destroy
         | 
| 94 100 |  | 
| 95 101 | 
             
                      expect(redis).to have_received(:publish).with(
         | 
| 96 | 
            -
                         | 
| 102 | 
            +
                        message.collection_channel, {
         | 
| 97 103 | 
             
                          action: :destroy,
         | 
| 98 104 | 
             
                          resource: message
         | 
| 99 105 | 
             
                        }.to_json
         | 
| @@ -106,7 +112,7 @@ RSpec.describe Message, type: :model do | |
| 106 112 | 
             
                      message.destroy
         | 
| 107 113 |  | 
| 108 114 | 
             
                      expect(redis).to have_received(:publish).with(
         | 
| 109 | 
            -
                        message. | 
| 115 | 
            +
                        message.member_channel, {
         | 
| 110 116 | 
             
                          action: :destroy,
         | 
| 111 117 | 
             
                          resource: message
         | 
| 112 118 | 
             
                        }.to_json
         | 
| @@ -124,9 +130,6 @@ RSpec.describe Message, type: :model do | |
| 124 130 | 
             
              end
         | 
| 125 131 |  | 
| 126 132 | 
             
              describe 'Validations' do
         | 
| 127 | 
            -
                it  | 
| 128 | 
            -
                  message = Message.create
         | 
| 129 | 
            -
                  expect(message.errors[:body]).to include "can't be blank"
         | 
| 130 | 
            -
                end
         | 
| 133 | 
            +
                it { is_expected.to validate_presence_of :body }
         | 
| 131 134 | 
             
              end
         | 
| 132 135 | 
             
            end
         | 
| @@ -1,13 +1,6 @@ | |
| 1 1 | 
             
            require 'spec_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            RSpec.describe 'Nested routes', type: :routing do
         | 
| 4 | 
            -
              before(:context) do
         | 
| 5 | 
            -
                # Create arbitrary controllers here rather than
         | 
| 6 | 
            -
                # having a separate file for each in app/controllers
         | 
| 7 | 
            -
                class ListsController < ApplicationController; end
         | 
| 8 | 
            -
                class ItemsController < ApplicationController; end
         | 
| 9 | 
            -
              end
         | 
| 10 | 
            -
             | 
| 11 4 | 
             
              describe 'parent routes' do
         | 
| 12 5 | 
             
                describe '#index' do
         | 
| 13 6 | 
             
                  it 'matches the lists_path' do
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    
    
        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: 0.0. | 
| 4 | 
            +
              version: 0.0.21
         | 
| 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-03- | 
| 11 | 
            +
            date: 2015-03-15 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -52,6 +52,20 @@ dependencies: | |
| 52 52 | 
             
                - - "~>"
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: '3.2'
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: shoulda-matchers
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - "~>"
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: '2.6'
         | 
| 62 | 
            +
              type: :development
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - "~>"
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: '2.6'
         | 
| 55 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 70 | 
             
              name: sqlite3
         | 
| 57 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -176,6 +190,8 @@ files: | |
| 176 190 | 
             
            - spec/dummy/Rakefile
         | 
| 177 191 | 
             
            - spec/dummy/app/controllers/application_controller.rb
         | 
| 178 192 | 
             
            - spec/dummy/app/controllers/concerns/.keep
         | 
| 193 | 
            +
            - spec/dummy/app/controllers/items_controller.rb
         | 
| 194 | 
            +
            - spec/dummy/app/controllers/lists_controller.rb
         | 
| 179 195 | 
             
            - spec/dummy/app/controllers/messages_controller.rb
         | 
| 180 196 | 
             
            - spec/dummy/app/models/.keep
         | 
| 181 197 | 
             
            - spec/dummy/app/models/bar.rb
         | 
| @@ -183,6 +199,8 @@ files: | |
| 183 199 | 
             
            - spec/dummy/app/models/concerns/.keep
         | 
| 184 200 | 
             
            - spec/dummy/app/models/foo.rb
         | 
| 185 201 | 
             
            - spec/dummy/app/models/foobar.rb
         | 
| 202 | 
            +
            - spec/dummy/app/models/item.rb
         | 
| 203 | 
            +
            - spec/dummy/app/models/list.rb
         | 
| 186 204 | 
             
            - spec/dummy/app/models/message.rb
         | 
| 187 205 | 
             
            - spec/dummy/bin/bundle
         | 
| 188 206 | 
             
            - spec/dummy/bin/rails
         | 
| @@ -212,23 +230,33 @@ files: | |
| 212 230 | 
             
            - spec/dummy/db/migrate/20150223004834_create_bars.rb
         | 
| 213 231 | 
             
            - spec/dummy/db/migrate/20150223004841_create_foobars.rb
         | 
| 214 232 | 
             
            - spec/dummy/db/migrate/20150223004852_create_barfoos.rb
         | 
| 233 | 
            +
            - spec/dummy/db/migrate/20150314054548_create_lists.rb
         | 
| 234 | 
            +
            - spec/dummy/db/migrate/20150314055847_create_items.rb
         | 
| 215 235 | 
             
            - spec/dummy/db/schema.rb
         | 
| 216 236 | 
             
            - spec/dummy/log/.keep
         | 
| 217 237 | 
             
            - spec/dummy/public/Gruntfile.js
         | 
| 218 238 | 
             
            - spec/dummy/public/app/app.js
         | 
| 239 | 
            +
            - spec/dummy/public/app/controllers/list.js
         | 
| 240 | 
            +
            - spec/dummy/public/app/controllers/lists.js
         | 
| 219 241 | 
             
            - spec/dummy/public/app/controllers/message.js
         | 
| 220 242 | 
             
            - spec/dummy/public/app/controllers/messages.js
         | 
| 221 243 | 
             
            - spec/dummy/public/app/entangled/entangled.js
         | 
| 244 | 
            +
            - spec/dummy/public/app/services/list.js
         | 
| 222 245 | 
             
            - spec/dummy/public/app/services/message.js
         | 
| 223 246 | 
             
            - spec/dummy/public/bower.json
         | 
| 224 247 | 
             
            - spec/dummy/public/favicon.ico
         | 
| 225 248 | 
             
            - spec/dummy/public/index.html
         | 
| 226 249 | 
             
            - spec/dummy/public/package.json
         | 
| 250 | 
            +
            - spec/dummy/public/test/controllers/lists_test.js
         | 
| 227 251 | 
             
            - spec/dummy/public/test/controllers/messages_test.js
         | 
| 252 | 
            +
            - spec/dummy/public/views/lists/index.html
         | 
| 253 | 
            +
            - spec/dummy/public/views/lists/show.html
         | 
| 228 254 | 
             
            - spec/dummy/public/views/messages/index.html
         | 
| 229 255 | 
             
            - spec/dummy/public/views/messages/show.html
         | 
| 230 256 | 
             
            - spec/helpers/redis_spec.rb
         | 
| 231 257 | 
             
            - spec/models/inclusion_exclusion_spec.rb
         | 
| 258 | 
            +
            - spec/models/item_spec.rb
         | 
| 259 | 
            +
            - spec/models/list_spec.rb
         | 
| 232 260 | 
             
            - spec/models/message_spec.rb
         | 
| 233 261 | 
             
            - spec/routing/inclusion_exclusion_routing_spec.rb
         | 
| 234 262 | 
             
            - spec/routing/messages_routing_spec.rb
         | 
| @@ -263,6 +291,8 @@ test_files: | |
| 263 291 | 
             
            - spec/dummy/Rakefile
         | 
| 264 292 | 
             
            - spec/dummy/app/controllers/application_controller.rb
         | 
| 265 293 | 
             
            - spec/dummy/app/controllers/concerns/.keep
         | 
| 294 | 
            +
            - spec/dummy/app/controllers/items_controller.rb
         | 
| 295 | 
            +
            - spec/dummy/app/controllers/lists_controller.rb
         | 
| 266 296 | 
             
            - spec/dummy/app/controllers/messages_controller.rb
         | 
| 267 297 | 
             
            - spec/dummy/app/models/.keep
         | 
| 268 298 | 
             
            - spec/dummy/app/models/bar.rb
         | 
| @@ -270,6 +300,8 @@ test_files: | |
| 270 300 | 
             
            - spec/dummy/app/models/concerns/.keep
         | 
| 271 301 | 
             
            - spec/dummy/app/models/foo.rb
         | 
| 272 302 | 
             
            - spec/dummy/app/models/foobar.rb
         | 
| 303 | 
            +
            - spec/dummy/app/models/item.rb
         | 
| 304 | 
            +
            - spec/dummy/app/models/list.rb
         | 
| 273 305 | 
             
            - spec/dummy/app/models/message.rb
         | 
| 274 306 | 
             
            - spec/dummy/bin/bundle
         | 
| 275 307 | 
             
            - spec/dummy/bin/rails
         | 
| @@ -299,23 +331,33 @@ test_files: | |
| 299 331 | 
             
            - spec/dummy/db/migrate/20150223004834_create_bars.rb
         | 
| 300 332 | 
             
            - spec/dummy/db/migrate/20150223004841_create_foobars.rb
         | 
| 301 333 | 
             
            - spec/dummy/db/migrate/20150223004852_create_barfoos.rb
         | 
| 334 | 
            +
            - spec/dummy/db/migrate/20150314054548_create_lists.rb
         | 
| 335 | 
            +
            - spec/dummy/db/migrate/20150314055847_create_items.rb
         | 
| 302 336 | 
             
            - spec/dummy/db/schema.rb
         | 
| 303 337 | 
             
            - spec/dummy/log/.keep
         | 
| 304 338 | 
             
            - spec/dummy/public/Gruntfile.js
         | 
| 305 339 | 
             
            - spec/dummy/public/app/app.js
         | 
| 340 | 
            +
            - spec/dummy/public/app/controllers/list.js
         | 
| 341 | 
            +
            - spec/dummy/public/app/controllers/lists.js
         | 
| 306 342 | 
             
            - spec/dummy/public/app/controllers/message.js
         | 
| 307 343 | 
             
            - spec/dummy/public/app/controllers/messages.js
         | 
| 308 344 | 
             
            - spec/dummy/public/app/entangled/entangled.js
         | 
| 345 | 
            +
            - spec/dummy/public/app/services/list.js
         | 
| 309 346 | 
             
            - spec/dummy/public/app/services/message.js
         | 
| 310 347 | 
             
            - spec/dummy/public/bower.json
         | 
| 311 348 | 
             
            - spec/dummy/public/favicon.ico
         | 
| 312 349 | 
             
            - spec/dummy/public/index.html
         | 
| 313 350 | 
             
            - spec/dummy/public/package.json
         | 
| 351 | 
            +
            - spec/dummy/public/test/controllers/lists_test.js
         | 
| 314 352 | 
             
            - spec/dummy/public/test/controllers/messages_test.js
         | 
| 353 | 
            +
            - spec/dummy/public/views/lists/index.html
         | 
| 354 | 
            +
            - spec/dummy/public/views/lists/show.html
         | 
| 315 355 | 
             
            - spec/dummy/public/views/messages/index.html
         | 
| 316 356 | 
             
            - spec/dummy/public/views/messages/show.html
         | 
| 317 357 | 
             
            - spec/helpers/redis_spec.rb
         | 
| 318 358 | 
             
            - spec/models/inclusion_exclusion_spec.rb
         | 
| 359 | 
            +
            - spec/models/item_spec.rb
         | 
| 360 | 
            +
            - spec/models/list_spec.rb
         | 
| 319 361 | 
             
            - spec/models/message_spec.rb
         | 
| 320 362 | 
             
            - spec/routing/inclusion_exclusion_routing_spec.rb
         | 
| 321 363 | 
             
            - spec/routing/messages_routing_spec.rb
         |