active_null 0.0.5 → 0.0.6

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: 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.