require 'browser_test_helper'

class IntegrationSipgateTest < TestCase
  # Regression test for #2017
  def test_nav_menu_notification_badge_clears
    id = rand(99_999_999)

    @browser = browser_instance
    login(
      username: 'master@example.com',
      password: 'test',
      url:      browser_url,
    )

    click(css: 'a[href="#manage"]')
    click(css: 'a[href="#system/integration"]')
    click(css: 'a[href="#system/integration/sipgate"]')

    switch(
      css:  '.content.active .js-switch',
      type: 'on'
    )

    watch_for(
      css:     'a[href="#cti"]',
      timeout: 4,
    )

    click(css: 'a[href="#cti"]')

    call_counter = @browser.find_elements(css: '.js-phoneMenuItem .counter')
                           .first&.text.to_i

    # simulate cti callbacks
    url = URI.join(browser_url, 'api/v1/sipgate/in')
    params = {
      direction: 'in',
      from:      '491715000003',
      to:        '4930600000004',
      callId:    "4991155921769858279-#{id}",
      cause:     'busy'
    }
    Net::HTTP.post_form(url, params.merge(event: 'newCall'))
    Net::HTTP.post_form(url, params.merge(event: 'hangup'))

    # flanky
    watch_for(
      css:     '.js-phoneMenuItem .counter',
      value:   (call_counter + 1).to_s,
      timeout: 4,
    )

    check(css: '.content.active .table-checkbox input')

    watch_for_disappear(
      css:     '.js-phoneMenuItem .counter',
      timeout: 6,
    )

    click(css: 'a[href="#manage"]')
    click(css: 'a[href="#system/integration"]')
    click(css: 'a[href="#system/integration/sipgate"]')

    switch(
      css:  '.content.active .js-switch',
      type: 'off'
    )
  end
end