fact_checker 0.0.2 → 0.0.3

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.
data/examples/basic.rb CHANGED
@@ -14,7 +14,7 @@ end
14
14
 
15
15
  target = BasicExample.new
16
16
 
17
- def target.my_requirement?; false end
17
+ def target.my_requirement?; false; end
18
18
 
19
19
  p target.fact_possible? :be
20
20
  # => true
data/fact_checker.gemspec CHANGED
@@ -23,8 +23,8 @@ Gem::Specification.new do |s|
23
23
  s.required_ruby_version = ">= 1.8.7"
24
24
  s.required_rubygems_version = ">= 1.3.5"
25
25
 
26
- s.add_development_dependency 'rspec', '~> 2.8.0'
27
26
  s.add_development_dependency 'rake'
28
27
  s.add_development_dependency 'bundler'
28
+ s.add_development_dependency 'rspec', '~> 2.9.0'
29
29
  s.add_development_dependency 'simplecov', '~> 0.6.1'
30
30
  end
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+
3
+ module FactChecker
4
+ def self.included(klass)
5
+ klass.extend ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ def inherited(child)
10
+ child.instance_variable_set('@fact_checker', fact_checker.dup)
11
+ end
12
+
13
+ def def_fact(*opts)
14
+ symbolic_fact_name = fact_checker.def_fact(*opts)
15
+ fact_name = symbolic_fact_name.to_s + '?'
16
+ unless fact_name.start_with? '_'
17
+ define_method(fact_name) { fact_accomplished?(symbolic_fact_name) }
18
+ end
19
+ end
20
+
21
+ def fact_checker
22
+ @fact_checker ||= FactChecker::Base.new
23
+ end
24
+ end
25
+
26
+ # Delegate methods to self.class.fact_checker
27
+ [:fact_accomplished?, :fact_possible?, :accomplished_facts, :possible_facts].each do |name|
28
+ define_method(name) { |*opts| self.class.fact_checker.send(name, self, *opts) }
29
+ end
30
+ def facts; self.class.fact_checker.facts; end
31
+ end
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module FactChecker
4
- VERSION = "0.0.2"
4
+ VERSION = '0.0.3'
5
5
  end
data/lib/fact_checker.rb CHANGED
@@ -1,31 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
- require "fact_checker/base"
4
- require "fact_checker/version"
5
-
6
- module FactChecker
7
- def self.included(klass)
8
- klass.extend ClassMethods
9
- end
10
-
11
- module ClassMethods
12
- def inherited(child)
13
- child.instance_variable_set('@fact_checker', fact_checker.dup)
14
- end
15
-
16
- def def_fact(*opts)
17
- fact_name = fact_checker.def_fact(*opts)
18
- define_method(fact_name.to_s << '?') { fact_accomplished?(fact_name) }
19
- end
20
-
21
- def fact_checker
22
- @fact_checker ||= FactChecker::Base.new
23
- end
24
- end
25
-
26
- # Delegate methods to self.class.fact_checker
27
- [:fact_accomplished?, :fact_possible?, :accomplished_facts, :possible_facts].each do |name|
28
- define_method(name) { |*opts| self.class.fact_checker.send(name, self, *opts) }
29
- end
30
- def facts; self.class.fact_checker.facts; end
31
- end
3
+ require 'fact_checker/base'
4
+ require 'fact_checker/version'
5
+ require 'fact_checker/boot'
@@ -12,47 +12,47 @@ describe 'FactCheckerInheritance' do
12
12
  describe 'context for inherited facts' do
13
13
  let(:target) { ChildOfClassWithFacts.new }
14
14
 
15
- context 'inherited bare fact', :fact => :bare_fact do
15
+ context 'inherited bare fact', fact: :bare_fact do
16
16
  it_behaves_like 'an accomplished fact', true
17
17
  it_behaves_like 'a possible fact', true
18
18
  end
19
19
 
20
- context 'inherited true fact with no dependencies', :fact => :true_fact_with_no_dependencies do
20
+ context 'inherited true fact with no dependencies', fact: :true_fact_with_no_dependencies do
21
21
  it_behaves_like 'an accomplished fact', true
22
22
  it_behaves_like 'a possible fact', true
23
23
  end
24
24
 
25
- context 'inherited true fact with true dependencies', :fact => :true_fact_with_true_dependencies do
25
+ context 'inherited true fact with true dependencies', fact: :true_fact_with_true_dependencies do
26
26
  it_behaves_like 'an accomplished fact', true
27
27
  it_behaves_like 'a possible fact', true
28
28
  end
29
29
 
30
- context 'inherited true fact with false dependencies', :fact => :true_fact_with_false_dependencies do
30
+ context 'inherited true fact with false dependencies', fact: :true_fact_with_false_dependencies do
31
31
  it_behaves_like 'an accomplished fact', false
32
32
  it_behaves_like 'a possible fact', false
33
33
  end
34
34
 
35
- context 'inherited false fact with no dependencies', :fact => :false_fact_with_no_dependencies do
35
+ context 'inherited false fact with no dependencies', fact: :false_fact_with_no_dependencies do
36
36
  it_behaves_like 'an accomplished fact', false
37
37
  it_behaves_like 'a possible fact', true
38
38
  end
39
39
 
40
- context 'inherited false fact with true dependencies', :fact => :false_fact_with_true_dependencies do
40
+ context 'inherited false fact with true dependencies', fact: :false_fact_with_true_dependencies do
41
41
  it_behaves_like 'an accomplished fact', false
42
42
  it_behaves_like 'a possible fact', true
43
43
  end
44
44
 
45
- context 'inherited false fact with false dependencies', :fact => :false_fact_with_false_dependencies do
45
+ context 'inherited false fact with false dependencies', fact: :false_fact_with_false_dependencies do
46
46
  it_behaves_like 'an accomplished fact', false
47
47
  it_behaves_like 'a possible fact', false
48
48
  end
49
49
 
50
50
  specify '#facts' do
51
- target.facts.size.should == 7
51
+ target.facts.size.should == 8
52
52
  end
53
53
 
54
54
  specify '#accomplished_facts' do
55
- target.accomplished_facts.should == [ :bare_fact, :true_fact_with_no_dependencies, :true_fact_with_true_dependencies ]
55
+ target.accomplished_facts.should == [ :bare_fact, :true_fact_with_no_dependencies, :true_fact_with_true_dependencies, :_private_fact ]
56
56
  end
57
57
 
58
58
  specify '#possible_facts' do
@@ -2,8 +2,10 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- describe 'FactChecker' do
5
+ describe FactChecker do
6
6
  describe ClassWithNoFacts do
7
+ subject { ClassWithNoFacts.new }
8
+
7
9
  its(:facts) { should == [] }
8
10
  its(:possible_facts) { should == [] }
9
11
  its(:accomplished_facts) { should == [] }
@@ -23,47 +25,58 @@ describe 'FactChecker' do
23
25
  describe 'context for facts' do
24
26
  let(:target) { ClassWithFacts.new }
25
27
 
26
- context 'given bare fact', :fact => :bare_fact do
28
+ context 'given private fact', fact: :_private_fact do
29
+ specify 'private fact included in #facts' do
30
+ target.facts.should include example.metadata[:fact]
31
+ end
32
+
33
+ specify 'private fact does not have a predicate method' do
34
+ target.methods(true).should_not include example.metadata[:fact]
35
+ -> { target.send(example.metadata[:fact].to_s + '?') }.should raise_error NoMethodError
36
+ end
37
+ end
38
+
39
+ context 'given bare fact', fact: :bare_fact do
27
40
  it_behaves_like 'an accomplished fact', true
28
41
  it_behaves_like 'a possible fact', true
29
42
  end
30
43
 
31
- context 'given true fact with no dependencies', :fact => :true_fact_with_no_dependencies do
44
+ context 'given true fact with no dependencies', fact: :true_fact_with_no_dependencies do
32
45
  it_behaves_like 'an accomplished fact', true
33
46
  it_behaves_like 'a possible fact', true
34
47
  end
35
48
 
36
- context 'given true fact with true dependencies', :fact => :true_fact_with_true_dependencies do
49
+ context 'given true fact with true dependencies', fact: :true_fact_with_true_dependencies do
37
50
  it_behaves_like 'an accomplished fact', true
38
51
  it_behaves_like 'a possible fact', true
39
52
  end
40
53
 
41
- context 'given true fact with false dependencies', :fact => :true_fact_with_false_dependencies do
54
+ context 'given true fact with false dependencies', fact: :true_fact_with_false_dependencies do
42
55
  it_behaves_like 'an accomplished fact', false
43
56
  it_behaves_like 'a possible fact', false
44
57
  end
45
58
 
46
- context 'given false fact with no dependencies', :fact => :false_fact_with_no_dependencies do
59
+ context 'given false fact with no dependencies', fact: :false_fact_with_no_dependencies do
47
60
  it_behaves_like 'an accomplished fact', false
48
61
  it_behaves_like 'a possible fact', true
49
62
  end
50
63
 
51
- context 'given false fact with true dependencies', :fact => :false_fact_with_true_dependencies do
64
+ context 'given false fact with true dependencies', fact: :false_fact_with_true_dependencies do
52
65
  it_behaves_like 'an accomplished fact', false
53
66
  it_behaves_like 'a possible fact', true
54
67
  end
55
68
 
56
- context 'given false fact with false dependencies', :fact => :false_fact_with_false_dependencies do
69
+ context 'given false fact with false dependencies', fact: :false_fact_with_false_dependencies do
57
70
  it_behaves_like 'an accomplished fact', false
58
71
  it_behaves_like 'a possible fact', false
59
72
  end
60
73
 
61
74
  specify '#facts' do
62
- target.facts.size.should == 7
75
+ target.facts.size.should be 8
63
76
  end
64
77
 
65
78
  specify '#accomplished_facts' do
66
- target.accomplished_facts.should == [ :bare_fact, :true_fact_with_no_dependencies, :true_fact_with_true_dependencies ]
79
+ target.accomplished_facts.should == [ :bare_fact, :true_fact_with_no_dependencies, :true_fact_with_true_dependencies, :_private_fact ]
67
80
  end
68
81
 
69
82
  specify '#possible_facts' do
@@ -16,6 +16,8 @@ class ClassWithFacts
16
16
  def_fact :false_fact_with_no_dependencies, :if => lambda { false }
17
17
  def_fact :false_fact_with_true_dependencies => :bare_fact , :if => lambda { false }
18
18
  def_fact :false_fact_with_false_dependencies => :false_fact_with_no_dependencies , :if => lambda { false }
19
+
20
+ def_fact :_private_fact
19
21
  end
20
22
 
21
23
  class ChildOfClassWithFacts < ClassWithFacts
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fact_checker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,22 +10,22 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-03-09 00:00:00.000000000 Z
13
+ date: 2012-05-03 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: rspec
17
- requirement: &2156208200 !ruby/object:Gem::Requirement
16
+ name: rake
17
+ requirement: &84289010 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
- - - ~>
20
+ - - ! '>='
21
21
  - !ruby/object:Gem::Version
22
- version: 2.8.0
22
+ version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *2156208200
25
+ version_requirements: *84289010
26
26
  - !ruby/object:Gem::Dependency
27
- name: rake
28
- requirement: &2156206880 !ruby/object:Gem::Requirement
27
+ name: bundler
28
+ requirement: &84288670 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,21 +33,21 @@ dependencies:
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *2156206880
36
+ version_requirements: *84288670
37
37
  - !ruby/object:Gem::Dependency
38
- name: bundler
39
- requirement: &2156204720 !ruby/object:Gem::Requirement
38
+ name: rspec
39
+ requirement: &84288420 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
- - - ! '>='
42
+ - - ~>
43
43
  - !ruby/object:Gem::Version
44
- version: '0'
44
+ version: 2.9.0
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *2156204720
47
+ version_requirements: *84288420
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: simplecov
50
- requirement: &2156219360 !ruby/object:Gem::Requirement
50
+ requirement: &84288090 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,7 +55,7 @@ dependencies:
55
55
  version: 0.6.1
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *2156219360
58
+ version_requirements: *84288090
59
59
  description: Simple gem to check hierarchically dependent "facts" about objects
60
60
  email:
61
61
  - alexisowl+fact_checker@gmail.com
@@ -73,6 +73,7 @@ files:
73
73
  - fact_checker.gemspec
74
74
  - lib/fact_checker.rb
75
75
  - lib/fact_checker/base.rb
76
+ - lib/fact_checker/boot.rb
76
77
  - lib/fact_checker/version.rb
77
78
  - spec/fact_checker/base_spec.rb
78
79
  - spec/fact_checker/version_spec.rb
@@ -102,16 +103,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
103
  version: 1.3.5
103
104
  requirements: []
104
105
  rubyforge_project: fact_checker
105
- rubygems_version: 1.8.17
106
+ rubygems_version: 1.8.10
106
107
  signing_key:
107
108
  specification_version: 3
108
109
  summary: Checks facts which may depend on other facts
109
- test_files:
110
- - spec/fact_checker/base_spec.rb
111
- - spec/fact_checker/version_spec.rb
112
- - spec/fact_checker_inheritance_spec.rb
113
- - spec/fact_checker_spec.rb
114
- - spec/spec.rake
115
- - spec/spec_helper.rb
116
- - spec/support/classes_with_facts.rb
117
- - spec/support/shared_facts_behaviour.rb
110
+ test_files: []
111
+ has_rdoc: