require 'test_helper'

class UserRevertTest < ActiveSupport::TestCase
  context "Reverting a user's changes" do
    setup do
      @creator = FactoryGirl.create(:user)
      @user = FactoryGirl.create(:user)
      CurrentUser.user = @user
      CurrentUser.ip_addr = "127.0.0.1"

      CurrentUser.scoped(@creator) do
        @parent = FactoryGirl.create(:post)
        @post = FactoryGirl.create(:post, :tag_string => "aaa bbb ccc", :rating => "q", :source => "xyz")
      end

      @post.stubs(:merge_version?).returns(false)
      @post.update_attributes(:tag_string => "bbb ccc xxx", :source => "", :rating => "e")
    end

    teardown do
      CurrentUser.user = nil
      CurrentUser.ip_addr = nil
    end

    subject { UserRevert.new(@user.id) }

    should "have the correct data" do
      assert_equal("bbb ccc xxx", @post.tag_string)
      assert_equal("", @post.source)
      assert_equal("e", @post.rating)
    end

    context "when processed" do
      setup do
        subject.process
        @post.reload
      end

      should "revert the user's changes" do
        assert_equal("aaa bbb ccc", @post.tag_string)
        assert_equal("xyz", @post.source)
        assert_equal("q", @post.rating)
      end
    end

  end
end
