# frozen_string_literal: true

RSpec.describe Trashable do
  # post is trashable, just use it.
  it "works correctly" do
    p1 = Fabricate(:post)
    p2 = Fabricate(:post)

    expect { p1.trash! }.to change { Post.count }.by(-1)
    expect(Post.with_deleted.count).to eq(Post.count + 1)
  end

  it "can list only deleted items" do
    p1 = Fabricate(:post)
    p2 = Fabricate(:post)

    p1.trash!
    expect(Post.only_deleted.count).to eq(1)
    expect(Post.only_deleted.first).to eq(p1)
  end

  it "can recover" do
    p1 = Fabricate(:post)
    p1.trash!
    expect { p1.recover! }.to change { Post.count }.by(1)
    expect(Post.with_deleted.count).to eq(Post.count)
  end
end