acts_as_status_for 2.1.0 → 3.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/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.0
1
+ 3.0.3
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{acts_as_status_for}
8
- s.version = "2.1.0"
8
+ s.version = "3.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Curtis Schofield"]
@@ -98,6 +98,35 @@ module ActsAsStatusFor
98
98
  end
99
99
 
100
100
  module InstanceMethods
101
+ def status_including_method(method)
102
+ if method =~ /status_including_(.+)/
103
+ $1
104
+ else
105
+ nil
106
+ end
107
+ end
108
+
109
+ def respond_to_missing?(method,include_private)
110
+ ! status_including_method(method).nil?
111
+ end
112
+
113
+ def statuses_including(status_list)
114
+ has_condition = self.class
115
+ status_list.each do |state|
116
+ has_condition = has_condition.where(self.class.arel_table["#{state}_at".to_sym].not_eq(nil))
117
+ end
118
+ has_condition
119
+ end
120
+
121
+ def method_missing(method,*rest,&block)
122
+ includes = status_including_method(method)
123
+ if not includes.blank?
124
+ statuses_including(includes.split('_and_'))
125
+ else
126
+ super
127
+ end
128
+ end
129
+
101
130
  def current_status
102
131
  status.split(' ').first or ''
103
132
  end
@@ -78,7 +78,32 @@ describe ActsAsStatusFor do
78
78
  subject.current_status.should == ''
79
79
  end
80
80
  end
81
-
81
+ context "#status_including_" do
82
+ it "#respond_to? :status_including_archived" do
83
+ subject.respond_to? :status_including_archived
84
+ end
85
+ it "archived" do
86
+ subject.status_including_archived.should_not include(subject)
87
+ subject.archived!
88
+ subject.status_including_archived.should include(subject)
89
+ end
90
+ it "archived_and_featured" do
91
+ subject.status_including_archived_and_featured.should_not include(subject)
92
+ subject.archived!
93
+ subject.status_including_archived_and_featured.should_not include(subject)
94
+ subject.featured!
95
+ subject.status_including_archived_and_featured.should include(subject)
96
+ end
97
+ it "archived_and_featured_and_on_hold" do
98
+ subject.status_including_archived_and_featured_and_on_hold.should_not include(subject)
99
+ subject.archived!
100
+ subject.status_including_archived_and_featured_and_on_hold.should_not include(subject)
101
+ subject.featured!
102
+ subject.status_including_archived_and_featured_and_on_hold.should_not include(subject)
103
+ subject.on_hold!
104
+ subject.status_including_archived_and_featured_and_on_hold.should include(subject)
105
+ end
106
+ end
82
107
  context "#status" do
83
108
  before do
84
109
  Thing.instance_eval do
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: acts_as_status_for
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 2.1.0
5
+ version: 3.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Curtis Schofield
@@ -116,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - ">="
118
118
  - !ruby/object:Gem::Version
119
- hash: -3085350057681311933
119
+ hash: 550898432098812955
120
120
  segments:
121
121
  - 0
122
122
  version: "0"