cyclical 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe Suboccurrence do
4
+ it "should create occurrence through factory method" do
5
+ i1 = Time.now..(Time.now + 1.hour)
6
+ i2 = (Time.now - 1.hour)..(Time.now + 2.hours)
7
+
8
+ Suboccurrence.find(:occurrence => i1, :interval => i2).should be_a(Suboccurrence)
9
+ end
10
+
11
+ it "should return nil when there no intersection" do
12
+ t = Time.now
13
+ s = Suboccurrence.find(:occurrence => t..(t+1.minute), :interval => (t+1.minute)..(t+2.minutes))
14
+ s.should be_nil
15
+
16
+ s = Suboccurrence.find(:occurrence => (t+1.minute)..(t+2.minutes), :interval => t..(t+1.minutes))
17
+ s.should be_nil
18
+ end
19
+
20
+ it "should return the later of the two starts" do
21
+ t = Time.now
22
+
23
+ s = Suboccurrence.find(:occurrence => t..(t+1.hour), :interval => (t+2.minutes)..(t+2.hours))
24
+ s.start.should == t+2.minutes
25
+
26
+ s = Suboccurrence.find(:occurrence => (t+2.minutes)..(t+2.hours), :interval => t..(t+1.hour))
27
+ s.start.should == t+2.minutes
28
+ end
29
+
30
+ it "should return the sooner of the two ends" do
31
+ t = Time.now
32
+
33
+ s = Suboccurrence.find(:occurrence => t..(t+1.hour), :interval => (t+2.minutes)..(t+2.hours))
34
+ s.end.should == t+1.hour
35
+
36
+ s = Suboccurrence.find(:occurrence => (t+2.minutes)..(t+2.hours), :interval => t..(t+1.hour))
37
+ s.end.should == t+1.hour
38
+ end
39
+
40
+ it "should report cutoffs" do
41
+ t = Time.now
42
+
43
+ s = Suboccurrence.find(:occurrence => t..(t+1.hour), :interval => (t+2.minutes)..(t+2.hours))
44
+ s.occurrence_start?.should_not be_true
45
+ s.occurrence_end?.should be_true
46
+
47
+ s = Suboccurrence.find(:occurrence => (t+2.minutes)..(t+2.hours), :interval => t..(t+1.hour))
48
+ s.occurrence_start?.should be_true
49
+ s.occurrence_end?.should_not be_true
50
+ end
51
+ end
metadata ADDED
@@ -0,0 +1,126 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cyclical
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Viktor Charypar
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-10-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: active_support
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: Cyclical lets you list recurring events with complex recurrence rules
47
+ like "every 4 years, the first Tuesday after a Monday in November" in a simple way.
48
+ email:
49
+ - charypar@gmail.com
50
+ executables: []
51
+ extensions: []
52
+ extra_rdoc_files: []
53
+ files:
54
+ - .gitignore
55
+ - .rspec
56
+ - Gemfile
57
+ - LICENSE
58
+ - README.md
59
+ - Rakefile
60
+ - cyclical.gemspec
61
+ - lib/cyclical.rb
62
+ - lib/cyclical/filters/monthdays_filter.rb
63
+ - lib/cyclical/filters/months_filter.rb
64
+ - lib/cyclical/filters/weekdays_filter.rb
65
+ - lib/cyclical/filters/yeardays_filter.rb
66
+ - lib/cyclical/occurrence.rb
67
+ - lib/cyclical/rule.rb
68
+ - lib/cyclical/rules/daily_rule.rb
69
+ - lib/cyclical/rules/monthly_rule.rb
70
+ - lib/cyclical/rules/weekly_rule.rb
71
+ - lib/cyclical/rules/yearly_rule.rb
72
+ - lib/cyclical/schedule.rb
73
+ - lib/cyclical/suboccurrence.rb
74
+ - lib/cyclical/version.rb
75
+ - spec/filters/monthdays_filter_spec.rb
76
+ - spec/filters/months_filter_spec.rb
77
+ - spec/filters/weekdays_filter_spec.rb
78
+ - spec/filters/yeardays_filter_spec.rb
79
+ - spec/occurrence_spec.rb
80
+ - spec/rule_dsl_spec.rb
81
+ - spec/rules/daily_rule_spec.rb
82
+ - spec/rules/monthly_rule_spec.rb
83
+ - spec/rules/weekly_rule_spec.rb
84
+ - spec/rules/yearly_rule_spec.rb
85
+ - spec/schedule_spec.rb
86
+ - spec/spec_helper.rb
87
+ - spec/suboccurrence_spec.rb
88
+ homepage: http://github.com/charypar/cyclical
89
+ licenses:
90
+ - MIT
91
+ post_install_message:
92
+ rdoc_options: []
93
+ require_paths:
94
+ - lib
95
+ required_ruby_version: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ! '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ requirements: []
108
+ rubyforge_project:
109
+ rubygems_version: 1.8.23
110
+ signing_key:
111
+ specification_version: 3
112
+ summary: Recurring events library for calendar applications.
113
+ test_files:
114
+ - spec/filters/monthdays_filter_spec.rb
115
+ - spec/filters/months_filter_spec.rb
116
+ - spec/filters/weekdays_filter_spec.rb
117
+ - spec/filters/yeardays_filter_spec.rb
118
+ - spec/occurrence_spec.rb
119
+ - spec/rule_dsl_spec.rb
120
+ - spec/rules/daily_rule_spec.rb
121
+ - spec/rules/monthly_rule_spec.rb
122
+ - spec/rules/weekly_rule_spec.rb
123
+ - spec/rules/yearly_rule_spec.rb
124
+ - spec/schedule_spec.rb
125
+ - spec/spec_helper.rb
126
+ - spec/suboccurrence_spec.rb