# encoding: utf-8
require 'browser_test_helper'

class AgentTicketMergeTest < TestCase
  def test_agent_ticket_merge_closed_tab

    # merge ticket with closed tab
    @browser = browser_instance
    login(
      username: 'agent1@example.com',
      password: 'test',
      url: browser_url,
    )
    tasks_close_all()

    # create new ticket
    ticket1 = ticket_create(
      data: {
        customer: 'nico',
        group: 'Users',
        title: 'some subject 123äöü - with closed tab',
        body: 'some body 123äöü - with closed tab',
      },
    )
    sleep 1

    # update ticket
    ticket_update(
      data: {
        body: 'some body 1234 äöüß - with closed tab',
      },
    )

    tasks_close_all()

    # create second ticket to merge
    ticket_create(
      data: {
        customer: 'nico',
        group: 'Users',
        title: 'test to merge - with closed tab',
        body: 'some body 123äöü 222 - test to merge - with closed tab',
      },
    )

    ticket_update(
      data: {
        body: 'some body 1234 äöüß 333 - with closed tab',
      },
    )

    # check if task is shown
    match(
      css: '.tasks',
      value: 'test to merge - with closed tab',
    )

    # merge tickets
    click( css: '.active div[data-tab="ticket"] .js-actions .icon-arrow-down' )
    click( css: '.active div[data-tab="ticket"] .js-actions [data-type="ticket-merge"]' )
    watch_for(
      css: '.modal',
      value: 'merge',
    )

    set(
      css: '.modal input[name="master_ticket_number"]',
      value: ticket1[:number],
    )

    click( css: '.modal button[type="submit"]' )

    # check if merged to ticket is shown now
    watch_for(
      css: '.active .ticketZoom-header .ticket-number',
      value: ticket1[:number],
    )
    watch_for(
      css: '.active .ticket-article',
      value: 'test to merge - with closed tab',
    )

    # check if task is now gone
    match_not(
      css: '.tasks',
      value: 'test to merge',
    )
    match(
      css: '.tasks',
      value: 'some subject 123äöü - with closed tab',
    )

    # close task/cleanup
    tasks_close_all()

    # merge ticket with open tabs
    ticket3 = ticket_create(
      data: {
        customer: 'nico',
        group: 'Users',
        title: 'some subject 123äöü - with open tab',
        body: 'some body 123äöü - with open tab',
      },
    )

    ticket_create(
      data: {
        customer: 'nico',
        group: 'Users',
        title: 'test to merge - with open tab',
        body: 'some body 123äöü 222 - test to merge - with open tab',
      },
    )

    # merge tickets
    click( css: '.active div[data-tab="ticket"] .js-actions .icon-arrow-down' )
    click( css: '.active div[data-tab="ticket"] .js-actions [data-type="ticket-merge"]' )
    watch_for(
      css: '.modal',
      value: 'merge',
    )

    set(
      css: '.modal input[name="master_ticket_number"]',
      value: ticket3[:number],
    )
    click( css: '.modal button[type="submit"]' )

    # check if merged to ticket is shown now
    watch_for(
      css: '.active .ticketZoom-header .ticket-number',
      value: ticket3[:number],
    )
    watch_for(
      css: '.active .ticket-article',
      value: 'test to merge - with open tab',
    )

    # check if task is now gone
    match_not(
      css: '.tasks',
      value: 'test to merge',
    )
    match(
      css: '.tasks',
      value: 'some subject 123äöü - with open tab',
    )

  end
end
