# frozen_string_literal: true

RSpec.describe "Drawer - index", type: :system do
  fab!(:current_user) { Fabricate(:user) }

  let(:drawer_page) { PageObjects::Pages::ChatDrawer.new }

  before do
    chat_system_bootstrap
    sign_in(current_user)
  end

  it "can leave a direct message" do
    channel = Fabricate(:direct_message_channel, users: [current_user])
    row = PageObjects::Components::Chat::ChannelRow.new(channel.id)

    drawer_page.visit_index
    drawer_page.click_direct_messages

    expect(row).to exist

    row.leave

    expect(row).to be_non_existent
  end

  it "can leave a group message" do
    channel =
      Fabricate(
        :direct_message_channel,
        group: true,
        users: [current_user, Fabricate(:user), Fabricate(:user)],
      )
    row = PageObjects::Components::Chat::ChannelRow.new(channel.id)

    drawer_page.visit_index
    drawer_page.click_direct_messages

    expect(row).to exist

    row.leave

    expect(row).to be_non_existent
  end

  it "can open browse" do
    channel = Fabricate(:chat_channel)

    drawer_page.visit_index
    drawer_page.channels_index.open_browse

    expect(drawer_page.browse).to have_channel(name: channel.name)
  end

  it "shows empty state when no dms" do
    drawer_page.visit_index
    drawer_page.click_direct_messages
    expect(page).to have_css("#c-footer-direct-messages.--active")
    expect(page).to have_selector(".channel-list-empty-message")
  end
end