diff options
| author | hukl <contact@smyck.org> | 2009-03-16 20:58:49 +0100 |
|---|---|---|
| committer | hukl <contact@smyck.org> | 2009-03-18 12:16:59 +0100 |
| commit | d2bfbfd2810fbee673e43b2515db8bac527b3441 (patch) | |
| tree | 1b46e8af44c871290a7a74ab17a8c7201e22f7a9 /test/unit | |
| parent | d957a33a0d50f00c1968c5d12e728bd73ea186b3 (diff) | |
Refactored Chaos Calendar by wrapping libical and introducing event and occurrence model. More improvements to come. Enables us to create events with reoccurrence and intervals etc.
Diffstat (limited to 'test/unit')
| -rw-r--r-- | test/unit/event_test.rb | 119 | ||||
| -rw-r--r-- | test/unit/helpers/events_helper_test.rb | 4 | ||||
| -rw-r--r-- | test/unit/helpers/occurrences_helper_test.rb | 4 | ||||
| -rw-r--r-- | test/unit/occurrence_test.rb | 8 |
4 files changed, 135 insertions, 0 deletions
diff --git a/test/unit/event_test.rb b/test/unit/event_test.rb new file mode 100644 index 0000000..8d51b1a --- /dev/null +++ b/test/unit/event_test.rb | |||
| @@ -0,0 +1,119 @@ | |||
| 1 | require 'test_helper' | ||
| 2 | |||
| 3 | class EventTest < ActiveSupport::TestCase | ||
| 4 | |||
| 5 | def setup | ||
| 6 | Page.delete_all | ||
| 7 | @cal_node = Node.create :slug => "calendar" | ||
| 8 | @cal_node.move_to_child_of Node.root | ||
| 9 | @draft = @cal_node.find_or_create_draft User.first | ||
| 10 | @draft.title = "99C3" | ||
| 11 | @draft.abstract = "The 99th Chaos Comunication Congress" | ||
| 12 | @draft.body = "Its totally freakin awesome" | ||
| 13 | @draft.save | ||
| 14 | @cal_node.publish_draft! | ||
| 15 | @cal_node.head.reload | ||
| 16 | end | ||
| 17 | |||
| 18 | test 'verfy setup data' do | ||
| 19 | assert_not_nil @cal_node | ||
| 20 | assert_not_nil @cal_node.head | ||
| 21 | end | ||
| 22 | |||
| 23 | test 'creating an event with malformed rrule raises exception' do | ||
| 24 | assert_raise(ArgumentError) do | ||
| 25 | Event.create!( | ||
| 26 | :start_time => "2009-01-01T15:23:42".to_time, | ||
| 27 | :end_time => "2009-01-01T20:05:23".to_time, | ||
| 28 | :url => "http://events.ccc.de/congress/2082", | ||
| 29 | :latitude => 52.525308, | ||
| 30 | :longitude => 13.378944, | ||
| 31 | :rrule => "FOOBAR", | ||
| 32 | :allday => false, | ||
| 33 | :custom_rrule => false, | ||
| 34 | :node_id => @cal_node.id | ||
| 35 | ) | ||
| 36 | end | ||
| 37 | end | ||
| 38 | |||
| 39 | test 'create day event for node with one occurrence' do | ||
| 40 | assert_not_nil event = Event.create!( | ||
| 41 | :start_time => "2009-01-01T15:23:42".to_time, | ||
| 42 | :end_time => "2009-01-01T20:05:23".to_time, | ||
| 43 | :url => "http://events.ccc.de/congress/2082", | ||
| 44 | :latitude => 52.525308, | ||
| 45 | :longitude => 13.378944, | ||
| 46 | :rrule => nil, | ||
| 47 | :allday => false, | ||
| 48 | :custom_rrule => false, | ||
| 49 | :node_id => @cal_node.id | ||
| 50 | ) | ||
| 51 | |||
| 52 | assert_equal 1, Occurrence.count | ||
| 53 | assert_equal event.start_time, Occurrence.first.start_time | ||
| 54 | assert_equal event.end_time, Occurrence.first.end_time | ||
| 55 | assert_equal @cal_node.head.title, Occurrence.first.summary | ||
| 56 | end | ||
| 57 | |||
| 58 | test 'create day event with weekly reoccurrence and checking data' do | ||
| 59 | assert_not_nil event = Event.create!( | ||
| 60 | :start_time => "2009-01-01T15:23:42".to_time, | ||
| 61 | :end_time => "2009-01-01T20:05:23".to_time, | ||
| 62 | :url => "http://events.ccc.de/congress/2082", | ||
| 63 | :latitude => 52.525308, | ||
| 64 | :longitude => 13.378944, | ||
| 65 | :rrule => "FREQ=WEEKLY;INTERVAL=1", | ||
| 66 | :allday => false, | ||
| 67 | :custom_rrule => false, | ||
| 68 | :node_id => @cal_node.id | ||
| 69 | ) | ||
| 70 | |||
| 71 | assert_not_nil scoped_occurrences = event.occurrences_in_range( | ||
| 72 | "2009-01-01".to_time, "2009-12-31".to_time | ||
| 73 | ) | ||
| 74 | |||
| 75 | assert_equal 52, scoped_occurrences.length | ||
| 76 | |||
| 77 | assert_equal "2009-12-24T15:23:42".to_time, scoped_occurrences[51].start_time | ||
| 78 | assert_equal "2009-12-24T20:05:23".to_time, scoped_occurrences[51].end_time | ||
| 79 | assert_equal "99C3", scoped_occurrences[51].summary | ||
| 80 | assert_equal @cal_node.event, scoped_occurrences[51].event | ||
| 81 | assert_equal @cal_node, scoped_occurrences[51].node | ||
| 82 | |||
| 83 | assert_equal "2009-03-19T15:23:42".to_time, scoped_occurrences[11].start_time | ||
| 84 | assert_equal "2009-03-19T20:05:23".to_time, scoped_occurrences[11].end_time | ||
| 85 | assert_equal "99C3", scoped_occurrences[11].summary | ||
| 86 | assert_equal @cal_node.event, scoped_occurrences[11].event | ||
| 87 | assert_equal @cal_node, scoped_occurrences[11].node | ||
| 88 | |||
| 89 | assert_equal "2009-01-01T15:23:42".to_time, scoped_occurrences[0].start_time | ||
| 90 | assert_equal "2009-01-01T20:05:23".to_time, scoped_occurrences[0].end_time | ||
| 91 | assert_equal "99C3", scoped_occurrences[0].summary | ||
| 92 | assert_equal @cal_node.event, scoped_occurrences[11].event | ||
| 93 | assert_equal @cal_node, scoped_occurrences[11].node | ||
| 94 | end | ||
| 95 | |||
| 96 | test 'create chaosradio event with custom rrule and interval' do | ||
| 97 | assert_not_nil event = Event.create!( | ||
| 98 | :start_time => "2009-01-28T21:00:00".to_time, | ||
| 99 | :end_time => "2009-01-28T23:00:00".to_time, | ||
| 100 | :url => "http://chaosradio.ccc.de", | ||
| 101 | :latitude => 52.525308, | ||
| 102 | :longitude => 13.378944, | ||
| 103 | :rrule => "FREQ=MONTHLY;INTERVAL=1;BYDAY=-1WE", | ||
| 104 | :allday => false, | ||
| 105 | :custom_rrule => true, | ||
| 106 | :node_id => @cal_node.id | ||
| 107 | ) | ||
| 108 | |||
| 109 | assert_not_nil scoped_occurrences = event.occurrences_in_range( | ||
| 110 | "2009-01-01".to_time, "2009-12-31".to_time | ||
| 111 | ) | ||
| 112 | |||
| 113 | assert_equal 12, scoped_occurrences.length | ||
| 114 | |||
| 115 | expected_days = [28, 25, 25, 29, 27, 24, 29, 26, 30, 28, 25, 30] | ||
| 116 | chaosradio_days = scoped_occurrences.map {|x| x.start_time.day} | ||
| 117 | assert_equal expected_days, chaosradio_days | ||
| 118 | end | ||
| 119 | end \ No newline at end of file | ||
diff --git a/test/unit/helpers/events_helper_test.rb b/test/unit/helpers/events_helper_test.rb new file mode 100644 index 0000000..2e7567e --- /dev/null +++ b/test/unit/helpers/events_helper_test.rb | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | require 'test_helper' | ||
| 2 | |||
| 3 | class EventsHelperTest < ActionView::TestCase | ||
| 4 | end | ||
diff --git a/test/unit/helpers/occurrences_helper_test.rb b/test/unit/helpers/occurrences_helper_test.rb new file mode 100644 index 0000000..0692926 --- /dev/null +++ b/test/unit/helpers/occurrences_helper_test.rb | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | require 'test_helper' | ||
| 2 | |||
| 3 | class OccurrencesHelperTest < ActionView::TestCase | ||
| 4 | end | ||
diff --git a/test/unit/occurrence_test.rb b/test/unit/occurrence_test.rb new file mode 100644 index 0000000..91a78ec --- /dev/null +++ b/test/unit/occurrence_test.rb | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | require 'test_helper' | ||
| 2 | |||
| 3 | class OccurrenceTest < ActiveSupport::TestCase | ||
| 4 | # Replace this with your real tests. | ||
| 5 | test "the truth" do | ||
| 6 | assert true | ||
| 7 | end | ||
| 8 | end | ||
