active_null 0.0.5 → 0.0.6

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: a2212a536d88d13e02401600c34dcbcdcc3c292d
4
- data.tar.gz: 93981c12a0da148bfa32ac8fdb7a674636c7804c
3
+ metadata.gz: cd467d1bb5d62ddde65883fa1c81aa8a55d8747c
4
+ data.tar.gz: c092e04b7d8c27ad222097cd619b6d425d41e8b9
5
5
  SHA512:
6
- metadata.gz: 46f3496d68590aaf3132dead19bc8f0e3e4d6eecd41a439cd8d3d164b21caad919f11c4376e95a1bfe99b72ac7eaf728838989afd42eef4b07c9d8ba3f1cef8e
7
- data.tar.gz: b6764c7f5a437c9f9eae30b106a7b321f1853051825176b95435ed6e943921a3b0c4a66b66f50ee3551c476f458011d007b05fa0eb5d61630dd36b358d1a46da
6
+ metadata.gz: 0839b2c1846c5f1caf4aec78851177b3db1024e810b77524bd2c12a3a32fe9e3862a99d761cfeae9ba0b35630fbd72bcfecea731835d1cf24155fffed0c0db29
7
+ data.tar.gz: 30379d39ba04426101921d1c72d19b1dc2371c9573f5dedda4af23c8c3bd624e394ca3b8f1107710edbf3b4c12bbd6f1c8ae2c7265e6db4154f846c7806e44e9
@@ -3,14 +3,13 @@ require 'active_null/null_model_builder'
3
3
 
4
4
  module ActiveNull
5
5
  def null
6
- @null_class.get
6
+ null_class.get
7
7
  end
8
8
 
9
9
  def null_model(&block)
10
- null_model_overrides = if block_given?
10
+ @null_model_overrides = if block_given?
11
11
  Module.new.tap { |m| m.module_eval(&block) }
12
12
  end
13
- @null_class = NullModelBuilder.new(self, null_model_overrides).build
14
13
  end
15
14
 
16
15
  def find_by(*args, &block)
@@ -31,6 +30,10 @@ module ActiveNull
31
30
  end
32
31
  end
33
32
 
33
+ def null_class
34
+ @null_class ||= NullModelBuilder.new(self, @null_model_overrides).build
35
+ end
36
+
34
37
  def self.extended(klass)
35
38
  klass.class_eval <<-CODE
36
39
  after_initialize do
@@ -1,3 +1,3 @@
1
1
  module ActiveNull
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
@@ -1,12 +1,22 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ActiveNull do
4
- it 'defines the null class' do
5
- expect(Object.const_defined? 'NullPost').to eq true
4
+ it 'defines the null class only when accessing it for the first time (ie: with a .null or .null_class call)' do
5
+ expect(Object.const_defined? 'NullPost').to be_falsey
6
+ expect(Object.const_defined? 'NullMicroPost').to be_falsey
7
+ expect(Post.null).to be_instance_of(NullPost)
8
+ expect(MicroPost.null_class).to eq NullMicroPost
9
+ expect(Object.const_defined? 'NullPost').to be_truthy
10
+ expect(Object.const_defined? 'NullMicroPost').to be_truthy
11
+ end
12
+
13
+ describe '.null_class' do
14
+ specify { expect(MicroPost.null_class).to eq NullMicroPost }
6
15
  end
7
16
 
8
17
  describe '.null' do
9
18
  specify { expect(Post.null).to be_instance_of(NullPost) }
19
+ specify { expect(MicroPost.null).to be_instance_of(NullMicroPost) }
10
20
  specify { expect(Test::TestModel.null).to be_instance_of(Test::NullTestModel) }
11
21
  end
12
22
 
@@ -17,6 +27,8 @@ describe ActiveNull do
17
27
  describe 'a has many' do
18
28
  specify { expect(Post.null.comments).to eq [] }
19
29
  specify { expect(Post.null.comments).to be_instance_of(Comment::ActiveRecord_Relation) }
30
+ specify { expect(MicroPost.null.comments).to eq [] }
31
+ specify { expect(MicroPost.null.comments).to be_instance_of(Comment::ActiveRecord_Relation) }
20
32
  end
21
33
 
22
34
  describe 'a belongs to' do
@@ -8,6 +8,11 @@ class Post < ActiveRecord::Base
8
8
  end
9
9
  end
10
10
 
11
+ class MicroPost < Post
12
+ extend ActiveNull
13
+ null_model
14
+ end
15
+
11
16
  class Comment < ActiveRecord::Base
12
17
  extend ActiveNull
13
18
  belongs_to :post
@@ -3,6 +3,7 @@ ActiveRecord::Schema.define do
3
3
 
4
4
  create_table :posts, force: true do |t|
5
5
  t.string :title
6
+ t.string :_type
6
7
  t.timestamps
7
8
  end
8
9
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_null
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - alexpeachey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-11 00:00:00.000000000 Z
11
+ date: 2015-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: naught
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  version: '0'
151
151
  requirements: []
152
152
  rubyforge_project:
153
- rubygems_version: 2.2.2
153
+ rubygems_version: 2.4.5
154
154
  signing_key:
155
155
  specification_version: 4
156
156
  summary: Make ActiveRecord null model aware.