require 'rails_helper'

RSpec.describe Comment, type: :model do
  let(:comment) { FactoryBot.build(:comment) }

  it 'should be valid' do
    expect(comment).to be_valid
  end

  it 'has a body' do
    nil_body = FactoryBot.build(:comment, body: nil)
    empty_body = FactoryBot.build(:comment, body: '')

    expect(nil_body).to be_invalid
    expect(empty_body).to be_invalid
  end

  it 'can have no parent' do
    no_parent = FactoryBot.build(:comment, parent: nil)

    expect(no_parent).to be_valid
    expect(no_parent.parent).to be_nil
  end

  it 'can have a parent' do
    parent = FactoryBot.build(:comment)
    child = FactoryBot.build(:comment, parent: parent)

    expect(child).to be_valid
    expect(child.parent).to eq(parent)
  end

  it 'can have no children' do
    expect(comment.children).to be_empty
  end

  it 'can have 1+ children' do
    parent = FactoryBot.create(:comment)
    child1 = FactoryBot.create(:comment, parent: parent)
    child2 = FactoryBot.create(:comment, parent: parent)

    expect(parent.children.length).to eq(2)
  end

  it 'has a flag to tell if it is a post update that defaults to false' do
    comment = Comment.new
    
    expect(comment.is_post_update).to be_falsy
  end
end
