Skip to content
Snippets Groups Projects
Commit 35259a4f authored by Hiroyuki Sato's avatar Hiroyuki Sato
Browse files

Encapsulate the commit.sha logic

parent 5c51db0b
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -138,6 +138,10 @@ class WikiPage
versions.first
end
 
def last_commit_sha
commit&.sha
end
# Returns the Date that this latest version was
# created on.
def created_at
Loading
Loading
@@ -196,7 +200,7 @@ class WikiPage
@attributes[:content] = new_content
@attributes[:format] = format
 
if last_commit_sha && last_commit_sha != commit.sha
if last_commit_sha && last_commit_sha != self.last_commit_sha
raise PageChangedError.new("You are attempting to update a page that has changed since you started editing it.")
end
 
Loading
Loading
Loading
Loading
@@ -5,7 +5,7 @@
 
= f.hidden_field :title, value: @page.title
- if @page.persisted?
= f.hidden_field :last_commit_sha, value: @page.commit.sha
= f.hidden_field :last_commit_sha, value: @page.last_commit_sha
.form-group
.col-sm-12= f.label :format, class: 'control-label-full-width'
.col-sm-12
Loading
Loading
Loading
Loading
@@ -211,15 +211,13 @@ describe WikiPage, models: true do
 
context 'with same last commit sha' do
it 'returns true' do
last_commit_sha = @page.commit.sha
expect(@page.update('more content', last_commit_sha: last_commit_sha)).to be_truthy
expect(@page.update('more content', last_commit_sha: @page.last_commit_sha)).to be_truthy
end
end
 
context 'with different last commit sha' do
it 'raises exception' do
last_commit_sha = 'xxx'
expect { @page.update('more content', last_commit_sha: last_commit_sha) }.to raise_error(WikiPage::PageChangedError)
expect { @page.update('more content', last_commit_sha: 'xxx') }.to raise_error(WikiPage::PageChangedError)
end
end
end
Loading
Loading
@@ -345,6 +343,30 @@ describe WikiPage, models: true do
end
end
 
describe '#last_commit_sha' do
before do
create_page("Update", "content")
@page = wiki.find_page("Update")
end
after do
destroy_page("Update")
end
it 'returns commit sha' do
expect(@page.last_commit_sha).to eq @page.commit.sha
end
it 'is changed after page updated' do
last_commit_sha_before_update = @page.last_commit_sha
@page.update("new content")
@page = wiki.find_page("Update")
expect(@page.last_commit_sha).not_to eq last_commit_sha_before_update
end
end
private
 
def remove_temp_repo(path)
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment