# frozen_string_literal: true

require 'rails_helper'

describe "posts/new" do
  let(:author) { FactoryBot.create(:member) }

  before do
    assign(:post, FactoryBot.create(:post, author:))
    # assign(:forum, Forum.new)
    sign_in author
    controller.stub(:current_user) { author }
    render
  end

  it "renders new post form" do
    assert_select "form", action: posts_path, method: "post" do
      assert_select "input#post_subject", name: "post[subject]"
      assert_select "textarea#post_body", name: "post[body]"
    end
  end

  it 'no hidden forum field' do
    assert_select "input#post_forum_id[type=hidden]", false
  end

  it 'no forum mentioned' do
    expect(rendered).to have_no_content "This post will be posted in the forum"
  end

  it "asks what's going on in your garden" do
    expect(rendered).to have_content "What's going on in your food garden?"
  end

  it 'shows markdown help' do
    expect(rendered).to have_content 'Markdown'
  end

  context "forum specified" do
    let(:forum) { FactoryBot.create(:forum) }

    before do
      assign(:forum, forum)
      assign(:post, FactoryBot.create(:post, forum:))
      render
    end

    it 'creates a hidden field' do
      assert_select "input#post_forum_id[type='hidden'][value='#{forum.id}']"
    end

    it 'tells the user what forum it will be posted in' do
      expect(rendered).to have_content "This post will be posted in the forum #{forum.name}"
    end

    it { expect(rendered).to have_link forum.name }

    describe "asks what's going on generally" do
      it { expect(rendered).to have_content "What's going on in your food garden?" }
      it { expect(rendered).to have_content "What's up?" }
    end
  end
end
