hiccup 0.0.0 → 0.2.0
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/Rakefile +9 -1
- data/hiccup.gemspec +8 -2
- data/lib/hiccup.rb +69 -1
- data/lib/hiccup/convenience.rb +28 -0
- data/lib/hiccup/core_ext/date.rb +29 -0
- data/lib/hiccup/core_ext/duration.rb +25 -0
- data/lib/hiccup/core_ext/fixnum.rb +37 -0
- data/lib/hiccup/enumerable.rb +230 -0
- data/lib/hiccup/humanizable.rb +68 -0
- data/lib/hiccup/schedule.rb +42 -0
- data/lib/hiccup/serializable/ical.rb +39 -0
- data/lib/hiccup/serializers/ical.rb +189 -0
- data/lib/hiccup/validatable.rb +110 -0
- data/lib/hiccup/version.rb +1 -1
- data/test/enumerable_test.rb +283 -0
- data/test/humanizable_test.rb +70 -0
- data/test/ical_serializable_test.rb +92 -0
- data/test/test_helper.rb +6 -0
- data/test/validatable_test.rb +81 -0
- metadata +68 -6
data/test/test_helper.rb
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
|
4
|
+
class ValidatableTest < ActiveSupport::TestCase
|
5
|
+
include Hiccup
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
def test_invalid_recurrence
|
10
|
+
# Test nil weekly recurrence
|
11
|
+
r = Schedule.new(:kind => :weekly)
|
12
|
+
assert !r.valid?, "Recurrence should be invalid: pattern is empty"
|
13
|
+
assert r.errors[:pattern].any?, "pattern should be invalid if empty and kind is 'weekly'"
|
14
|
+
|
15
|
+
# Test nil monthly recurrence
|
16
|
+
r = Schedule.new(:kind => :monthly)
|
17
|
+
assert !r.valid?, "Recurrence should be invalid: pattern is empty"
|
18
|
+
assert r.errors[:pattern].any?, "pattern should be invalid if empty and kind is 'monthly'"
|
19
|
+
|
20
|
+
# Test invalid monthly recurrence
|
21
|
+
r = Schedule.new(:kind => :monthly, :pattern => [[2, "holiday"]])
|
22
|
+
assert !r.valid?, "Recurrence should be invalid: pattern is invalid"
|
23
|
+
assert r.errors[:pattern].any?, "pattern should be invalid: 'holiday' is not a valid MonthlyOccurrenceType"
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
def test_temporal_paradoxes
|
29
|
+
recurrence = Schedule.new({
|
30
|
+
:kind => :annually,
|
31
|
+
:ends => true,
|
32
|
+
:start_date => Date.today,
|
33
|
+
:end_date => 5.years.since(Date.today).to_date
|
34
|
+
})
|
35
|
+
assert_valid(recurrence)
|
36
|
+
recurrence = Schedule.new({
|
37
|
+
:kind => :annually,
|
38
|
+
:ends => true,
|
39
|
+
:start_date => Date.today,
|
40
|
+
:end_date => -5.years.since(Date.today).to_date
|
41
|
+
})
|
42
|
+
assert !recurrence.valid?, "Recurrence should be invalid: its recurrence ends before it starts"
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
def test_valid_weekly_recurrence
|
48
|
+
recurrence = Schedule.new(:kind => :weekly, :pattern => %w[Tuesday])
|
49
|
+
assert_valid(recurrence)
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
def test_valid_monthly_recurrence
|
55
|
+
recurrence = Schedule.new(:kind => :monthly, :pattern => [2])
|
56
|
+
assert_valid(recurrence)
|
57
|
+
|
58
|
+
recurrence = Schedule.new(:kind => :monthly, :pattern => [[2, "Thursday"]])
|
59
|
+
assert_valid(recurrence)
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
def test_valid_annual_recurrence
|
65
|
+
recurrence = Schedule.new(:kind => :annually)
|
66
|
+
assert_valid(recurrence)
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
def assert_valid(record)
|
76
|
+
assert record.valid?, record.errors.inspect
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: hiccup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Bob Lail
|
@@ -10,10 +10,53 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-08-
|
13
|
+
date: 2011-08-25 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
|
-
dependencies:
|
16
|
-
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: activesupport
|
18
|
+
prerelease: false
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: "0"
|
25
|
+
type: :runtime
|
26
|
+
version_requirements: *id001
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: ri_cal
|
29
|
+
prerelease: false
|
30
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: "0"
|
36
|
+
type: :development
|
37
|
+
version_requirements: *id002
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: rails
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: "0"
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id003
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: turn
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: "0"
|
58
|
+
type: :development
|
59
|
+
version_requirements: *id004
|
17
60
|
description: Recurrence features a-la-cart
|
18
61
|
email:
|
19
62
|
- bob.lailfamily@gmail.com
|
@@ -29,7 +72,22 @@ files:
|
|
29
72
|
- Rakefile
|
30
73
|
- hiccup.gemspec
|
31
74
|
- lib/hiccup.rb
|
75
|
+
- lib/hiccup/convenience.rb
|
76
|
+
- lib/hiccup/core_ext/date.rb
|
77
|
+
- lib/hiccup/core_ext/duration.rb
|
78
|
+
- lib/hiccup/core_ext/fixnum.rb
|
79
|
+
- lib/hiccup/enumerable.rb
|
80
|
+
- lib/hiccup/humanizable.rb
|
81
|
+
- lib/hiccup/schedule.rb
|
82
|
+
- lib/hiccup/serializable/ical.rb
|
83
|
+
- lib/hiccup/serializers/ical.rb
|
84
|
+
- lib/hiccup/validatable.rb
|
32
85
|
- lib/hiccup/version.rb
|
86
|
+
- test/enumerable_test.rb
|
87
|
+
- test/humanizable_test.rb
|
88
|
+
- test/ical_serializable_test.rb
|
89
|
+
- test/test_helper.rb
|
90
|
+
- test/validatable_test.rb
|
33
91
|
has_rdoc: true
|
34
92
|
homepage: http://boblail.github.com/hiccup/
|
35
93
|
licenses: []
|
@@ -58,5 +116,9 @@ rubygems_version: 1.6.2
|
|
58
116
|
signing_key:
|
59
117
|
specification_version: 3
|
60
118
|
summary: Recurrence features a-la-cart
|
61
|
-
test_files:
|
62
|
-
|
119
|
+
test_files:
|
120
|
+
- test/enumerable_test.rb
|
121
|
+
- test/humanizable_test.rb
|
122
|
+
- test/ical_serializable_test.rb
|
123
|
+
- test/test_helper.rb
|
124
|
+
- test/validatable_test.rb
|