acts_as_status_for 1.1.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -37,9 +37,8 @@ RSpec::Core::RakeTask.new(:rcov) do |spec|
37
37
  end
38
38
 
39
39
  task :default => :spec
40
-
41
- require 'rake/rdoctask'
42
- Rake::RDocTask.new do |rdoc|
40
+ require 'rdoc/task'
41
+ RDoc::Task.new do |rdoc|
43
42
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
44
43
 
45
44
  rdoc.rdoc_dir = 'rdoc'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.2
1
+ 2.0.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{acts_as_status_for}
8
- s.version = "1.1.2"
8
+ s.version = "2.0.0"
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"]
12
- s.date = %q{2011-06-15}
12
+ s.date = %q{2011-06-27}
13
13
  s.description = %q{Given a list of datetime _at attributes }
14
14
  s.email = %q{github.com@robotarmyma.de}
15
15
  s.extra_rdoc_files = [
@@ -71,7 +71,10 @@ module ActsAsStatusFor
71
71
  end
72
72
 
73
73
  module InstanceMethods
74
-
74
+ def current_status
75
+ status.split(' ').first or ''
76
+ end
77
+
75
78
  def status=(event_string)
76
79
  case event_string
77
80
  when ''
@@ -79,20 +82,21 @@ module ActsAsStatusFor
79
82
  self.send("#{event}!") if self.respond_to?("#{event}!")
80
83
  end
81
84
  else
82
- event_string.split(' ').each do | event |
85
+ event_string.split(' ').each do | event |
83
86
  if self.class.all_at_events.include?(event.to_sym)
84
87
  self.send("#{event}!") if self.respond_to?("#{event}!")
85
88
  end
86
89
  end
87
90
  end
88
91
  end
89
-
92
+ alias :current_status= :status=
90
93
  def status
91
- status = []
94
+ status_time = {}
92
95
  self.class.on_at_events.each do | event |
93
- status << event.to_s if self.send("#{event}?")
96
+ time = self.send("#{event}_at")
97
+ status_time[event] = time unless time.nil?
94
98
  end
95
- status.join(' ')
99
+ status_time.sort { |a,b| b.last <=> a.last }.collect(&:first).join(' ')
96
100
  end
97
101
  end
98
102
  end
@@ -40,16 +40,56 @@ describe ActsAsStatusFor do
40
40
  end
41
41
  end
42
42
 
43
+ context "#current_status" do
44
+ it 'has a setter' do
45
+ subject.current_status = 'on_hold'
46
+ subject.on_hold?.should be_true
47
+ end
48
+
49
+ it 'reveals the last status set' do
50
+ subject.on_hold!
51
+ subject.current_status.should == 'on_hold'
52
+ end
53
+
54
+ it 'can be wound and unwound' do
55
+ subject.on_hold!
56
+ subject.current_status.should == 'on_hold'
57
+ subject.archived!
58
+ subject.current_status.should == 'archived'
59
+ subject.featured!
60
+ subject.current_status.should == 'featured'
61
+ subject.not_featured!
62
+ subject.current_status.should == 'archived'
63
+ subject.not_archived!
64
+ subject.current_status.should == 'on_hold'
65
+ subject.not_on_hold!
66
+ subject.current_status.should == ''
67
+ end
68
+ end
69
+
43
70
  context "#status" do
44
71
  before do
45
72
  Thing.instance_eval do
46
73
  acts_as_status_for :on_hold, :archived, :featured
47
74
  end
48
75
  end
76
+
49
77
  it "defaults to ''" do
50
78
  subject.status.should == ''
51
79
  end
52
80
 
81
+ it "is sorted by event time" do
82
+ subject.on_hold!
83
+ subject.status.should == 'on_hold'
84
+ subject.archived!
85
+ subject.status.should == 'archived on_hold'
86
+ subject.featured!
87
+ subject.status.should == 'featured archived on_hold'
88
+ subject.not_on_hold!
89
+ subject.on_hold!
90
+ subject.status.should == 'on_hold featured archived'
91
+ end
92
+
53
93
  it "setting it to blank clears all states" do
54
94
  subject.on_hold!
55
95
  subject.archived!
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: 1.1.2
5
+ version: 2.0.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Curtis Schofield
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-06-15 00:00:00 -07:00
13
+ date: 2011-06-27 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -116,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - ">="
118
118
  - !ruby/object:Gem::Version
119
- hash: -1793902867723768599
119
+ hash: 1247048969588569045
120
120
  segments:
121
121
  - 0
122
122
  version: "0"