discourse/spec/script/import_scripts/base_spec.rb
Martin Brennan fcc2e7ebbf
FEATURE: Promote polymorphic bookmarks to default and migrate (#16729)
This commit migrates all bookmarks to be polymorphic (using the
bookmarkable_id and bookmarkable_type) columns. It also deletes
all the old code guarded behind the use_polymorphic_bookmarks setting
and changes that setting to true for all sites and by default for
the sake of plugins.

No data is deleted in the migrations, the old post_id and for_topic
columns for bookmarks will be dropped later on.
2022-05-23 10:07:15 +10:00

64 lines
1.8 KiB
Ruby

# frozen_string_literal: true
require_relative '../../../script/import_scripts/base'
describe ImportScripts::Base do
before do
STDOUT.stubs(:write)
end
class MockSpecImporter < ImportScripts::Base
def initialize(data)
super()
@import_data = data
end
def execute
import_users
import_posts
import_bookmarks
end
def import_users
users = @import_data[:users]
create_users(users) do |row|
{ email: row[:email], id: row[:id] }
end
end
def import_posts
posts = @import_data[:posts]
create_posts(posts) do |row|
user_id = @lookup.user_id_from_imported_user_id(row[:user_id]) || -1
{ user_id: user_id, raw: row[:raw], id: row[:id], title: "Test topic for post #{row[:id]}" }
end
end
def import_bookmarks
bookmarks = @import_data[:bookmarks]
create_bookmarks(bookmarks) do |row|
{ post_id: row[:post_id], user_id: row[:user_id] }
end
end
end
let(:import_data) do
import_file = Rack::Test::UploadedFile.new(file_from_fixtures("base-import-data.json", "json"))
ActiveSupport::HashWithIndifferentAccess.new(JSON.parse(import_file.read))
end
it "creates bookmarks, posts, and users" do
MockSpecImporter.new(import_data).perform
expect(Bookmark.where(bookmarkable_type: "Post").count).to eq(5)
expect(Post.count).to eq(5)
expect(User.where('id > 0').count).to eq(1)
expect(SiteSetting.purge_unactivated_users_grace_period_days).to eq(60)
end
it "does not change purge unactivated users setting if disabled" do
SiteSetting.purge_unactivated_users_grace_period_days = 0
MockSpecImporter.new(import_data).perform
expect(SiteSetting.purge_unactivated_users_grace_period_days).to eq(0)
end
end