Conversion in a gem finished
* specs are working again * added railitie * added missing migration (acts-as-taggable) * cleanups
This commit is contained in:
parent
dae4c2ea0a
commit
a45f502f44
3
Gemfile
3
Gemfile
|
@ -5,9 +5,12 @@ gem "rails", "3.0.7"
|
|||
gem "sqlite3"
|
||||
|
||||
gem "rspec-rails", ">= 2.6.0"
|
||||
gem "database_cleaner"
|
||||
|
||||
# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
|
||||
# gem 'ruby-debug'
|
||||
# gem 'ruby-debug19'
|
||||
|
||||
gem 'refinerycms'
|
||||
gem 'refinerycms-blog'
|
||||
gem 'refinerycms-wordpress-import', :path => './'
|
||||
|
|
13
Gemfile.lock
13
Gemfile.lock
|
@ -4,7 +4,7 @@ PATH
|
|||
refinerycms-wordpress-import (0.0.1)
|
||||
nokogiri (~> 1.4.4)
|
||||
refinerycms (~> 1.0.0)
|
||||
refinerycms-blog (~> 1.3.2)
|
||||
refinerycms-blog (~> 1.5.2)
|
||||
|
||||
GEM
|
||||
remote: http://rubygems.org/
|
||||
|
@ -36,6 +36,7 @@ GEM
|
|||
activemodel (= 3.0.7)
|
||||
activesupport (= 3.0.7)
|
||||
activesupport (3.0.7)
|
||||
acts-as-taggable-on (2.0.6)
|
||||
acts_as_indexed (0.7.2)
|
||||
arel (2.0.10)
|
||||
awesome_nested_set (2.0.0)
|
||||
|
@ -43,6 +44,7 @@ GEM
|
|||
babosa (0.3.4)
|
||||
bcrypt-ruby (2.1.4)
|
||||
builder (2.1.2)
|
||||
database_cleaner (0.6.7)
|
||||
devise (1.3.4)
|
||||
bcrypt-ruby (~> 2.1.2)
|
||||
orm_adapter (~> 0.0.3)
|
||||
|
@ -104,9 +106,11 @@ GEM
|
|||
friendly_id_globalize3 (~> 3.2.1)
|
||||
refinerycms-core (= 1.0.0)
|
||||
refinerycms-base (1.0.0)
|
||||
refinerycms-blog (1.3.2)
|
||||
refinerycms-blog (1.5.2)
|
||||
acts-as-taggable-on
|
||||
filters_spam (~> 0.2)
|
||||
refinerycms (>= 0.9.8)
|
||||
refinerycms-core (~> 1.0.0)
|
||||
seo_meta (~> 1.1.0)
|
||||
refinerycms-core (1.0.0)
|
||||
acts_as_indexed (~> 0.7)
|
||||
awesome_nested_set (~> 2.0)
|
||||
|
@ -166,7 +170,10 @@ PLATFORMS
|
|||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
database_cleaner
|
||||
rails (= 3.0.7)
|
||||
refinerycms
|
||||
refinerycms-blog
|
||||
refinerycms-wordpress-import!
|
||||
rspec-rails (>= 2.6.0)
|
||||
sqlite3
|
||||
|
|
7
lib/refinerycms-wordpress-import.rb
Normal file
7
lib/refinerycms-wordpress-import.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
module Refinery
|
||||
module WordPress
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
require 'wordpress'
|
|
@ -1,8 +1,7 @@
|
|||
require 'refinerycms'
|
||||
require 'refinerycms-blog'
|
||||
|
||||
module Refinery
|
||||
module WordPress
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
require 'wordpress'
|
||||
|
|
|
@ -3,56 +3,36 @@ require 'wordpress'
|
|||
|
||||
namespace :wordpress do
|
||||
desc "Reset the blog relevant tables for a clean import"
|
||||
task :reset do
|
||||
task :reset_blog do
|
||||
Rake::Task["environment"].invoke
|
||||
|
||||
%w(blog_categories blog_posts).each do |table_name|
|
||||
%w(taggings tags blog_comments blog_categories blog_posts).each do |table_name|
|
||||
p "Truncating #{table_name} ..."
|
||||
ActiveRecord::Base.connection.execute "TRUNCATE TABLE #{table_name}"
|
||||
ActiveRecord::Base.connection.execute "DELETE FROM #{table_name}"
|
||||
end
|
||||
end
|
||||
|
||||
desc "Import data from a WordPress XML dump"
|
||||
|
||||
desc "import blog data from a Refinery::WordPress XML dump"
|
||||
task :import_blog, :file_name do |task, params|
|
||||
Rake::Task["environment"].invoke
|
||||
dump = Refinery::WordPress::Dump.new(params[:file_name])
|
||||
|
||||
dump.authors.each(&:to_refinery)
|
||||
dump.posts.each(&:to_refinery)
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
desc "Import data from a Refinery::WordPress XML dump"
|
||||
task :import, :file_name do |task, params|
|
||||
Rake::Task["environment"].invoke
|
||||
|
||||
file_name = File.absolute_path(params[:file_name])
|
||||
unless File.file?(file_name) && File.readable?(file_name)
|
||||
raise "Given file '#{file_name}' no file or not readable."
|
||||
end
|
||||
|
||||
file = File.open(file_name)
|
||||
doc = Nokogiri::XML(file)
|
||||
file.close
|
||||
|
||||
p "Importing blog categories ..."
|
||||
doc.xpath("//wp:category/wp:cat_name").each do |category|
|
||||
BlogCategory.exists?(:title => category.text) || BlogCategory.create!(:title => category.text)
|
||||
end
|
||||
|
||||
doc.xpath("//wp:tag/wp:tag_slug").each do |tag|
|
||||
p tag.text
|
||||
end
|
||||
|
||||
doc.xpath("//item[wp:post_type = 'page']").each do |post|
|
||||
title = post.xpath("title").text
|
||||
body = post.xpath("content:encoded").text
|
||||
author = post.xpath("dc:creator").text
|
||||
published_at = DateTime.parse(post.xpath("wp:post_date").text)
|
||||
|
||||
tags = post.xpath("category[@domain='tag'][not(@nicename)]").collect {|tag| tag.text }
|
||||
tag_list = tags.join(', ')
|
||||
|
||||
categories = post.xpath("category[not(@*)]").collect {|cat| cat.text }
|
||||
|
||||
|
||||
p '*' * 100
|
||||
p title
|
||||
p author
|
||||
p published_at
|
||||
p tag_list
|
||||
p categories
|
||||
end
|
||||
end
|
||||
|
||||
desc "New import (testing)"
|
||||
|
@ -64,7 +44,7 @@ namespace :wordpress do
|
|||
raise "Given file '#{file_name}' no file or not readable."
|
||||
end
|
||||
|
||||
dump = WordPress::Dump.new(file_name)
|
||||
dump = Refinery::WordPress::Dump.new(file_name)
|
||||
p dump.authors
|
||||
p dump.pages
|
||||
dump.posts.each do |post|
|
||||
|
@ -77,7 +57,7 @@ namespace :wordpress do
|
|||
end
|
||||
|
||||
|
||||
desc "Import data from a WordPress XML dump into a clean database (reset first)"
|
||||
desc "Import data from a Refinery::WordPress XML dump into a clean database (reset first)"
|
||||
task :import_clean, :file_name do |task, params|
|
||||
Rake::Task["wordpress:reset"].invoke
|
||||
Rake::Task["wordpress:import"].invoke(params[:file_name])
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
module WordPress
|
||||
|
||||
module Refinery
|
||||
module WordPress
|
||||
end
|
||||
end
|
||||
|
||||
require 'nokogiri'
|
||||
require 'wordpress/author'
|
||||
require 'wordpress/tag'
|
||||
require 'wordpress/category'
|
||||
|
@ -9,3 +11,5 @@ require 'wordpress/page'
|
|||
require 'wordpress/post'
|
||||
require 'wordpress/comment'
|
||||
require 'wordpress/dump'
|
||||
|
||||
require "wordpress/railtie"
|
||||
|
|
|
@ -1,35 +1,37 @@
|
|||
module WordPress
|
||||
class Author
|
||||
attr_reader :author_node
|
||||
module Refinery
|
||||
module WordPress
|
||||
class Author
|
||||
attr_reader :author_node
|
||||
|
||||
def initialize(author_node)
|
||||
@author_node = author_node
|
||||
end
|
||||
|
||||
def login
|
||||
author_node.xpath("wp:author_login").text
|
||||
end
|
||||
|
||||
def email
|
||||
author_node.xpath("wp:author_email").text
|
||||
end
|
||||
|
||||
def ==(other)
|
||||
login == other.login
|
||||
end
|
||||
|
||||
def inspect
|
||||
"WordPress::Author: #{login} <#{email}>"
|
||||
end
|
||||
|
||||
def to_refinery
|
||||
user = User.find_or_initialize_by_username_and_email(login, email)
|
||||
unless user.persisted?
|
||||
user.password = 'password'
|
||||
user.password_confirmation = 'password'
|
||||
user.save
|
||||
def initialize(author_node)
|
||||
@author_node = author_node
|
||||
end
|
||||
|
||||
def login
|
||||
author_node.xpath("wp:author_login").text
|
||||
end
|
||||
|
||||
def email
|
||||
author_node.xpath("wp:author_email").text
|
||||
end
|
||||
|
||||
def ==(other)
|
||||
login == other.login
|
||||
end
|
||||
|
||||
def inspect
|
||||
"WordPress::Author: #{login} <#{email}>"
|
||||
end
|
||||
|
||||
def to_refinery
|
||||
user = User.find_or_initialize_by_username_and_email(login, email)
|
||||
unless user.persisted?
|
||||
user.password = 'password'
|
||||
user.password_confirmation = 'password'
|
||||
user.save
|
||||
end
|
||||
user
|
||||
end
|
||||
user
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,17 +1,19 @@
|
|||
module WordPress
|
||||
class Category
|
||||
attr_accessor :name
|
||||
module Refinery
|
||||
module WordPress
|
||||
class Category
|
||||
attr_accessor :name
|
||||
|
||||
def initialize(text)
|
||||
@name = text
|
||||
end
|
||||
def initialize(text)
|
||||
@name = text
|
||||
end
|
||||
|
||||
def ==(other)
|
||||
name == other.name
|
||||
end
|
||||
def ==(other)
|
||||
name == other.name
|
||||
end
|
||||
|
||||
def to_refinery
|
||||
BlogCategory.find_or_create_by_title(name)
|
||||
def to_refinery
|
||||
BlogCategory.find_or_create_by_title(name)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,46 +1,48 @@
|
|||
module WordPress
|
||||
class Comment
|
||||
attr_reader :node
|
||||
module Refinery
|
||||
module WordPress
|
||||
class Comment
|
||||
attr_reader :node
|
||||
|
||||
def initialize(node)
|
||||
@node = node
|
||||
end
|
||||
def initialize(node)
|
||||
@node = node
|
||||
end
|
||||
|
||||
def author
|
||||
node.xpath('wp:comment_author').text
|
||||
end
|
||||
def author
|
||||
node.xpath('wp:comment_author').text
|
||||
end
|
||||
|
||||
def email
|
||||
node.xpath('wp:comment_author_email').text
|
||||
end
|
||||
def email
|
||||
node.xpath('wp:comment_author_email').text
|
||||
end
|
||||
|
||||
def url
|
||||
node.xpath('wp:comment_author_url').text
|
||||
end
|
||||
def url
|
||||
node.xpath('wp:comment_author_url').text
|
||||
end
|
||||
|
||||
def date
|
||||
DateTime.parse node.xpath("wp:comment_date").text
|
||||
end
|
||||
def date
|
||||
DateTime.parse node.xpath("wp:comment_date").text
|
||||
end
|
||||
|
||||
def content
|
||||
node.xpath('wp:comment_content').text
|
||||
end
|
||||
def content
|
||||
node.xpath('wp:comment_content').text
|
||||
end
|
||||
|
||||
def approved?
|
||||
node.xpath('wp:comment_approved').text.to_i == 1
|
||||
end
|
||||
def approved?
|
||||
node.xpath('wp:comment_approved').text.to_i == 1
|
||||
end
|
||||
|
||||
def ==(other)
|
||||
(email == other.email) && (date == other.date) && (content == other.content)
|
||||
end
|
||||
def ==(other)
|
||||
(email == other.email) && (date == other.date) && (content == other.content)
|
||||
end
|
||||
|
||||
def to_refinery
|
||||
comment = BlogComment.new :name => author, :email => email
|
||||
def to_refinery
|
||||
comment = BlogComment.new :name => author, :email => email
|
||||
|
||||
comment.body = content
|
||||
comment.created_at = date
|
||||
comment.state = approved? ? 'approved' : 'rejected'
|
||||
comment
|
||||
comment.body = content
|
||||
comment.created_at = date
|
||||
comment.state = approved? ? 'approved' : 'rejected'
|
||||
comment
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,41 +1,46 @@
|
|||
require 'nokogiri'
|
||||
module Refinery
|
||||
module WordPress
|
||||
class Dump
|
||||
attr_reader :doc
|
||||
|
||||
module WordPress
|
||||
class Dump
|
||||
attr_reader :doc
|
||||
def initialize(file_name)
|
||||
file_name = File.absolute_path(file_name)
|
||||
|
||||
def initialize(file_name)
|
||||
file = File.open(file_name)
|
||||
@doc = Nokogiri::XML(file)
|
||||
end
|
||||
raise "Given file '#{file_name}' no file or not readable." \
|
||||
unless File.file?(file_name) && File.readable?(file_name)
|
||||
|
||||
def authors
|
||||
doc.xpath("//wp:author").collect do |author|
|
||||
WordPress::Author.new(author)
|
||||
file = File.open(file_name)
|
||||
@doc = Nokogiri::XML(file)
|
||||
end
|
||||
end
|
||||
|
||||
def pages
|
||||
doc.xpath("//item[wp:post_type = 'page']").collect do |page|
|
||||
WordPress::Page.new(page)
|
||||
def authors
|
||||
doc.xpath("//wp:author").collect do |author|
|
||||
Author.new(author)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def posts
|
||||
doc.xpath("//item[wp:post_type = 'post']").collect do |post|
|
||||
WordPress::Post.new(post)
|
||||
def pages
|
||||
doc.xpath("//item[wp:post_type = 'page']").collect do |page|
|
||||
Page.new(page)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def tags
|
||||
doc.xpath("//wp:tag/wp:tag_slug").collect do |tag|
|
||||
WordPress::Tag.new(tag.text)
|
||||
def posts
|
||||
doc.xpath("//item[wp:post_type = 'post']").collect do |post|
|
||||
Post.new(post)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def categories
|
||||
doc.xpath("//wp:category/wp:cat_name").collect do |category|
|
||||
WordPress::Category.new(category.text)
|
||||
def tags
|
||||
doc.xpath("//wp:tag/wp:tag_slug").collect do |tag|
|
||||
Tag.new(tag.text)
|
||||
end
|
||||
end
|
||||
|
||||
def categories
|
||||
doc.xpath("//wp:category/wp:cat_name").collect do |category|
|
||||
Category.new(category.text)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,57 +1,59 @@
|
|||
module WordPress
|
||||
class Page
|
||||
attr_reader :node
|
||||
module Refinery
|
||||
module WordPress
|
||||
class Page
|
||||
attr_reader :node
|
||||
|
||||
def initialize(node)
|
||||
@node = node
|
||||
end
|
||||
def initialize(node)
|
||||
@node = node
|
||||
end
|
||||
|
||||
def inspect
|
||||
"WordPress::Page(#{post_id}): #{title}"
|
||||
end
|
||||
def inspect
|
||||
"WordPress::Page(#{post_id}): #{title}"
|
||||
end
|
||||
|
||||
def title
|
||||
node.xpath("title").text
|
||||
end
|
||||
def title
|
||||
node.xpath("title").text
|
||||
end
|
||||
|
||||
def content
|
||||
node.xpath("content:encoded").text
|
||||
end
|
||||
def content
|
||||
node.xpath("content:encoded").text
|
||||
end
|
||||
|
||||
def creator
|
||||
node.xpath("dc:creator").text
|
||||
end
|
||||
def creator
|
||||
node.xpath("dc:creator").text
|
||||
end
|
||||
|
||||
def post_date
|
||||
DateTime.parse node.xpath("wp:post_date").text
|
||||
end
|
||||
def post_date
|
||||
DateTime.parse node.xpath("wp:post_date").text
|
||||
end
|
||||
|
||||
def post_id
|
||||
node.xpath("wp:post_id").text.to_i
|
||||
end
|
||||
def post_id
|
||||
node.xpath("wp:post_id").text.to_i
|
||||
end
|
||||
|
||||
def parent_id
|
||||
node.xpath("wp:post_parent").text.to_i
|
||||
end
|
||||
def parent_id
|
||||
node.xpath("wp:post_parent").text.to_i
|
||||
end
|
||||
|
||||
def status
|
||||
node.xpath("wp:status").text
|
||||
end
|
||||
def status
|
||||
node.xpath("wp:status").text
|
||||
end
|
||||
|
||||
def draft?
|
||||
status != 'publish'
|
||||
end
|
||||
def draft?
|
||||
status != 'publish'
|
||||
end
|
||||
|
||||
def ==(other)
|
||||
post_id == other.post_id
|
||||
end
|
||||
def ==(other)
|
||||
post_id == other.post_id
|
||||
end
|
||||
|
||||
def to_refinery
|
||||
page = ::Page.create!(:title => title, :created_at => post_date,
|
||||
:draft => draft?, :parent_id => parent_id)
|
||||
def to_refinery
|
||||
page = ::Page.create!(:title => title, :created_at => post_date,
|
||||
:draft => draft?, :parent_id => parent_id)
|
||||
|
||||
page.parts.create(:title => 'Body', :body => content)
|
||||
page
|
||||
page.parts.create(:title => 'Body', :body => content)
|
||||
page
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,49 +1,54 @@
|
|||
module WordPress
|
||||
class Post < Page
|
||||
def tags
|
||||
node.xpath("category[@domain='post_tag']").collect do |tag_node|
|
||||
WordPress::Tag.new(tag_node.text)
|
||||
end
|
||||
end
|
||||
|
||||
def tag_list
|
||||
tags.collect(&:name).join(',')
|
||||
end
|
||||
|
||||
def categories
|
||||
node.xpath("category[@domain='category']").collect do |cat|
|
||||
WordPress::Category.new(cat.text)
|
||||
end
|
||||
end
|
||||
|
||||
def comments
|
||||
node.xpath("wp:comment").collect do |comment_node|
|
||||
WordPress::Comment.new(comment_node)
|
||||
end
|
||||
end
|
||||
|
||||
def to_refinery
|
||||
user = User.find_by_username creator
|
||||
raise "Referenced User doesn't exist! Make sure the authors are imported first." \
|
||||
unless user
|
||||
|
||||
post = BlogPost.create! :title => title, :body => content, :draft => draft?,
|
||||
:published_at => post_date, :created_at => post_date, :author => user,
|
||||
:tag_list => tag_list
|
||||
|
||||
BlogPost.transaction do
|
||||
categories.each do |category|
|
||||
post.categories << category.to_refinery
|
||||
end
|
||||
|
||||
comments.each do |comment|
|
||||
comment = comment.to_refinery
|
||||
comment.post = post
|
||||
comment.save
|
||||
module Refinery
|
||||
module WordPress
|
||||
class Post < Page
|
||||
def tags
|
||||
node.xpath("category[@domain='post_tag']").collect do |tag_node|
|
||||
Tag.new(tag_node.text)
|
||||
end
|
||||
end
|
||||
|
||||
post
|
||||
def tag_list
|
||||
tags.collect(&:name).join(',')
|
||||
end
|
||||
|
||||
def categories
|
||||
node.xpath("category[@domain='category']").collect do |cat|
|
||||
Category.new(cat.text)
|
||||
end
|
||||
end
|
||||
|
||||
def comments
|
||||
node.xpath("wp:comment").collect do |comment_node|
|
||||
Comment.new(comment_node)
|
||||
end
|
||||
end
|
||||
|
||||
def to_refinery
|
||||
user = ::User.find_by_username creator
|
||||
raise "Referenced User doesn't exist! Make sure the authors are imported first." \
|
||||
unless user
|
||||
|
||||
post = BlogPost.new
|
||||
|
||||
|
||||
post = ::BlogPost.create! :title => title, :body => content, :draft => draft?,
|
||||
:published_at => post_date, :created_at => post_date, :author => user,
|
||||
:tag_list => tag_list
|
||||
|
||||
::BlogPost.transaction do
|
||||
categories.each do |category|
|
||||
post.categories << category.to_refinery
|
||||
end
|
||||
|
||||
comments.each do |comment|
|
||||
comment = comment.to_refinery
|
||||
comment.post = post
|
||||
comment.save
|
||||
end
|
||||
end
|
||||
|
||||
post
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
10
lib/wordpress/railtie.rb
Normal file
10
lib/wordpress/railtie.rb
Normal file
|
@ -0,0 +1,10 @@
|
|||
module Refinery
|
||||
module WordPress
|
||||
class Railtie < Rails::Railtie
|
||||
rake_tasks do
|
||||
load "tasks/wordpress.rake"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,18 +1,20 @@
|
|||
module WordPress
|
||||
class Tag
|
||||
attr_accessor :name
|
||||
module Refinery
|
||||
module WordPress
|
||||
class Tag
|
||||
attr_accessor :name
|
||||
|
||||
def initialize(text)
|
||||
@name = text
|
||||
end
|
||||
|
||||
def ==(other)
|
||||
name == other.name
|
||||
end
|
||||
|
||||
def to_refinery
|
||||
::ActsAsTaggableOn::Tag.find_or_create_by_name(name)
|
||||
end
|
||||
|
||||
def initialize(text)
|
||||
@name = text
|
||||
end
|
||||
|
||||
def ==(other)
|
||||
name == other.name
|
||||
end
|
||||
|
||||
def to_refinery
|
||||
ActsAsTaggableOn::Tag.find_or_create_by_name(name)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,13 +1,19 @@
|
|||
# Provide a simple gemspec so you can easily use your enginex
|
||||
# project in your rails apps through git.
|
||||
Gem::Specification.new do |s|
|
||||
s.name = "refinerycms-wordpress-import"
|
||||
s.summary = "Import WordPress XML dumps into refinerycms(-blog)."
|
||||
s.description = "Insert Refinerycms-wordpress-import description."
|
||||
s.files = Dir["{app,lib,config}/**/*"] + ["MIT-LICENSE", "Rakefile", "Gemfile", "README.rdoc"]
|
||||
s.version = "0.0.1"
|
||||
s.name = "refinerycms-wordpress-import"
|
||||
s.summary = "Import WordPress XML dumps into refinerycms(-blog)."
|
||||
s.description = "This gem imports a WordPress Dump into refinerycms (Page, User) and refinerycms-blog (BlogPost, BlogCategory, Tag, BlogComment)"
|
||||
s.version = "0.0.1"
|
||||
s.authors = ['Marc Remolt']
|
||||
s.date = "2011-06-02"
|
||||
|
||||
s.add_dependency 'refinerycms', '~> 1.0.0'
|
||||
s.add_dependency 'refinerycms-blog', '~> 1.3.2'
|
||||
s.add_dependency 'refinerycms-blog', '~> 1.5.2'
|
||||
s.add_dependency 'nokogiri', '~> 1.4.4'
|
||||
#s.add_dependency 'acts-as-taggable-on'
|
||||
|
||||
s.add_development_dependency 'database_cleaner'
|
||||
|
||||
s.files = Dir["{app,lib,config}/**/*"] + ["MIT-LICENSE", "Rakefile", "Gemfile", "README.rdoc"]
|
||||
end
|
||||
|
|
|
@ -1,13 +1,8 @@
|
|||
require File.expand_path('../boot', __FILE__)
|
||||
|
||||
require "active_model/railtie"
|
||||
require "active_record/railtie"
|
||||
require "action_controller/railtie"
|
||||
require "action_view/railtie"
|
||||
require "action_mailer/railtie"
|
||||
require 'rails/all'
|
||||
|
||||
Bundler.require
|
||||
require "refinerycms_wordpress_import"
|
||||
|
||||
module Dummy
|
||||
class Application < Rails::Application
|
||||
|
|
|
@ -6,5 +6,3 @@ if File.exist?(gemfile)
|
|||
require 'bundler'
|
||||
Bundler.setup
|
||||
end
|
||||
|
||||
$:.unshift File.expand_path('../../../../lib', __FILE__)
|
20
spec/dummy/config/database.yml.mysql
Normal file
20
spec/dummy/config/database.yml.mysql
Normal file
|
@ -0,0 +1,20 @@
|
|||
login: &login
|
||||
adapter: mysql2
|
||||
host: localhost
|
||||
username: root
|
||||
password:
|
||||
|
||||
development: &development
|
||||
database: your_local_database
|
||||
<<: *login
|
||||
|
||||
test: &test
|
||||
database: your_test_database
|
||||
<<: *login
|
||||
|
||||
production: &production
|
||||
adapter: mysql2
|
||||
host: localhost
|
||||
database: your_production_database
|
||||
username: your_production_database_login
|
||||
password: your_production_database_password
|
57
spec/dummy/config/database.yml.postgresql
Normal file
57
spec/dummy/config/database.yml.postgresql
Normal file
|
@ -0,0 +1,57 @@
|
|||
# PostgreSQL. Versions 7.4 and 8.x are supported.
|
||||
#
|
||||
# Install the ruby-postgres driver:
|
||||
# gem install ruby-postgres
|
||||
# On Mac OS X:
|
||||
# gem install ruby-postgres -- --include=/usr/local/pgsql
|
||||
# On Windows:
|
||||
# gem install ruby-postgres
|
||||
# Choose the win32 build.
|
||||
# Install PostgreSQL and put its /bin directory on your path.
|
||||
login: &login
|
||||
adapter: postgresql
|
||||
encoding: unicode
|
||||
username: postgres
|
||||
password: postgres
|
||||
pool: 5
|
||||
|
||||
development: &development
|
||||
database: your_local_database
|
||||
<<: *login
|
||||
|
||||
# Connect on a TCP socket. Omitted by default since the client uses a
|
||||
# domain socket that doesn't need configuration. Windows does not have
|
||||
# domain sockets, so uncomment these lines.
|
||||
#host: localhost
|
||||
#port: 5432
|
||||
|
||||
# Schema search path. The server defaults to $user,public
|
||||
#schema_search_path: myapp,sharedapp,public
|
||||
|
||||
# Minimum log levels, in increasing order:
|
||||
# debug5, debug4, debug3, debug2, debug1,
|
||||
# log, notice, warning, error, fatal, and panic
|
||||
# The server defaults to notice.
|
||||
#min_messages: warning
|
||||
|
||||
# Warning: The database defined as "test" will be erased and
|
||||
# re-generated from your development database when you run "rake".
|
||||
# Do not set this db to the same as development or production.
|
||||
test: &test
|
||||
database: your_test_database
|
||||
<<: *login
|
||||
|
||||
# Warning: The database defined as "cucumber" will be erased and
|
||||
# re-generated from your development database when you run "rake".
|
||||
# Do not set this db to the same as development or production.
|
||||
cucumber: &cucumber
|
||||
database: your_cucumber_database
|
||||
<<: *login
|
||||
|
||||
production: &production
|
||||
adapter: postgresql
|
||||
encoding: unicode
|
||||
pool: 5
|
||||
database: your_production_database
|
||||
username: your_production_database_login
|
||||
password: your_production_database_password
|
26
spec/dummy/config/database.yml.sqlite3
Normal file
26
spec/dummy/config/database.yml.sqlite3
Normal file
|
@ -0,0 +1,26 @@
|
|||
# SQLite version 3.x
|
||||
development:
|
||||
adapter: <%= "jdbc" if defined?(JRUBY_PLATFORM) %>sqlite3
|
||||
database: db/development.sqlite3
|
||||
timeout: 5000
|
||||
|
||||
# Warning: The database defined as 'test' will be erased and
|
||||
# re-generated from your development database when you run 'rake'.
|
||||
# Do not set this db to the same as development or production.
|
||||
test:
|
||||
adapter: <%= "jdbc" if defined?(JRUBY_PLATFORM) %>sqlite3
|
||||
database: db/test.sqlite3
|
||||
timeout: 5000
|
||||
|
||||
# Warning: The database defined as 'cucumber' will be erased and
|
||||
# re-generated from your development database when you run 'rake'.
|
||||
# Do not set this db to the same as development or production.
|
||||
cucumber:
|
||||
adapter: <%= "jdbc" if defined?(JRUBY_PLATFORM) %>sqlite3
|
||||
database: db/cucumber.sqlite3
|
||||
timeout: 5000
|
||||
|
||||
production:
|
||||
adapter: <%= "jdbc" if defined?(JRUBY_PLATFORM) %>sqlite3
|
||||
database: db/production.sqlite3
|
||||
timeout: 5000
|
|
@ -0,0 +1,28 @@
|
|||
class ActsAsTaggableOnMigration < ActiveRecord::Migration
|
||||
def self.up
|
||||
create_table :tags do |t|
|
||||
t.string :name
|
||||
end
|
||||
|
||||
create_table :taggings do |t|
|
||||
t.references :tag
|
||||
|
||||
# You should make sure that the column created is
|
||||
# long enough to store the required class names.
|
||||
t.references :taggable, :polymorphic => true
|
||||
t.references :tagger, :polymorphic => true
|
||||
|
||||
t.string :context
|
||||
|
||||
t.datetime :created_at
|
||||
end
|
||||
|
||||
add_index :taggings, :tag_id
|
||||
add_index :taggings, [:taggable_id, :taggable_type, :context]
|
||||
end
|
||||
|
||||
def self.down
|
||||
drop_table :taggings
|
||||
drop_table :tags
|
||||
end
|
||||
end
|
|
@ -10,7 +10,7 @@
|
|||
#
|
||||
# It's strongly recommended to check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(:version => 20110601190333) do
|
||||
ActiveRecord::Schema.define(:version => 20110602094445) do
|
||||
|
||||
create_table "blog_categories", :force => true do |t|
|
||||
t.string "title"
|
||||
|
@ -184,6 +184,23 @@ ActiveRecord::Schema.define(:version => 20110601190333) do
|
|||
add_index "slugs", ["name", "sluggable_type", "scope", "sequence"], :name => "index_slugs_on_n_s_s_and_s", :unique => true
|
||||
add_index "slugs", ["sluggable_id"], :name => "index_slugs_on_sluggable_id"
|
||||
|
||||
create_table "taggings", :force => true do |t|
|
||||
t.integer "tag_id"
|
||||
t.integer "taggable_id"
|
||||
t.string "taggable_type"
|
||||
t.integer "tagger_id"
|
||||
t.string "tagger_type"
|
||||
t.string "context"
|
||||
t.datetime "created_at"
|
||||
end
|
||||
|
||||
add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
|
||||
add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"
|
||||
|
||||
create_table "tags", :force => true do |t|
|
||||
t.string "name"
|
||||
end
|
||||
|
||||
create_table "user_plugins", :force => true do |t|
|
||||
t.integer "user_id"
|
||||
t.string "name"
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
require 'spec_helper'
|
||||
require 'wordpress'
|
||||
|
||||
describe WordPress::Dump, :type => :model do
|
||||
describe Refinery::WordPress::Dump, :type => :model do
|
||||
let(:file_name) { File.realpath(File.join(File.dirname(__FILE__), '../../fixtures/wordpress_dump.xml')) }
|
||||
let(:dump) { WordPress::Dump.new(file_name) }
|
||||
let(:dump) { Refinery::WordPress::Dump.new(file_name) }
|
||||
|
||||
it "should create a Dump object given a xml file" do
|
||||
dump.should be_a WordPress::Dump
|
||||
dump.should be_a Refinery::WordPress::Dump
|
||||
end
|
||||
|
||||
it "should include a Nokogiri::XML object" do
|
||||
|
@ -15,8 +14,8 @@ describe WordPress::Dump, :type => :model do
|
|||
|
||||
describe "#tags" do
|
||||
let(:tags) do
|
||||
[ WordPress::Tag.new('css'), WordPress::Tag.new('html'),
|
||||
WordPress::Tag.new('php'), WordPress::Tag.new('ruby')]
|
||||
[ Refinery::WordPress::Tag.new('css'), Refinery::WordPress::Tag.new('html'),
|
||||
Refinery::WordPress::Tag.new('php'), Refinery::WordPress::Tag.new('ruby')]
|
||||
end
|
||||
|
||||
it "should return all included tags" do
|
||||
|
@ -34,7 +33,7 @@ describe WordPress::Dump, :type => :model do
|
|||
end
|
||||
|
||||
it "should create a ActsAsTaggableOn::Tag" do
|
||||
ActsAsTaggableOn::Tag.should have(1).record
|
||||
::ActsAsTaggableOn::Tag.should have(1).record
|
||||
end
|
||||
|
||||
it "should copy the name over to the Tag object" do
|
||||
|
@ -46,8 +45,8 @@ describe WordPress::Dump, :type => :model do
|
|||
|
||||
describe "#categories" do
|
||||
let(:categories) do
|
||||
[ WordPress::Category.new('Rant'), WordPress::Category.new('Tutorials'),
|
||||
WordPress::Category.new('Uncategorized') ]
|
||||
[ Refinery::WordPress::Category.new('Rant'), Refinery::WordPress::Category.new('Tutorials'),
|
||||
Refinery::WordPress::Category.new('Uncategorized') ]
|
||||
end
|
||||
|
||||
it "should return all included categories" do
|
||||
|
@ -108,7 +107,7 @@ describe WordPress::Dump, :type => :model do
|
|||
Page.should have(@count + 1).record
|
||||
end
|
||||
|
||||
it "should copy the attributes from WordPress::Page" do
|
||||
it "should copy the attributes from Refinery::WordPress::Page" do
|
||||
@page.title.should == page.title
|
||||
@page.draft.should == page.draft?
|
||||
@page.created_at.should == page.post_date
|
||||
|
@ -143,7 +142,7 @@ describe WordPress::Dump, :type => :model do
|
|||
@user.should be_persisted
|
||||
end
|
||||
|
||||
it "should have copied the attributes from WordPress::Author" do
|
||||
it "should have copied the attributes from Refinery::WordPress::Author" do
|
||||
author.login.should == @user.username
|
||||
author.email.should == @user.email
|
||||
end
|
||||
|
@ -172,15 +171,15 @@ describe WordPress::Dump, :type => :model do
|
|||
|
||||
describe "#categories" do
|
||||
it { post.categories.should have(1).category }
|
||||
it { post.categories.first.should == WordPress::Category.new('Rant') }
|
||||
it { post.categories.first.should == Refinery::WordPress::Category.new('Rant') }
|
||||
end
|
||||
|
||||
describe "#tags" do
|
||||
it { post.tags.should have(3).tags }
|
||||
|
||||
it { post.tags.should include(WordPress::Tag.new('css')) }
|
||||
it { post.tags.should include(WordPress::Tag.new('html')) }
|
||||
it { post.tags.should include(WordPress::Tag.new('php')) }
|
||||
it { post.tags.should include(Refinery::WordPress::Tag.new('css')) }
|
||||
it { post.tags.should include(Refinery::WordPress::Tag.new('html')) }
|
||||
it { post.tags.should include(Refinery::WordPress::Tag.new('php')) }
|
||||
end
|
||||
|
||||
it { post.tag_list.should == 'css,html,php' }
|
||||
|
@ -212,7 +211,7 @@ describe WordPress::Dump, :type => :model do
|
|||
@comment.should be_new_record
|
||||
end
|
||||
|
||||
it "should copy the attributes from WordPress::Comment" do
|
||||
it "should copy the attributes from Refinery::WordPress::Comment" do
|
||||
@comment.name.should == comment.author
|
||||
@comment.email.should == comment.email
|
||||
@comment.body.should == comment.content
|
||||
|
@ -233,7 +232,7 @@ describe WordPress::Dump, :type => :model do
|
|||
|
||||
it { BlogPost.should have(1).record }
|
||||
|
||||
it "should copy the attributes from WordPress::Page" do
|
||||
it "should copy the attributes from Refinery::WordPress::Page" do
|
||||
@post.title.should == post.title
|
||||
@post.body.should == post.content
|
||||
@post.draft.should == post.draft?
|
||||
|
@ -242,11 +241,11 @@ describe WordPress::Dump, :type => :model do
|
|||
@post.author.username.should == post.creator
|
||||
end
|
||||
|
||||
it "should assign a category for each WordPress::Category" do
|
||||
it "should assign a category for each Refinery::WordPress::Category" do
|
||||
@post.categories.should have(post.categories.count).records
|
||||
end
|
||||
|
||||
it "should assign a comment for each WordPress::Comment" do
|
||||
it "should assign a comment for each Refinery::WordPress::Comment" do
|
||||
@post.comments.should have(post.comments.count).records
|
||||
end
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ ENV["RAILS_ENV"] = "test"
|
|||
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
||||
require "rails/test_help"
|
||||
require "rspec/rails"
|
||||
require "database_cleaner"
|
||||
|
||||
ActionMailer::Base.delivery_method = :test
|
||||
ActionMailer::Base.perform_deliveries = true
|
||||
|
@ -25,4 +26,17 @@ RSpec.configure do |config|
|
|||
|
||||
# == Mock Framework
|
||||
config.mock_with :rspec
|
||||
|
||||
config.before(:suite) do
|
||||
DatabaseCleaner.strategy = :transaction
|
||||
DatabaseCleaner.clean_with(:truncation)
|
||||
end
|
||||
|
||||
config.before(:each) do
|
||||
DatabaseCleaner.start
|
||||
end
|
||||
|
||||
config.after(:each) do
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue
Block a user