From 286a06bd4e842f3de32bead0ee350f2efadbbfda Mon Sep 17 00:00:00 2001
From: Sander Datema <info@sanderdatema.nl>
Date: Sat, 18 May 2013 21:24:29 +0200
Subject: [PATCH] Set created_at manually through PostCreator

---
 lib/post_creator.rb                  |  2 ++
 spec/components/post_creator_spec.rb | 22 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/lib/post_creator.rb b/lib/post_creator.rb
index 3285b771af1..90402693845 100644
--- a/lib/post_creator.rb
+++ b/lib/post_creator.rb
@@ -67,6 +67,7 @@ class PostCreator
       post.no_bump = @opts[:no_bump] if @opts[:no_bump].present?
       post.extract_quoted_post_numbers
       post.acting_user = @opts[:acting_user] if @opts[:acting_user].present?
+      post.created_at = Time.zone.parse(@opts[:created_at].to_s) if @opts[:created_at].present?
 
       post.image_sizes = @opts[:image_sizes] if @opts[:image_sizes].present?
       post.invalidate_oneboxes = @opts[:invalidate_oneboxes] if @opts[:invalidate_oneboxes].present?
@@ -193,6 +194,7 @@ class PostCreator
     category = Category.where(name: @opts[:category]).first
     topic_params[:category_id] = category.id if category.present?
     topic_params[:meta_data] = @opts[:meta_data] if @opts[:meta_data].present?
+    topic_params[:created_at] = Time.zone.parse(@opts[:created_at].to_s) if @opts[:created_at].present?
 
     topic = Topic.new(topic_params)
 
diff --git a/spec/components/post_creator_spec.rb b/spec/components/post_creator_spec.rb
index ba6557a3603..35275179aeb 100644
--- a/spec/components/post_creator_spec.rb
+++ b/spec/components/post_creator_spec.rb
@@ -284,5 +284,27 @@ describe PostCreator do
       target_user2.notifications.count.should == 1
     end
   end
+
+  context 'setting created_at' do
+    created_at = 1.week.ago
+    let(:topic) do
+      PostCreator.create(user,
+                         raw: 'This is very interesting test post content',
+                         title: 'This is a very interesting test post title',
+                         created_at: created_at)
+    end
+
+    let(:post) do
+      PostCreator.create(user,
+                         raw: 'This is very interesting test post content',
+                         topic_id: Topic.last,
+                         created_at: created_at)
+    end
+
+    it 'acts correctly' do
+      topic.created_at.should be_within(10.seconds).of(created_at)
+      post.created_at.should be_within(10.seconds).of(created_at)
+    end
+  end
 end