motiro 0.6.4 → 0.6.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README +1 -1
- data/app/controllers/wiki_controller.rb +16 -16
- data/app/core/version.rb +1 -1
- data/app/core/wiki_reporter.rb +1 -1
- data/app/helpers/application_helper.rb +6 -2
- data/app/helpers/default_page_provider.rb +2 -4
- data/app/helpers/wiki_helper.rb +10 -0
- data/app/models/page.rb +11 -11
- data/app/models/revision.rb +2 -2
- data/app/reporters/darcs_reporter.rb +1 -1
- data/app/views/wiki/_editbar.rhtml +1 -3
- data/app/views/wiki/history.rhtml +3 -5
- data/app/views/wiki/show.rhtml +1 -1
- data/config/motiro.yml +19 -14
- data/db/migrate/020_fix_modification_dates_for_old_pages.rb +11 -0
- data/db/migrate/021_drop_type_column_from_pages_table.rb +11 -0
- data/db/migrate/022_provide_revision_position.rb +19 -0
- data/db/migrate/023_increment_revision_positions.rb +11 -0
- data/db/motirodb.sqlite.initial +0 -0
- data/db/schema_version +1 -1
- data/db/translation/pt-BR.rb +2 -1
- data/public/stylesheets/motiro.css +16 -1
- data/test/acceptance/subversion_test.rb +1 -1
- data/test/fixtures/pages.yml +0 -1
- data/test/fixtures/revisions.yml +2 -0
- data/test/functional/root_controller_test.rb +1 -1
- data/test/functional/wiki_controller_test.rb +44 -9
- data/test/unit/darcs_reporter_test.rb +1 -1
- data/test/unit/default_page_provider_test.rb +2 -11
- data/test/unit/page_test.rb +30 -7
- data/test/unit/revision_test.rb +8 -2
- data/test/unit/wiki_reporter_test.rb +9 -0
- metadata +187 -184
- data/app/models/event.rb +0 -18
data/README
CHANGED
@@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License
|
|
15
15
|
along with this program; if not, write to the Free Software
|
16
16
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17
17
|
--------------------------------------------------------------------------------
|
18
|
-
Motiro version 0.6.
|
18
|
+
Motiro version 0.6.5 - May 2007
|
19
19
|
|
20
20
|
Please refer to your preferred language README. Every text file below this
|
21
21
|
directory is UTF-8 encoded. Please make sure to set up your reader accordingly.
|
@@ -20,7 +20,7 @@ class WikiController < ApplicationController
|
|
20
20
|
layout :choose_layout
|
21
21
|
|
22
22
|
before_filter :login_required, :except => [:show, :last, :history]
|
23
|
-
before_filter :fetch_page, :
|
23
|
+
before_filter :fetch_page, :fetch_revision
|
24
24
|
before_filter :check_edit_access, :only => [:edit, :save]
|
25
25
|
|
26
26
|
cache_sweeper :page_sweeper, :only => [:edit, :save]
|
@@ -42,18 +42,25 @@ class WikiController < ApplicationController
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def fetch_page
|
45
|
-
|
46
|
-
@page = find_page(params[:page_name], type)
|
47
|
-
end
|
48
|
-
|
49
|
-
def drop_crumbs
|
45
|
+
@page = find_page(params[:page_name])
|
50
46
|
unless 'common' == @page.kind
|
51
47
|
@crumbs <<{ @page.kind.pluralize.capitalize.t =>
|
52
48
|
{:controller => 'report', :action => 'older',
|
53
49
|
:reporter => @page.kind.pluralize}}
|
54
50
|
end
|
55
51
|
@crumbs <<{ @page.title => {:controller => 'wiki', :action => 'show',
|
56
|
-
:page_name => @page.name} }
|
52
|
+
:page_name => @page.name} }
|
53
|
+
end
|
54
|
+
|
55
|
+
def fetch_revision
|
56
|
+
rev = params[:revision]
|
57
|
+
unless rev.nil?
|
58
|
+
@page = @page.revisions[rev.to_i - 1]
|
59
|
+
@page_revision_id = @page.id
|
60
|
+
@crumbs << { 'Revision %s' / rev =>
|
61
|
+
{ :controller => 'wiki', :action => 'show',
|
62
|
+
:page_name => @page.name, :revision => rev} }
|
63
|
+
end
|
57
64
|
end
|
58
65
|
|
59
66
|
def check_edit_access
|
@@ -83,13 +90,6 @@ class WikiController < ApplicationController
|
|
83
90
|
end
|
84
91
|
end
|
85
92
|
|
86
|
-
def show
|
87
|
-
if params[:revision]
|
88
|
-
@page = @page.revisions[params[:revision].to_i]
|
89
|
-
@page_revision_id = @page.id
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
93
|
def access_denied
|
94
94
|
redirect_to :controller => 'wiki', :action => 'show',
|
95
95
|
:page_name => params[:page_name]
|
@@ -107,9 +107,9 @@ private
|
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
110
|
-
def find_page(name
|
110
|
+
def find_page(name)
|
111
111
|
@real_page_provider.find_by_name(name) ||
|
112
|
-
@default_page_provider.
|
112
|
+
@default_page_provider.find_by_name(name)
|
113
113
|
end
|
114
114
|
|
115
115
|
end
|
data/app/core/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
MOTIRO_VERSION = '0.6.
|
1
|
+
MOTIRO_VERSION = '0.6.5'
|
data/app/core/wiki_reporter.rb
CHANGED
@@ -39,7 +39,7 @@ class WikiReporter < MotiroReporter
|
|
39
39
|
klass.add(button_for_creating(klass.reporter_name.chop))
|
40
40
|
end
|
41
41
|
|
42
|
-
def latest_headlines
|
42
|
+
def latest_headlines(rid='')
|
43
43
|
to_headlines @page_provider.find(:all, find_opts.merge(
|
44
44
|
:limit => @settings.package_size))
|
45
45
|
end
|
@@ -36,7 +36,7 @@ module ApplicationHelper
|
|
36
36
|
:action => script_name) })
|
37
37
|
end
|
38
38
|
|
39
|
-
def pagetext(title, &block)
|
39
|
+
def pagetext(title, revision=nil, &block)
|
40
40
|
content = capture(&block)
|
41
41
|
b = Builder::XmlMarkup.new
|
42
42
|
xml = b.div(:class => 'pagetext') do
|
@@ -51,7 +51,11 @@ module ApplicationHelper
|
|
51
51
|
b.a(last.keys.first,
|
52
52
|
:href => url_for(last.values.first.update(:only_path => true)))
|
53
53
|
end unless params[:context] == 'partial'
|
54
|
-
b.
|
54
|
+
b.div(:class => 'page-title') do
|
55
|
+
b.span(title, :class => 'page-title')
|
56
|
+
b << ' '
|
57
|
+
b.span(revision, :id => 'revision') unless revision.nil?
|
58
|
+
end
|
55
59
|
b << content
|
56
60
|
end
|
57
61
|
concat(xml, block.binding)
|
data/app/helpers/wiki_helper.rb
CHANGED
@@ -1,3 +1,13 @@
|
|
1
1
|
module WikiHelper
|
2
2
|
|
3
|
+
def page_history_link(page)
|
4
|
+
case page.revisions.size
|
5
|
+
when 0 then ''
|
6
|
+
when 1 then '| ' + 'Page has no history yet'.t
|
7
|
+
else '| ' + link_to('Page history (%d revisions)' / page.revisions.size,
|
8
|
+
:controller => 'wiki', :action => 'history',
|
9
|
+
:page_name => page.name)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
3
13
|
end
|
data/app/models/page.rb
CHANGED
@@ -19,7 +19,7 @@ PLACE_HOLDER_TITLE = 'Insert page title here'
|
|
19
19
|
|
20
20
|
class Page < ActiveRecord::Base
|
21
21
|
|
22
|
-
has_many :revisions, :order => 'modified_at
|
22
|
+
has_many :revisions, :order => 'modified_at, id'
|
23
23
|
|
24
24
|
def original_author
|
25
25
|
oldest(:last_editor)
|
@@ -60,9 +60,10 @@ class Page < ActiveRecord::Base
|
|
60
60
|
|
61
61
|
def before_save
|
62
62
|
if title == PLACE_HOLDER_TITLE.t
|
63
|
-
revisions.
|
63
|
+
revisions.last.title = title_from_kind
|
64
64
|
end
|
65
65
|
|
66
|
+
write_attribute(:modified_at, self.modified_at)
|
66
67
|
write_attribute(:name, self.name)
|
67
68
|
end
|
68
69
|
|
@@ -85,20 +86,21 @@ class Page < ActiveRecord::Base
|
|
85
86
|
attrs['happens_at(3i)'].to_i)
|
86
87
|
end
|
87
88
|
unless revisions.size == 0 || original_author
|
88
|
-
revisions.
|
89
|
-
revisions.
|
89
|
+
revisions.first.last_editor = author
|
90
|
+
revisions.first.save
|
90
91
|
end
|
91
|
-
rev = Revision.new(:last_editor => author, :modified_at => time
|
92
|
+
rev = Revision.new(:last_editor => author, :modified_at => time,
|
93
|
+
:position => self.revisions.size + 1)
|
92
94
|
rev.editors = if author.can_change_editors?(self)
|
93
95
|
attrs[:editors]
|
94
96
|
else
|
95
|
-
revisions.
|
97
|
+
revisions.last.editors
|
96
98
|
end
|
97
99
|
self.kind = attrs[:kind] if attrs[:kind]
|
98
100
|
self.happens_at = attrs[:happens_at] if attrs[:happens_at]
|
99
101
|
rev.kind, rev.happens_at = self.kind, self.happens_at
|
100
102
|
rev.title, rev.text = attrs[:title], attrs[:text]
|
101
|
-
self.revisions
|
103
|
+
self.revisions << rev
|
102
104
|
|
103
105
|
save
|
104
106
|
self
|
@@ -131,15 +133,13 @@ private
|
|
131
133
|
end
|
132
134
|
|
133
135
|
def most_recent(attr)
|
134
|
-
revisions.
|
136
|
+
revisions.last && revisions.last.send(attr)
|
135
137
|
end
|
136
138
|
|
137
139
|
def oldest(attr)
|
138
|
-
revisions.
|
140
|
+
revisions.first && revisions.first.send(attr)
|
139
141
|
end
|
140
142
|
|
141
|
-
private
|
142
|
-
|
143
143
|
def clean(text)
|
144
144
|
text.tr('ãàáâäÃÀÁÂÄèéêëÈÉÊËĩìíîïĨÌÍÎÏÿýÝŸõòóôöÕÒÓÔÖũùúûüŨÙÚÛÜñńÑŃćçÇĆśŕ埌ŔĹŹ',
|
145
145
|
'aaaaaAAAAAeeeeEEEEiiiiiIIIIIyyYYoooooOOOOOuuuuuUUUUUnnNNccCCsrlzSRLZ')
|
data/app/models/revision.rb
CHANGED
@@ -18,9 +18,9 @@
|
|
18
18
|
class Revision < ActiveRecord::Base
|
19
19
|
belongs_to :page
|
20
20
|
belongs_to :last_editor, :class_name => 'User', :foreign_key => 'last_editor_id'
|
21
|
-
|
21
|
+
|
22
22
|
#Delegate methods to parent page
|
23
|
-
%w{name original_author}.each do |method|
|
23
|
+
%w{name original_author revisions}.each do |method|
|
24
24
|
define_method(method) { page.send(method) }
|
25
25
|
end
|
26
26
|
|
@@ -9,9 +9,8 @@
|
|
9
9
|
</tr>
|
10
10
|
</thead>
|
11
11
|
<tbody>
|
12
|
-
<%
|
13
|
-
|
14
|
-
<tr class="<%= i % 2 == 0 ? 'odd' : 'even' -%>">
|
12
|
+
<% @page.revisions.reverse.each do |rev| %>
|
13
|
+
<tr class="<%= rev.position % 2 == 0 ? 'odd' : 'even' -%>">
|
15
14
|
<td class="date"><%= rev.modified_at-%></td>
|
16
15
|
<td class="relative"><%= rev.modified_at.relative_to_now %></td>
|
17
16
|
<td><%= rev.last_editor.login %></td>
|
@@ -19,9 +18,8 @@
|
|
19
18
|
:href => server_url_for(:controller => 'wiki',
|
20
19
|
:action => 'show',
|
21
20
|
:page_name => @page.name,
|
22
|
-
:revision =>
|
21
|
+
:revision => rev.position) -%></td>
|
23
22
|
</tr>
|
24
|
-
<% i += 1 %>
|
25
23
|
<% end %>
|
26
24
|
</tbody>
|
27
25
|
</table>
|
data/app/views/wiki/show.rhtml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
<% pagetext(@page.title) do %>
|
1
|
+
<% pagetext(@page.title, @page.respond_to?(:position) ? '(Revision %s)' / @page.position.to_s : nil) do %>
|
2
2
|
<% cache(:controller=> 'wiki', :action => 'show',
|
3
3
|
:page => @page.name, :locale_suffix => @locale,
|
4
4
|
:revision => @page_revision_id) do %>
|
data/config/motiro.yml
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
# motiro.yml: Configuration for your Motiro installation
|
2
|
+
#
|
3
|
+
# This is an YAML file, so leading whitespace does make a difference. Please
|
4
|
+
# make sure to KEEP THE EXISTING WHITESPACE when uncommenting lines.
|
5
|
+
|
1
6
|
# package_size
|
2
7
|
#
|
3
8
|
# How many headlines should be shown for each reporter?
|
@@ -20,24 +25,24 @@ update_interval: 40
|
|
20
25
|
# Subversion specific settings
|
21
26
|
subversion:
|
22
27
|
|
23
|
-
# subversion/repo
|
24
|
-
#
|
25
|
-
# Tells the reporter where to find your project's repository
|
26
|
-
# Default: https://svn.sourceforge.net/svnroot/motiro
|
28
|
+
# subversion/repo
|
29
|
+
#
|
30
|
+
# Tells the reporter where to find your project's repository
|
31
|
+
# Default: https://svn.sourceforge.net/svnroot/motiro
|
27
32
|
repo: https://svn.sourceforge.net/svnroot/motiro
|
28
33
|
|
29
|
-
# subversion/{user,password}
|
30
|
-
#
|
31
|
-
# Credentials to use for authentication with Subversion server. Uncomment and
|
32
|
-
# them only if your server requires authorization for read access.
|
33
|
-
# doesn't so they are commented out here.
|
34
|
-
#
|
35
|
-
#
|
34
|
+
# subversion/{user,password}
|
35
|
+
#
|
36
|
+
# Credentials to use for authentication with Subversion server. Uncomment and
|
37
|
+
# set them only if your server requires authorization for read access.
|
38
|
+
# Motiro's doesn't, so they are commented out here.
|
39
|
+
# user: harry
|
40
|
+
# password: harryssecret
|
36
41
|
|
37
42
|
# Darcs specific settings
|
38
43
|
# Uncomment the lines below to activate darcs reporting
|
39
44
|
# darcs:
|
40
45
|
|
41
|
-
# darcs/repo
|
42
|
-
# Tells the reporter where to find the project's central repository
|
43
|
-
#
|
46
|
+
# darcs/repo
|
47
|
+
# Tells the reporter where to find the project's central repository
|
48
|
+
# repo: http://motiro.sf.net/darcsrepos/trunk
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class ProvideRevisionPosition < ActiveRecord::Migration
|
2
|
+
|
3
|
+
def self.up
|
4
|
+
add_column :revisions, :position, :integer
|
5
|
+
Page.find(:all).each do |pg|
|
6
|
+
position = 0
|
7
|
+
pg.revisions.each do |rev|
|
8
|
+
rev.position = position
|
9
|
+
rev.save
|
10
|
+
position += 1
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.down;
|
16
|
+
remove_column :revisions, :position
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/db/motirodb.sqlite.initial
CHANGED
Binary file
|
data/db/schema_version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
23
|
data/db/translation/pt-BR.rb
CHANGED
@@ -54,11 +54,26 @@ div.channel div.pagetext, div.pagetext div.pagetext {
|
|
54
54
|
|
55
55
|
div#crumbs {
|
56
56
|
border-bottom: solid #d0d0d0 1px;
|
57
|
-
margin-bottom: -1em;
|
58
57
|
padding: .2em 0 .2em 0;
|
59
58
|
color: #808080
|
60
59
|
}
|
61
60
|
|
61
|
+
div.page-title {
|
62
|
+
margin-top: .4em;
|
63
|
+
margin-bottom: 1em;
|
64
|
+
}
|
65
|
+
|
66
|
+
span.page-title {
|
67
|
+
font-size: 2em;
|
68
|
+
font-weight: bold;
|
69
|
+
}
|
70
|
+
|
71
|
+
span#revision {
|
72
|
+
color: #808080;
|
73
|
+
font-size: 1em;
|
74
|
+
white-space: nowrap;
|
75
|
+
}
|
76
|
+
|
62
77
|
#mainpage {
|
63
78
|
margin: 4px 332px 4px 0;
|
64
79
|
}
|
@@ -57,7 +57,7 @@ class SubversionAcceptanceTest < SeleniumTestCase
|
|
57
57
|
wait_for_page_to_load(2000)
|
58
58
|
|
59
59
|
assert_equal "Revision details - #{commit_title} (Motiro)", get_title
|
60
|
-
assert_element_present "//
|
60
|
+
assert_element_present "//span[@class='page-title' and text() = 'Revision r1']"
|
61
61
|
assert_text_present commit_title
|
62
62
|
assert_text_present 'This project dir will hold everything needed to build and'
|
63
63
|
assert_text_present 'deploy our project from source code'
|
data/test/fixtures/pages.yml
CHANGED
data/test/fixtures/revisions.yml
CHANGED
@@ -7,6 +7,7 @@ page_creation:
|
|
7
7
|
editors: ""
|
8
8
|
title: This page has been created
|
9
9
|
text: John entered some text here
|
10
|
+
position: 1
|
10
11
|
|
11
12
|
page_edition:
|
12
13
|
id: 2
|
@@ -17,6 +18,7 @@ page_edition:
|
|
17
18
|
editors: ""
|
18
19
|
title: This page has been edited since creation
|
19
20
|
text: Eric changed the text that John entered
|
21
|
+
position: 2
|
20
22
|
|
21
23
|
main_page_creation:
|
22
24
|
id: 3
|
@@ -174,13 +174,15 @@ class WikiControllerTest < Test::Unit::TestCase
|
|
174
174
|
:value => 'Brand new page' }
|
175
175
|
end
|
176
176
|
|
177
|
-
def
|
177
|
+
def test_shows_page_title_with_page_title_class
|
178
178
|
non_matching_title_page = pages('non_matching_title_page')
|
179
179
|
get :show, :page_name => pages('test_page').name
|
180
|
-
assert_tag :tag => '
|
181
|
-
|
180
|
+
assert_tag :tag => 'span', :content => 'Test page',
|
181
|
+
:attributes => { :class => 'page-title' }
|
182
|
+
|
182
183
|
get :show, :page_name => non_matching_title_page.name
|
183
|
-
assert_tag :tag => '
|
184
|
+
assert_tag :tag => 'span', :content => non_matching_title_page.title,
|
185
|
+
:attributes => { :class => 'page-title' }
|
184
186
|
end
|
185
187
|
|
186
188
|
def test_saves_last_editor_and_modification_date
|
@@ -255,6 +257,13 @@ class WikiControllerTest < Test::Unit::TestCase
|
|
255
257
|
assert_xml_element "//div[@id = 'crumbs']/a[@href = '/wiki/show/#{test_page.name}' and text() = '#{test_page.title}']"
|
256
258
|
end
|
257
259
|
|
260
|
+
def test_follows_breadcrumbs_trail_til_the_revision_number
|
261
|
+
page = pages('changed_page')
|
262
|
+
get :show, :page_name => page.name, :revision => '1'
|
263
|
+
|
264
|
+
assert_xml_element "//div[@id = 'crumbs']/a[@href = '/wiki/show/#{page.name}?revision=1' and text() = 'Revision 1']"
|
265
|
+
end
|
266
|
+
|
258
267
|
def test_shows_breadcrumbs_trail_for_special_wiki_pages
|
259
268
|
release_event = pages('release_event')
|
260
269
|
get :show, :page_name => release_event.name
|
@@ -293,24 +302,50 @@ class WikiControllerTest < Test::Unit::TestCase
|
|
293
302
|
get :show, :page_name => 'RevisedPage', :revision => '1'
|
294
303
|
assert_tag :content => /Some very boring text/
|
295
304
|
|
296
|
-
get :show, :page_name => 'RevisedPage', :revision => '
|
305
|
+
get :show, :page_name => 'RevisedPage', :revision => '2'
|
297
306
|
assert_tag :content => /A little more exciting text/
|
298
307
|
end
|
299
308
|
|
300
309
|
def test_displays_old_text_when_showing_revisions
|
301
|
-
get :show, :page_name => pages('changed_page').name, :revision => '
|
310
|
+
get :show, :page_name => pages('changed_page').name, :revision => '1'
|
311
|
+
assert_tag :content => revisions('page_creation').text
|
312
|
+
|
313
|
+
get :show, :page_name => pages('changed_page').name, :revision => '2'
|
302
314
|
assert_tag :content => revisions('page_edition').text
|
315
|
+
end
|
303
316
|
|
317
|
+
def test_shows_version_number_for_page_revisions
|
304
318
|
get :show, :page_name => pages('changed_page').name, :revision => '1'
|
305
|
-
assert_tag :content =>
|
319
|
+
assert_tag :content => '(Revision 1)'
|
320
|
+
|
321
|
+
get :show, :page_name => pages('changed_page').name, :revision => '2'
|
322
|
+
assert_tag :content => '(Revision 2)'
|
306
323
|
end
|
307
|
-
|
324
|
+
|
325
|
+
def tests_shows_number_of_available_revisions
|
326
|
+
get :show, :page_name => pages('changed_page').name
|
327
|
+
|
328
|
+
assert_tag :content => 'Page history (2 revisions)'
|
329
|
+
end
|
330
|
+
|
331
|
+
def test_does_not_show_page_history_link_for_missing_or_edited_once_pages
|
332
|
+
get :show, :page_name => pages('test_page').name
|
333
|
+
|
334
|
+
assert_no_tag :content => 'Page history (1 revisions)'
|
335
|
+
assert_tag :content => /Page has no history yet/
|
336
|
+
|
337
|
+
get :show, :page_name => 'TestingBrandNewPage'
|
338
|
+
|
339
|
+
assert_no_tag :content => 'Page history (1 revisions)'
|
340
|
+
assert_no_tag :content => /Page has no history yet/
|
341
|
+
end
|
342
|
+
|
308
343
|
private
|
309
344
|
|
310
345
|
def log_as(user_name)
|
311
346
|
@request.session[:user] = users(user_name)
|
312
347
|
end
|
313
|
-
|
348
|
+
|
314
349
|
def log_out
|
315
350
|
@request.session[:user] = nil
|
316
351
|
end
|
@@ -23,22 +23,13 @@ class DefaultPageProviderTest < Test::Unit::TestCase
|
|
23
23
|
@provider = DefaultPageProvider.new
|
24
24
|
end
|
25
25
|
|
26
|
-
def test_nil_type_creates_common_page
|
27
|
-
assert_equal Page, @provider.find_by_name_and_type('MainPage', nil).class
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_event_type_creates_event_page
|
31
|
-
klass = @provider.find_by_name_and_type('MainPage', 'Event').class
|
32
|
-
assert_equal Event, klass
|
33
|
-
end
|
34
|
-
|
35
26
|
def test_provides_congratulations_page_for_main_page
|
36
|
-
page_text = @provider.
|
27
|
+
page_text = @provider.find_by_name('MainPage').text
|
37
28
|
assert page_text.match(/Congratulations/)
|
38
29
|
end
|
39
30
|
|
40
31
|
def test_provides_you_can_edit_this_page_for_random_pages
|
41
|
-
page_text = @provider.
|
32
|
+
page_text = @provider.find_by_name('AnyPage').text
|
42
33
|
assert page_text.match(/nothing to be read here/)
|
43
34
|
assert page_text.match(/But you can write something right now/)
|
44
35
|
end
|
data/test/unit/page_test.rb
CHANGED
@@ -191,8 +191,8 @@ class PageTest < Test::Unit::TestCase
|
|
191
191
|
:editors => '')
|
192
192
|
|
193
193
|
assert_equal 2, page.revisions.size
|
194
|
-
assert_equal 'Page revision number 2', page.revisions.
|
195
|
-
assert_equal 'Page revision number 1', page.revisions.
|
194
|
+
assert_equal 'Page revision number 2', page.revisions.last.text
|
195
|
+
assert_equal 'Page revision number 1', page.revisions.first.text
|
196
196
|
end
|
197
197
|
|
198
198
|
def test_copies_previous_editors_list_when_not_provided
|
@@ -209,8 +209,8 @@ class PageTest < Test::Unit::TestCase
|
|
209
209
|
|
210
210
|
def test_most_recent_revision_comes_first
|
211
211
|
page = pages('changed_page')
|
212
|
-
assert_equal revisions('page_creation'), page.revisions[
|
213
|
-
assert_equal revisions('page_edition'), page.revisions[
|
212
|
+
assert_equal revisions('page_creation'), page.revisions[0]
|
213
|
+
assert_equal revisions('page_edition'), page.revisions[1]
|
214
214
|
end
|
215
215
|
|
216
216
|
def test_records_original_author_for_pages_without_author
|
@@ -239,8 +239,8 @@ class PageTest < Test::Unit::TestCase
|
|
239
239
|
event.revise(bob, now, :happens_at => new_time)
|
240
240
|
|
241
241
|
assert_equal new_time, event.happens_at
|
242
|
-
assert_equal new_time, event.revisions.
|
243
|
-
assert_equal old_time, event.revisions.
|
242
|
+
assert_equal new_time, event.revisions.last.happens_at
|
243
|
+
assert_equal old_time, event.revisions.first.happens_at
|
244
244
|
end
|
245
245
|
|
246
246
|
def test_rbab
|
@@ -252,7 +252,30 @@ class PageTest < Test::Unit::TestCase
|
|
252
252
|
assert_equal date, page.happens_at
|
253
253
|
end
|
254
254
|
|
255
|
-
|
255
|
+
def test_writes_modification_time_to_own_table_too
|
256
|
+
written_page = revise_brand_new_page(:title => 'Modified page',
|
257
|
+
:kind => 'common',
|
258
|
+
:text => 'Modified now')
|
259
|
+
|
260
|
+
assert_equal now, written_page.modified_at
|
261
|
+
|
262
|
+
read_page = Page.find_by_modified_at_and_name(now, 'ModifiedPage')
|
263
|
+
|
264
|
+
assert_not_nil read_page
|
265
|
+
assert_equal written_page, read_page
|
266
|
+
end
|
267
|
+
|
268
|
+
def test_numbers_revisions
|
269
|
+
page = create_page_with_one_revision
|
270
|
+
|
271
|
+
assert_equal 1, page.revisions.size
|
272
|
+
assert_equal 1, page.revisions[0].position
|
273
|
+
|
274
|
+
page.revise(bob, now, :text => 'Modified text')
|
275
|
+
|
276
|
+
assert_equal 2, page.revisions.size
|
277
|
+
assert_equal 2, page.revisions[1].position
|
278
|
+
end
|
256
279
|
|
257
280
|
private
|
258
281
|
|