summaryrefslogtreecommitdiff
path: root/test/models
diff options
context:
space:
mode:
Diffstat (limited to 'test/models')
-rw-r--r--test/models/asset_test.rb23
-rw-r--r--test/models/event_test.rb114
-rw-r--r--test/models/helpers/admin_helper_test.rb4
-rw-r--r--test/models/helpers/assets_helper_test.rb4
-rw-r--r--test/models/helpers/content_helper_test.rb4
-rw-r--r--test/models/helpers/events_helper_test.rb4
-rw-r--r--test/models/helpers/menu_items_helper_test.rb4
-rw-r--r--test/models/helpers/nodes_helper_test.rb4
-rw-r--r--test/models/helpers/occurrences_helper_test.rb4
-rw-r--r--test/models/helpers/pages_helper_test.rb4
-rw-r--r--test/models/helpers/revisions_helper_test.rb4
-rw-r--r--test/models/helpers/rss_helper_test.rb4
-rw-r--r--test/models/helpers/search_helper_test.rb4
-rw-r--r--test/models/helpers/tags_helper_test.rb4
-rw-r--r--test/models/helpers/users_helper_test.rb4
-rw-r--r--test/models/menu_item_test.rb8
-rw-r--r--test/models/node_test.rb290
-rw-r--r--test/models/occurrence_test.rb8
-rw-r--r--test/models/page_test.rb146
-rw-r--r--test/models/permission_test.rb8
-rw-r--r--test/models/related_asset_test.rb8
-rw-r--r--test/models/user_test.rb64
22 files changed, 721 insertions, 0 deletions
diff --git a/test/models/asset_test.rb b/test/models/asset_test.rb
new file mode 100644
index 0000000..a1041e4
--- /dev/null
+++ b/test/models/asset_test.rb
@@ -0,0 +1,23 @@
1require 'test_helper'
2
3class AssetTest < ActiveSupport::TestCase
4
5 test "related assets get destroyed when assets get destroyed" do
6 Asset.delete_all
7 RelatedAsset.delete_all
8
9 assert asset = Asset.create
10 assert node = Node.root.children.create( :slug => "asset" )
11 assert_equal [], node.draft.assets
12
13 draft = node.draft
14 draft.assets << asset
15 assert_equal 1, draft.assets.length
16
17 asset.destroy
18 draft.reload
19 assert_equal 0, draft.assets.length
20 assert_equal 0, RelatedAsset.count
21 end
22
23end
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
diff --git a/test/models/helpers/admin_helper_test.rb b/test/models/helpers/admin_helper_test.rb
new file mode 100644
index 0000000..23d9f40
--- /dev/null
+++ b/test/models/helpers/admin_helper_test.rb
@@ -0,0 +1,4 @@
1require 'test_helper'
2
3class AdminHelperTest < ActionView::TestCase
4end
diff --git a/test/models/helpers/assets_helper_test.rb b/test/models/helpers/assets_helper_test.rb
new file mode 100644
index 0000000..ae50bff
--- /dev/null
+++ b/test/models/helpers/assets_helper_test.rb
@@ -0,0 +1,4 @@
1require 'test_helper'
2
3class AssetsHelperTest < ActionView::TestCase
4end
diff --git a/test/models/helpers/content_helper_test.rb b/test/models/helpers/content_helper_test.rb
new file mode 100644
index 0000000..2da82d7
--- /dev/null
+++ b/test/models/helpers/content_helper_test.rb
@@ -0,0 +1,4 @@
1require 'test_helper'
2
3class ContentHelperTest < ActionView::TestCase
4end
diff --git a/test/models/helpers/events_helper_test.rb b/test/models/helpers/events_helper_test.rb
new file mode 100644
index 0000000..2e7567e
--- /dev/null
+++ b/test/models/helpers/events_helper_test.rb
@@ -0,0 +1,4 @@
1require 'test_helper'
2
3class EventsHelperTest < ActionView::TestCase
4end
diff --git a/test/models/helpers/menu_items_helper_test.rb b/test/models/helpers/menu_items_helper_test.rb
new file mode 100644
index 0000000..8919dfd
--- /dev/null
+++ b/test/models/helpers/menu_items_helper_test.rb
@@ -0,0 +1,4 @@
1require 'test_helper'
2
3class MenuItemsHelperTest < ActionView::TestCase
4end
diff --git a/test/models/helpers/nodes_helper_test.rb b/test/models/helpers/nodes_helper_test.rb
new file mode 100644
index 0000000..13011de
--- /dev/null
+++ b/test/models/helpers/nodes_helper_test.rb
@@ -0,0 +1,4 @@
1require 'test_helper'
2
3class NodesHelperTest < ActionView::TestCase
4end
diff --git a/test/models/helpers/occurrences_helper_test.rb b/test/models/helpers/occurrences_helper_test.rb
new file mode 100644
index 0000000..0692926
--- /dev/null
+++ b/test/models/helpers/occurrences_helper_test.rb
@@ -0,0 +1,4 @@
1require 'test_helper'
2
3class OccurrencesHelperTest < ActionView::TestCase
4end
diff --git a/test/models/helpers/pages_helper_test.rb b/test/models/helpers/pages_helper_test.rb
new file mode 100644
index 0000000..535dfe1
--- /dev/null
+++ b/test/models/helpers/pages_helper_test.rb
@@ -0,0 +1,4 @@
1require 'test_helper'
2
3class PagesHelperTest < ActionView::TestCase
4end
diff --git a/test/models/helpers/revisions_helper_test.rb b/test/models/helpers/revisions_helper_test.rb
new file mode 100644
index 0000000..6bb5f07
--- /dev/null
+++ b/test/models/helpers/revisions_helper_test.rb
@@ -0,0 +1,4 @@
1require 'test_helper'
2
3class RevisionsHelperTest < ActionView::TestCase
4end
diff --git a/test/models/helpers/rss_helper_test.rb b/test/models/helpers/rss_helper_test.rb
new file mode 100644
index 0000000..b040b3e
--- /dev/null
+++ b/test/models/helpers/rss_helper_test.rb
@@ -0,0 +1,4 @@
1require 'test_helper'
2
3class RssHelperTest < ActionView::TestCase
4end
diff --git a/test/models/helpers/search_helper_test.rb b/test/models/helpers/search_helper_test.rb
new file mode 100644
index 0000000..3034163
--- /dev/null
+++ b/test/models/helpers/search_helper_test.rb
@@ -0,0 +1,4 @@
1require 'test_helper'
2
3class SearchHelperTest < ActionView::TestCase
4end
diff --git a/test/models/helpers/tags_helper_test.rb b/test/models/helpers/tags_helper_test.rb
new file mode 100644
index 0000000..4b1935f
--- /dev/null
+++ b/test/models/helpers/tags_helper_test.rb
@@ -0,0 +1,4 @@
1require 'test_helper'
2
3class TagsHelperTest < ActionView::TestCase
4end
diff --git a/test/models/helpers/users_helper_test.rb b/test/models/helpers/users_helper_test.rb
new file mode 100644
index 0000000..96af37a
--- /dev/null
+++ b/test/models/helpers/users_helper_test.rb
@@ -0,0 +1,4 @@
1require 'test_helper'
2
3class UsersHelperTest < ActionView::TestCase
4end
diff --git a/test/models/menu_item_test.rb b/test/models/menu_item_test.rb
new file mode 100644
index 0000000..81d9c01
--- /dev/null
+++ b/test/models/menu_item_test.rb
@@ -0,0 +1,8 @@
1require 'test_helper'
2
3class MenuItemTest < ActiveSupport::TestCase
4 # Replace this with your real tests.
5 test "the truth" do
6 assert true
7 end
8end
diff --git a/test/models/node_test.rb b/test/models/node_test.rb
new file mode 100644
index 0000000..514ba3f
--- /dev/null
+++ b/test/models/node_test.rb
@@ -0,0 +1,290 @@
1require 'test_helper'
2
3class NodeTest < ActiveSupport::TestCase
4
5 def setup
6 @root = Node.find(1)
7 @first_child = Node.find(2)
8 @first_child.pages.create! :title => "one"
9 @first_child.draft = @first_child.pages.last
10 @first_child.save
11 @second_child = Node.find(3)
12 @second_child.pages.create! :title => "one"
13
14 @user1 = User.create :login => 'demo', :email => "f@b.com", :password => 'foobar', :password_confirmation => 'foobar'
15 @user2 = User.create :login => 'show', :email => "f@b.com", :password => 'foobar', :password_confirmation => 'foobar'
16 end
17
18 test "can only create one root node" do
19 Node.delete_all
20 Node.create! :slug => :root
21 assert_raise(ActiveRecord::RecordInvalid) do
22 Node.create! :slug => :root
23 end
24 end
25
26 def test_returning_existing_drafts
27 test_node = Node.root.children.create! :slug => "test_node"
28
29 assert_not_nil test_node.draft
30 assert_equal 1, test_node.pages.length
31 assert_nil test_node.draft.user
32
33 3.times do
34 test_node.find_or_create_draft @user1
35 end
36
37 assert_equal 1, test_node.pages.length
38 end
39
40 def test_user_gets_assigned_to_unlocked_draft
41 assert_not_nil @first_child.draft
42 assert_nil @first_child.draft.user
43 @first_child.find_or_create_draft @user1
44 assert_equal @user1, @first_child.lock_owner
45 end
46
47 def test_unique_path_returns_an_array
48 assert_equal ["first_child"], @first_child.unique_path
49 new_node = @first_child.children.create! :slug => "third_child"
50 assert_equal ["first_child", "third_child"], new_node.unique_path
51 end
52
53 def test_specifying_a_revision_other_than_with_a_fixnum_raises_exception
54 assert_raise(ArgumentError) { Node.find_page "first_child", 1.9 }
55 assert_raise(ArgumentError) { Node.find_page "first_child", "1" }
56 assert_raise(ArgumentError) { Node.find_page "first_child", :head }
57 end
58
59 def test_publish_draft_on_a_node_without_a_draft_returns_nil
60
61 assert @first_child.publish_draft!
62 assert_nil @first_child.publish_draft!
63 end
64
65 def test_cloning_a_head_page_to_a_new_draft_with_translations
66 assert_not_nil draft = @first_child.draft
67 I18n.locale = :de
68 draft.title = "Hallo"
69 draft.abstract = "Bitte"
70 draft.body = "Danke"
71 draft.save
72 I18n.locale = :en
73 draft.title = "Hello"
74 draft.abstract = "Please"
75 draft.body = "Thanks"
76 draft.save
77
78 @first_child.publish_draft!
79
80 draft1 = @first_child.find_or_create_draft(@user1)
81
82 I18n.locale = :de
83 assert_equal "Hallo", draft1.title
84 assert_equal "Bitte", draft1.abstract
85 assert_equal "Danke", draft1.body
86
87 I18n.locale = :en
88 assert_equal "Hello", draft1.title
89 assert_equal "Please", draft1.abstract
90 assert_equal "Thanks", draft1.body
91 end
92
93 def test_created_nodes_have_an_empty_draft_and_no_head
94 node = Node.root.children.create! :slug => "third_child_beta"
95
96 assert !node.pages.empty?
97 assert_equal 1, node.pages.length
98 assert_not_nil node.draft
99 assert_nil node.draft.user
100 assert_nil node.head
101 end
102
103 def test_create_new_draft_of_published_page
104 node = Node.root.children.create :slug => "xyz"
105 assert node.publish_draft!
106 end
107
108 def test_find_or_create_draft_if_no_draft_exists
109 node = Node.root.children.create :slug => "xyz"
110 node.publish_draft!
111 assert_not_nil node.find_or_create_draft( @user1 )
112 end
113
114 def test_find_or_create_draft_if_draft_exists_and_is_owned_by_user
115 node = Node.root.children.create :slug => "xyz"
116 node.publish_draft!
117
118 node.find_or_create_draft @user1
119 node.find_or_create_draft @user1
120 end
121
122 def test_exception_if_draft_exists_but_locked_by_another_user
123 node = Node.root.children.create :slug => "xyz"
124 node.publish_draft!
125 node.find_or_create_draft @user1
126 assert_equal @user1, node.lock_owner
127 assert_raise(LockedByAnotherUser) do
128 node.find_or_create_draft @user2
129 end
130 end
131
132 def test_creation_of_unique_name
133 node = Node.root.children.create :slug => 'child'
134 node.reload
135 assert_equal 'child', node.unique_name
136
137 node = @first_child.children.create :slug => 'deep_child'
138 node.reload
139 assert_equal 'first_child/deep_child', node.unique_name
140 end
141
142 def test_order_of_pages_by_revision
143 # This test should make sure the order is the same on different db's
144 # Remember, there is already an empty draft
145 two = @second_child.pages.create :title => "two"
146 three = @second_child.pages.create :title => "three"
147 four = @second_child.pages.create :title => "four"
148
149 @second_child.pages.reload
150
151 assert_equal [1,2,3,4], @second_child.pages.map { |x| x.revision }
152 end
153
154 def test_behavior_of_acts_as_list
155 two = @second_child.pages.create :title => "two"
156 three = @second_child.pages.create :title => "three"
157 four = @second_child.pages.create :title => "four"
158
159 assert_equal 2, two.revision
160 assert_equal 3, three.revision
161 assert_equal 4, four.revision
162
163 assert_equal four, @second_child.pages.last
164
165 assert two.move_to_bottom
166
167 two.reload; three.reload; four.reload;
168
169 assert_equal 4, two.revision
170 assert_equal 2, three.revision
171 assert_equal 3, four.revision
172 end
173
174 def test_retrieving_page_current
175 updates = Node.root.children.create(:slug => 'updates')
176 year = updates.children.create(:slug => '2008')
177 foo = year.children.create(:slug => 'foo')
178
179 assert_not_nil Node.find_by_unique_name('updates/2008/foo')
180
181 # Note that there is already an initial, blank revision
182 foo.pages.create :title => "Version 2"
183 foo.pages.create :title => "Version 3"
184 foo.pages.create :title => "Version 4"
185
186 foo.head = foo.pages.last
187 foo.save!
188
189 page = Node.find_page("updates/2008/foo")
190 assert_equal page, foo.pages.find_by_revision(4)
191 end
192
193 def test_retrieving_page_by_revision
194 updates = Node.root.children.create(:slug => 'updates')
195 year = updates.children.create(:slug => '2008')
196 foo = year.children.create(:slug => 'foo')
197
198 assert_not_nil Node.find_by_unique_name('updates/2008/foo')
199
200 # Note that there is already an initial, blank revision
201 foo.pages.create :title => "Version 2"
202 foo.pages.create :title => "Version 3"
203 foo.pages.create :title => "Version 4"
204
205 page = Node.find_page("updates/2008/foo", 2)
206 assert_equal "Version 2", page.title
207 end
208
209 # Thats a lengthy test to make sure everything works as it should, it was
210 # created during a bug hunt
211 def test_creating_new_draft
212 test_node = Node.root.children.create! :slug => "test_node"
213 test_node.draft.user = @user1
214 test_node.save
215 assert test_node.publish_draft!
216 test_node.reload
217 assert_equal 1, test_node.pages.length
218 assert_not_nil test_node.head
219 assert_nil test_node.draft
220 test_node.find_or_create_draft @user1
221 test_node.reload
222 assert_equal 2, test_node.pages.length
223 assert_not_nil test_node.draft
224 assert test_node.head != test_node.draft
225 end
226
227 test "restoring a revision" do
228 test_node = Node.root.children.create! :slug => "test_node"
229 create_revisions( test_node, 3 )
230 test_node.find_or_create_draft @user1
231 test_node.reload
232
233 assert_equal 4, test_node.pages.count
234 assert_equal 3, test_node.head.revision
235
236 test_node.restore_revision!(1)
237 assert_equal 1, test_node.head.revision
238 assert_equal 4, test_node.draft.revision
239 end
240
241 test "a new revision keeps the initial user" do
242 Node.root.descendants.destroy_all
243 node = create_node_with_draft
244 draft = node.draft
245 draft.user = users(:aaron)
246 draft.save
247 node.publish_draft!
248 new_draft = node.find_or_create_draft( users(:quentin) )
249 assert_equal "aaron", new_draft.user.login
250 end
251
252 test "a new revision can overwrite the initial author" do
253 Node.root.descendants.destroy_all
254 node = create_node_with_draft
255 draft = node.draft
256 draft.user = users(:aaron)
257 draft.save!
258 node.publish_draft!
259 new_draft = node.find_or_create_draft( users(:quentin) )
260 new_draft.user_id = users(:quentin).id
261 new_draft.save
262 node.publish_draft!
263 assert_equal "quentin", node.head.user.login
264 end
265
266
267 test "update?" do
268 Node.root.descendants.delete_all
269 updates = Node.root.children.create!( :slug => "updates" )
270 assert !updates.update?
271
272 updates2009 = updates.children.create!( :slug => "2009" )
273 assert !updates2009.update?
274
275 update = updates2009.children.create!( :slug => "my-first-update" )
276 assert update.update?
277 end
278
279 test "new nodes should have drafts with no publidhed_at set" do
280 node = Node.root.children.create( :slug => "wow" )
281 assert_nil node.draft.published_at
282 end
283
284 def create_revisions node, count
285 count.times do
286 node.find_or_create_draft @user1
287 node.publish_draft!
288 end
289 end
290end
diff --git a/test/models/occurrence_test.rb b/test/models/occurrence_test.rb
new file mode 100644
index 0000000..91a78ec
--- /dev/null
+++ b/test/models/occurrence_test.rb
@@ -0,0 +1,8 @@
1require 'test_helper'
2
3class OccurrenceTest < ActiveSupport::TestCase
4 # Replace this with your real tests.
5 test "the truth" do
6 assert true
7 end
8end
diff --git a/test/models/page_test.rb b/test/models/page_test.rb
new file mode 100644
index 0000000..afba8b5
--- /dev/null
+++ b/test/models/page_test.rb
@@ -0,0 +1,146 @@
1require 'test_helper'
2
3class PageTest < ActiveSupport::TestCase
4
5 def setup
6 @user1 = User.create :login => 'demo', :email => "f@b.com", :password => 'foobar', :password_confirmation => 'foobar'
7 @user2 = User.create :login => 'show', :email => "f@b.com", :password => 'foobar', :password_confirmation => 'foobar'
8 end
9
10 def test_aggregation
11 # Create two nodes and move them beneath the root node
12 n1 = Node.root.children.create! :slug => "one"
13 n2 = Node.root.children.create! :slug => "two"
14
15 # get the drafts and assign a user to it
16 assert_not_nil d1 = n1.find_or_create_draft( @user1 )
17 assert_not_nil d3 = n2.find_or_create_draft( @user1 )
18
19 # tag and double publish so we have 4 pages tagged with "update"
20 d1.tag_list = "update"
21 d1.save
22 n1.publish_draft!
23
24 d2 = n1.find_or_create_draft @user1
25 n1.publish_draft!
26
27
28 d3.tag_list = "update, pressemitteilung"
29 d3.save
30 n2.publish_draft!
31
32 d4 = n2.find_or_create_draft @user1
33 n2.publish_draft!
34
35 # Set up two options hashes for the assertions
36 options1 = {
37 :tags => "update"
38 }
39
40 options2 = {
41 :tags => "update, pressemitteilung"
42 }
43
44 assert_equal 2, Page.aggregate( options1 ).length
45 assert_equal 1, Page.aggregate( options2 ).length
46 assert_equal 4, Page.tagged_with( "update" ).length
47 assert_equal [d2.id, d4.id], Page.aggregate( options1 ).map {|x| x.id}
48 end
49
50 def test_before_save_rewrite_links_in_body
51 n = Node.root.children.create :slug => "link_test"
52 d = n.find_or_create_draft @user1
53
54 before = "<h1>Hello World</h1>\n" \
55 "<a href=\"/club\" target=\"_blank\">Linkme</a>"
56
57 after = "<h1>Hello World</h1>\n" \
58 "<a href=\"/de/club\" target=\"_blank\">Linkme</a>"
59
60 I18n.locale = :de
61
62 d.body = before
63 d.save!
64
65 assert_equal after, d.body
66 end
67
68 def test_before_save_rewrite_links_in_body_if_no_locale_prefix_present
69 n = Node.root.children.create :slug => "link_test"
70 d = n.find_or_create_draft @user1
71
72 before = "<h1>Hello World</h1>\n" \
73 "<a href=\"/de/club\" target=\"_blank\">Linkme</a>"
74
75 after = "<h1>Hello World</h1>\n" \
76 "<a href=\"/de/club\" target=\"_blank\">Linkme</a>"
77
78 I18n.locale = :de
79
80 d.body = before
81 d.save
82
83 assert_equal after, d.body
84 end
85
86 def test_before_save_rewrite_links_skips_on_external_links
87 n = Node.root.children.create :slug => "link_test"
88 d = n.find_or_create_draft @user1
89
90 before = "<h1>Hello World</h1>\n" \
91 "<a href=\"http://www.ccc.de/club\" target=\"_blank\">Linkme</a>"
92
93 after = "<h1>Hello World</h1>\n" \
94 "<a href=\"http://www.ccc.de/club\" target=\"_blank\">Linkme</a>"
95
96 I18n.locale = :de
97
98 d.body = before
99 d.save
100
101 assert_equal after, d.body
102 end
103
104 def test_find_with_outdated_translations
105 Node.delete_all
106 Page.delete_all
107 I18n.locale = :de
108
109 assert_not_nil page = Page.create!( :title => "Hallo" )
110 page.reload
111 assert_equal 1, page.translations.size
112 assert_equal [], Page.find_with_outdated_translations
113
114 I18n.locale = :en
115 page.title = "Hello"
116 page.save
117
118 assert_equal 2, page.translations.size
119 assert_equal 0, Page.find_with_outdated_translations.size
120
121 english = page.translations.select {|x| x.locale == :en}.first
122 Page::Translation.record_timestamps = false
123 english.update(:updated_at => (Time.now+25.hours))
124 Page::Translation.record_timestamps = true
125 assert_equal 1, Page.find_with_outdated_translations.count
126
127 I18n.locale = :de
128 page2 = Page.create!( :title => "Hallo2" )
129 I18n.locale = :en
130 page2.title = "Hello2"
131 page2.save!
132
133 assert_equal 0, Page.find_with_outdated_translations(:delta_time => 23.days).count
134 assert_equal 1, Page.find_with_outdated_translations(:delta_time => 23.minutes).count
135 assert_equal 2, Page.count
136 end
137
138 test "pages under /updates node get the update template assigned" do
139 Node.root.descendants.delete_all
140 updates = Node.root.children.create!( :slug => "updates" )
141 updates2009 = updates.children.create!( :slug => "2009" )
142 update = updates2009.children.create!( :slug => "my-first-update" )
143 assert_equal "update", update.draft.template_name
144 end
145
146end
diff --git a/test/models/permission_test.rb b/test/models/permission_test.rb
new file mode 100644
index 0000000..08fcc0b
--- /dev/null
+++ b/test/models/permission_test.rb
@@ -0,0 +1,8 @@
1require 'test_helper'
2
3class PermissionTest < ActiveSupport::TestCase
4 # Replace this with your real tests.
5 test "the truth" do
6 assert true
7 end
8end
diff --git a/test/models/related_asset_test.rb b/test/models/related_asset_test.rb
new file mode 100644
index 0000000..a739e6b
--- /dev/null
+++ b/test/models/related_asset_test.rb
@@ -0,0 +1,8 @@
1require 'test_helper'
2
3class RelatedImageTest < ActiveSupport::TestCase
4 # Replace this with your real tests.
5 test "the truth" do
6 assert true
7 end
8end
diff --git a/test/models/user_test.rb b/test/models/user_test.rb
new file mode 100644
index 0000000..6e4d2d7
--- /dev/null
+++ b/test/models/user_test.rb
@@ -0,0 +1,64 @@
1require File.dirname(__FILE__) + '/../test_helper'
2
3class UserTest < ActiveSupport::TestCase
4 # Be sure to include AuthenticatedTestHelper in test/test_helper.rb instead.
5 # Then, you can remove it from this and the functional test.
6 include AuthenticatedTestHelper
7 fixtures :users
8
9 def test_should_create_user
10 assert_difference 'User.count' do
11 user = create_user
12 assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
13 end
14 end
15
16 def test_should_require_login
17 assert_no_difference 'User.count' do
18 u = create_user(:login => nil)
19 assert u.errors[:login].any?
20 end
21 end
22
23 def test_should_require_password
24 assert_no_difference 'User.count' do
25 u = create_user(:password => nil)
26 assert u.errors[:password].any?
27 end
28 end
29
30 def test_should_require_password_confirmation
31 assert_no_difference 'User.count' do
32 u = create_user(:password_confirmation => nil)
33 assert u.errors[:password_confirmation].any?
34 end
35 end
36
37 def test_should_require_email
38 assert_no_difference 'User.count' do
39 u = create_user(:email => nil)
40 assert u.errors[:email].any?
41 end
42 end
43
44 def test_should_reset_password
45 users(:quentin).update(:password => 'new password', :password_confirmation => 'new password')
46 assert_equal users(:quentin), User.authenticate('quentin', 'new password')
47 end
48
49 def test_should_not_rehash_password
50 users(:quentin).update(:login => 'quentin2')
51 assert_equal users(:quentin), User.authenticate('quentin2', 'monkey')
52 end
53
54 def test_should_authenticate_user
55 assert_equal users(:quentin), User.authenticate('quentin', 'monkey')
56 end
57
58protected
59 def create_user(options = {})
60 record = User.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire69', :password_confirmation => 'quire69' }.merge(options))
61 record.save
62 record
63 end
64end