acts_as_span 0.0.5

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.
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Span" do
4
+ before(:each) do
5
+ build_model :span_model do
6
+ date :start_date
7
+ date :end_date
8
+
9
+ acts_as_span
10
+ end
11
+ end
12
+
13
+ let(:span_model) { SpanModel.new(:start_date => Date.today, :end_date => nil) }
14
+ let(:span) { span_model.span }
15
+
16
+ context "#span_status & #span_status_to_s" do
17
+ before(:each) do
18
+ span.stub!(:current?).and_return(false)
19
+ span.stub!(:future?).and_return(false)
20
+ span.stub!(:expired?).and_return(false)
21
+ end
22
+
23
+ it "should return :unknown when all_conditions == false" do
24
+ span.span_status.should == :unknown
25
+ span.span_status_to_s.should == 'Unknown'
26
+ end
27
+
28
+ it "should return :current when current? == true" do
29
+ span.should_receive(:current?).twice.and_return(true)
30
+
31
+ span.span_status.should == :current
32
+ span.span_status_to_s.should == 'Current'
33
+ end
34
+
35
+ it "should return :current when future? == true" do
36
+ span.should_receive(:future?).twice.and_return(true)
37
+
38
+ span.span_status.should == :future
39
+ span.span_status_to_s.should == 'Future'
40
+ end
41
+
42
+ it "should return :current when expired? == true" do
43
+ span.should_receive(:expired?).twice.and_return(true)
44
+
45
+ span.span_status.should == :expired
46
+ span.span_status_to_s.should == 'Expired'
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Span" do
4
+ before(:each) do
5
+ build_model :span_model do
6
+ date :start_date
7
+ date :end_date
8
+ end
9
+ end
10
+
11
+ #let(:span_model) { SpanModel.new(:start_date => Date.today, :end_date => Date.today + 1) }
12
+ #let(:span) { span_model.span }
13
+
14
+ it "should be valid" do
15
+ SpanModel.acts_as_span
16
+ span_model = SpanModel.new(:start_date => nil, :end_date => nil)
17
+
18
+ span_model.should be_valid
19
+ end
20
+
21
+ context ":start_date_field_required => true" do
22
+ before do
23
+ SpanModel.acts_as_span :start_date_field_required => true
24
+ end
25
+
26
+ it "should require a start_date" do
27
+ span_model = SpanModel.new(:start_date => nil, :end_date => Date.today + 1)
28
+
29
+ span_model.should_not be_valid
30
+ span_model.errors[:start_date].should have(1).error
31
+ end
32
+ end
33
+
34
+ context ":end_date_field_required => true" do
35
+ before do
36
+ SpanModel.acts_as_span :end_date_field_required => true
37
+ end
38
+
39
+ it "should require an end_date" do
40
+ span_model = SpanModel.new(:start_date => Date.today, :end_date => nil)
41
+
42
+ span_model.should_not be_valid
43
+ span_model.errors[:end_date].should have(1).error
44
+ end
45
+ end
46
+
47
+ it "should require a start_date before the end_date" do
48
+ SpanModel.acts_as_span
49
+ span_model = SpanModel.new(:start_date => Date.today, :end_date => Date.today - 1)
50
+
51
+ span_model.should_not be_valid
52
+ span_model.errors[:end_date].should have(1).error
53
+ end
54
+ end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ #NOTE: we're also testing :start_date_field & :end_date_field options work
4
+
5
+ describe "Span" do
6
+ before(:each) do
7
+ build_model :span_model do
8
+ date :start_date_x
9
+ date :end_date_x
10
+
11
+ acts_as_span :start_date_field => :start_date_x,
12
+ :end_date_field => :end_date_x
13
+ end
14
+ end
15
+
16
+ context "#close!" do
17
+ let(:span_model) { SpanModel.new(:start_date_x => Date.today, :end_date_x => nil) }
18
+ let(:span) { span_model.span }
19
+
20
+ it "should set end_date? to today" do
21
+ lambda { span.close! }.should change(span_model, :end_date_x).from(nil).to(Date.today)
22
+ end
23
+
24
+ it "should set end_date? to the parameter" do
25
+ lambda { span.close_on!(Date.today + 1.day) }.should change(span_model, :end_date_x).from(nil).to(Date.today + 1.day)
26
+ end
27
+ end
28
+
29
+ context "start_date & end_date" do
30
+ let(:span_model) { SpanModel.new(:start_date_x => Date.today, :end_date_x => Date.today + 1) }
31
+ let(:span) { span_model.span }
32
+
33
+ it "should return the start_date" do
34
+ span.start_date.should == span_model.start_date_x
35
+ end
36
+
37
+ it "should return the end_date" do
38
+ span.end_date.should == span_model.end_date_x
39
+ end
40
+ end
41
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'acts_as_fu'
4
+ require 'active_support'
5
+
6
+ require 'acts_as_span'
7
+
8
+ RSpec.configure do |config|
9
+ config.include ActsAsFu
10
+ end
metadata ADDED
@@ -0,0 +1,112 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: acts_as_span
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.5
6
+ platform: ruby
7
+ authors:
8
+ - Eric Sullivan
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-08-28 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activerecord
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "3"
24
+ type: :runtime
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: activesupport
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :runtime
36
+ version_requirements: *id002
37
+ description: start_date and end_date as a span w/ ActiveRecord
38
+ email:
39
+ - eric.sullivan@annkissam.com
40
+ executables: []
41
+
42
+ extensions: []
43
+
44
+ extra_rdoc_files: []
45
+
46
+ files:
47
+ - .gitignore
48
+ - Gemfile
49
+ - Gemfile.lock
50
+ - LICENSE
51
+ - README.rdoc
52
+ - Rakefile
53
+ - acts_as_span.gemspec
54
+ - lib/acts_as_span.rb
55
+ - lib/acts_as_span/span_instance.rb
56
+ - lib/acts_as_span/span_instance/overlap.rb
57
+ - lib/acts_as_span/span_instance/status.rb
58
+ - lib/acts_as_span/span_instance/validations.rb
59
+ - lib/acts_as_span/span_klass.rb
60
+ - lib/acts_as_span/span_klass/overlap.rb
61
+ - lib/acts_as_span/span_klass/status.rb
62
+ - lib/acts_as_span/version.rb
63
+ - spec/lib/acts_as_span_spec.rb
64
+ - spec/lib/delegation_spec.rb
65
+ - spec/lib/negative_spec.rb
66
+ - spec/lib/span_instance/named_scopes_on_spec.rb
67
+ - spec/lib/span_instance/named_scopes_spec.rb
68
+ - spec/lib/span_instance/overlap_spec.rb
69
+ - spec/lib/span_instance/status_spec.rb
70
+ - spec/lib/span_instance/validations_spec.rb
71
+ - spec/lib/span_instance_spec.rb
72
+ - spec/spec.opts
73
+ - spec/spec_helper.rb
74
+ homepage: https://github.com/annkissam/acts_as_span
75
+ licenses: []
76
+
77
+ post_install_message:
78
+ rdoc_options: []
79
+
80
+ require_paths:
81
+ - lib
82
+ required_ruby_version: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: "0"
88
+ required_rubygems_version: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: "0"
94
+ requirements: []
95
+
96
+ rubyforge_project: acts_as_span
97
+ rubygems_version: 1.8.8
98
+ signing_key:
99
+ specification_version: 3
100
+ summary: acts_as_span 0.0.5
101
+ test_files:
102
+ - spec/lib/acts_as_span_spec.rb
103
+ - spec/lib/delegation_spec.rb
104
+ - spec/lib/negative_spec.rb
105
+ - spec/lib/span_instance/named_scopes_on_spec.rb
106
+ - spec/lib/span_instance/named_scopes_spec.rb
107
+ - spec/lib/span_instance/overlap_spec.rb
108
+ - spec/lib/span_instance/status_spec.rb
109
+ - spec/lib/span_instance/validations_spec.rb
110
+ - spec/lib/span_instance_spec.rb
111
+ - spec/spec.opts
112
+ - spec/spec_helper.rb