82 lines
2.1 KiB
Ruby
82 lines
2.1 KiB
Ruby
require 'spec_helper'
|
|
require_dependency 'post_revision'
|
|
|
|
describe PostRevision do
|
|
|
|
before do
|
|
@number = 1
|
|
end
|
|
|
|
def create_rev(modifications, post_id=1)
|
|
@number += 1
|
|
PostRevision.create!(post_id: post_id, user_id: 1, number: @number, modifications: modifications)
|
|
end
|
|
|
|
it "can grab history from current object" do
|
|
p = PostRevision.new(modifications: {"foo" => ["bar", "bar1"]})
|
|
p.previous("foo").should == "bar"
|
|
p.current("foo").should == "bar1"
|
|
end
|
|
|
|
it "can fallback to previous revisions if needed" do
|
|
create_rev("foo" => ["A", "B"])
|
|
r2 = create_rev("bar" => ["C", "D"])
|
|
|
|
r2.current("foo").should == "B"
|
|
r2.previous("foo").should == "B"
|
|
end
|
|
|
|
it "can fallback to post if needed" do
|
|
post = Fabricate(:post)
|
|
r = create_rev({"foo" => ["A", "B"]}, post.id)
|
|
|
|
r.current("raw").should == post.raw
|
|
r.previous("raw").should == post.raw
|
|
r.current("cooked").should == post.cooked
|
|
r.previous("cooked").should == post.cooked
|
|
end
|
|
|
|
it "can fallback to topic if needed" do
|
|
post = Fabricate(:post)
|
|
r = create_rev({"foo" => ["A", "B"]}, post.id)
|
|
|
|
r.current("title").should == post.topic.title
|
|
r.previous("title").should == post.topic.title
|
|
end
|
|
|
|
it "can find title changes" do
|
|
r = create_rev({"title" => ["hello", "frog"]})
|
|
r.title_changes[:inline].should =~ /frog.*hello/
|
|
r.title_changes[:side_by_side].should =~ /hello.*frog/
|
|
end
|
|
|
|
it "can find category changes" do
|
|
cat1 = Fabricate(:category, name: "cat1")
|
|
cat2 = Fabricate(:category, name: "cat2")
|
|
|
|
r = create_rev({"category_id" => [cat1.id, cat2.id]})
|
|
|
|
changes = r.category_changes
|
|
changes[:previous_category_id].should == cat1.id
|
|
changes[:current_category_id].should == cat2.id
|
|
|
|
end
|
|
|
|
it "can find wiki changes" do
|
|
r = create_rev("wiki" => [false, true])
|
|
|
|
changes = r.wiki_changes
|
|
changes[:previous_wiki].should == false
|
|
changes[:current_wiki].should == true
|
|
end
|
|
|
|
it "can find post_type changes" do
|
|
r = create_rev("post_type" => [1, 2])
|
|
|
|
changes = r.post_type_changes
|
|
changes[:previous_post_type].should == 1
|
|
changes[:current_post_type].should == 2
|
|
end
|
|
|
|
end
|