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