summaryrefslogtreecommitdiff
path: root/test/models/event_test.rb
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-06-27 22:52:50 +0200
committererdgeist <erdgeist@erdgeist.org>2026-06-27 22:52:50 +0200
commit9a19a0494ef51cdac9a78e24d517ca48ba44c453 (patch)
tree8eaae12d8047a40e29d3ea7ff3116b5c869e04bd /test/models/event_test.rb
parent85a01e35274b8d4d4165a7b26bd7986e211246bb (diff)
parent1853082fcd8c067390c246f9daa01a9b47387497 (diff)
Migration from Rails 2.3.5 to Rails 8.1 successful.
Merging dev branch.
Diffstat (limited to 'test/models/event_test.rb')
-rw-r--r--test/models/event_test.rb114
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 @@
1require 'test_helper'
2
3class 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
114end \ No newline at end of file