Capybara::SpecHelper.spec '#assert_title' do
  before do
    @session.visit('/with_js')
  end

  it "should be true if the page's title contains the given string" do
    expect(@session.assert_title('js')).to eq(true)
  end

  it "should be true when given an empty string" do
    expect(@session.assert_title('')).to eq(true)
  end

  it "should allow regexp matches" do
    expect(@session.assert_title(/w[a-z]{3}_js/)).to eq(true)
    expect do
      @session.assert_title(/w[a-z]{10}_js/)
    end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" to match /w[a-z]{10}_js/')
  end

  it "should wait for title", :requires => [:js] do
    @session.click_link("Change title")
    expect(@session.assert_title("changed title")).to eq(true)
  end

  it "should raise error if the title doesn't contain the given string" do
    expect do
      @session.assert_title('monkey')
    end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" to include "monkey"')
  end

  it "should normalize given title" do
    @session.assert_title('  with_js  ')
  end

  it "should normalize given title in error message" do
    expect do
      @session.assert_title(2)
    end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" to include "2"')
  end
end

Capybara::SpecHelper.spec '#assert_no_title' do
  before do
    @session.visit('/with_js')
  end

  it "should raise error if the title contains the given string" do
    expect do
      @session.assert_no_title('with_j')
    end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" not to include "with_j"')
  end

  it "should allow regexp matches" do
    expect do
      @session.assert_no_title(/w[a-z]{3}_js/)
    end.to raise_error(Capybara::ExpectationNotMet, 'expected "with_js" not to match /w[a-z]{3}_js/')
    @session.assert_no_title(/monkey/)
  end

  it "should wait for title to disappear", :requires => [:js] do
    @session.click_link("Change title")
    expect(@session.assert_no_title('with_js')).to eq(true)
  end

  it "should be true if the title doesn't contain the given string" do
    expect(@session.assert_no_title('monkey')).to eq(true)
  end
end
