Allow duplicate titles on importing blog posts
* the unique post_id from WordPress now gets appended if the title is already taken
This commit is contained in:
parent
e367498ef0
commit
39b482f99f
|
@ -1,7 +0,0 @@
|
|||
module Refinery
|
||||
module WordPress
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
require 'wordpress'
|
|
@ -36,16 +36,14 @@ module Refinery
|
|||
unless user
|
||||
|
||||
begin
|
||||
is_draft = draft? ? "true" : "false"
|
||||
if !draft?
|
||||
p "creating post " + title + " Draft status: " + is_draft
|
||||
post = ::BlogPost.create! :title => title,
|
||||
:body => content_formatted,
|
||||
:draft => draft?,
|
||||
:published_at => post_date,
|
||||
:created_at => post_date,
|
||||
:author => user,
|
||||
:tag_list => tag_list
|
||||
unless draft?
|
||||
#p "creating post " + title + " Draft status: " + draft?.to_s
|
||||
|
||||
post = ::BlogPost.new :title => title, :body => content_formatted,
|
||||
:draft => draft?, :published_at => post_date, :created_at => post_date,
|
||||
:author => user, :tag_list => tag_list
|
||||
post.save!
|
||||
|
||||
::BlogPost.transaction do
|
||||
categories.each do |category|
|
||||
post.categories << category.to_refinery
|
||||
|
@ -57,13 +55,12 @@ module Refinery
|
|||
comment.save
|
||||
end
|
||||
end
|
||||
|
||||
else
|
||||
p "Skipping draft post"
|
||||
end
|
||||
rescue Exception => e
|
||||
# TODO if it's not an activerecord validation error about duplicate title then raise e
|
||||
p e
|
||||
rescue ActiveRecord::RecordInvalid
|
||||
# if the title has already been taken (WP allows duplicates here,
|
||||
# refinery doesn't) append the post_id to it, making it unique
|
||||
post.title = "#{title}-#{post_id}"
|
||||
post.save
|
||||
end
|
||||
|
||||
post
|
||||
|
|
|
@ -227,9 +227,13 @@ describe Refinery::WordPress::Dump, :type => :model do
|
|||
|
||||
describe "#to_refinery" do
|
||||
before do
|
||||
User.create! :username => 'admin', :email => 'admin@example.com',
|
||||
@user = User.create! :username => 'admin', :email => 'admin@example.com',
|
||||
:password => 'password', :password_confirmation => 'password'
|
||||
end
|
||||
|
||||
|
||||
context "with a unique title" do
|
||||
before do
|
||||
@post = post.to_refinery
|
||||
end
|
||||
|
||||
|
@ -251,6 +255,22 @@ describe Refinery::WordPress::Dump, :type => :model do
|
|||
it "should assign a comment for each Refinery::WordPress::Comment" do
|
||||
@post.comments.should have(post.comments.count).records
|
||||
end
|
||||
end
|
||||
|
||||
context "with a duplicate title" do
|
||||
before do
|
||||
BlogPost.create! :title => post.title, :body => 'Lorem', :author => @user
|
||||
@post = post.to_refinery
|
||||
|
||||
end
|
||||
|
||||
it { BlogPost.should have(2).records }
|
||||
|
||||
it "should create the BlogPost with #post_id attached" do
|
||||
@post.title.should == "#{post.title}-#{post.post_id}"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue
Block a user