From 7d45be9a8ef73d741186b9d362b91cbb5b385662 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Wed, 27 Jan 2016 22:24:54 +0100 Subject: [PATCH] Added tests for tagging and linking tickets. --- .../controllers/ticket_zoom/sidebar.coffee | 11 +- .../app/controllers/widget/link.coffee | 11 +- .../app/controllers/widget/tag.coffee | 7 +- .../agent_ticket_actions_level8_test.rb | 176 ++++++++++++++++++ test/browser_test_helper.rb | 2 + 5 files changed, 195 insertions(+), 12 deletions(-) create mode 100644 test/browser/agent_ticket_actions_level8_test.rb diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/sidebar.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/sidebar.coffee index 4ea89f01b..990f65d28 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/sidebar.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/sidebar.coffee @@ -1,12 +1,12 @@ class App.TicketZoomSidebar extends App.Controller constructor: -> super - ticket = App.Ticket.fullLocal( @ticket.id ) + ticket = App.Ticket.fullLocal(@ticket.id) @subscribeId = ticket.subscribe(@render) @render(ticket) release: => - App.Ticket.unsubscribe( @subscribeId ) + App.Ticket.unsubscribe(@subscribeId) render: (ticket) => @@ -19,12 +19,12 @@ class App.TicketZoomSidebar extends App.Controller defaults = ticket.attributes() task_state = @taskGet('ticket') - modelDiff = App.Utils.formDiff( task_state, defaults ) + modelDiff = App.Utils.formDiff(task_state, defaults) #if @isRole('Customer') # delete defaults['state_id'] # delete defaults['state'] - if !_.isEmpty( task_state ) - defaults = _.extend( defaults, task_state ) + if !_.isEmpty(task_state) + defaults = _.extend(defaults, task_state) new App.ControllerForm( el: el.find('.edit') @@ -62,7 +62,6 @@ class App.TicketZoomSidebar extends App.Controller object_type: 'Ticket' object: ticket links: @links - container: @el.closest('.content') ) showTicketHistory = => diff --git a/app/assets/javascripts/app/controllers/widget/link.coffee b/app/assets/javascripts/app/controllers/widget/link.coffee index 2fb116a40..ba16440c4 100644 --- a/app/assets/javascripts/app/controllers/widget/link.coffee +++ b/app/assets/javascripts/app/controllers/widget/link.coffee @@ -2,6 +2,7 @@ class App.WidgetLink extends App.Controller events: 'click .js-add': 'add' 'click .js-delete': 'delete' + 'click .js-delete .icon': 'delete' constructor: -> super @@ -48,9 +49,9 @@ class App.WidgetLink extends App.Controller delete: (e) => e.preventDefault() - link_type = $(e.target).data('link-type') - link_object_source = $(e.target).data('object') - link_object_source_value = $(e.target).data('object-id') + link_type = $(e.currentTarget).data('link-type') + link_object_source = $(e.currentTarget).data('object') + link_object_source_value = $(e.currentTarget).data('object-id') link_object_target = @object_type link_object_target_value = @object.id @@ -77,7 +78,7 @@ class App.WidgetLink extends App.Controller link_object_id: @object.id object: @object parent: @ - container: @container + container: @el.closest('.content') ) class App.LinkAdd extends App.ControllerModal @@ -92,7 +93,7 @@ class App.LinkAdd extends App.ControllerModal @ticket = @object @fetch() - fetch: -> + fetch: => @ajax( id: 'ticket_related' type: 'GET' diff --git a/app/assets/javascripts/app/controllers/widget/tag.coffee b/app/assets/javascripts/app/controllers/widget/tag.coffee index ca43c441e..d524ef4f2 100644 --- a/app/assets/javascripts/app/controllers/widget/tag.coffee +++ b/app/assets/javascripts/app/controllers/widget/tag.coffee @@ -56,7 +56,12 @@ class App.WidgetTag extends App.Controller return if !item @add(item) - add: (item) => + add: (items) => + for item in items.split(',') + item = item.trim() + @addItem(item) + + addItem: (item) => if _.contains(@tags, item) @render() return diff --git a/test/browser/agent_ticket_actions_level8_test.rb b/test/browser/agent_ticket_actions_level8_test.rb new file mode 100644 index 000000000..857bfe41a --- /dev/null +++ b/test/browser/agent_ticket_actions_level8_test.rb @@ -0,0 +1,176 @@ +# encoding: utf-8 +require 'browser_test_helper' + +class AgentTicketActionLevel8Test < TestCase + def test_tags + + @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äöü - tags', + body: 'some body 123äöü - tags', + }, + ) + + # set tag #1 + click( + css: '.content.active .js-newTagLabel', + ) + set( + css: '.content.active .js-newTagInput', + value: 'tag1', + ) + sendkey( + value: :enter, + ) + + # set tag #2 + click( + css: '.content.active .js-newTagLabel', + ) + set( + css: '.content.active .js-newTagInput', + value: 'tag 2', + ) + sendkey( + value: :enter, + ) + + # set tag #3 + #4 + click( + css: '.content.active .js-newTagLabel', + ) + set( + css: '.content.active .js-newTagInput', + value: 'tag3, tag4', + ) + sendkey( + value: :enter, + ) + + # verify tags + tags = @browser.find_elements({ css: '.content.active .js-tag' }) + assert(tags) + assert(tags[0]) + tags.each {|element| + text = element.text + if text == 'tag1' + assert(true, 'tag1 exists') + elsif text == 'tag 2' + assert(true, 'tag 2 exists') + elsif text == 'tag3' + assert(true, 'tag3 exists') + elsif text == 'tag4' + assert(true, 'tag4 exists') + else + assert(false, "invalid tag '#{text}'") + end + } + + # reload browser + reload() + + # verify tags + tags = @browser.find_elements({ css: '.content.active .js-tag' }) + assert(tags) + assert(tags[0]) + tags.each {|element| + text = element.text + if text == 'tag1' + assert(true, 'tag1 exists') + elsif text == 'tag 2' + assert(true, 'tag 2 exists') + elsif text == 'tag3' + assert(true, 'tag3 exists') + elsif text == 'tag4' + assert(true, 'tag4 exists') + else + assert(false, "invalid tag '#{text}'") + end + } + end + + def test_link + + @browser = browser_instance + login( + username: 'agent1@example.com', + password: 'test', + url: browser_url, + ) + tasks_close_all() + + ticket1 = ticket_create( + data: { + customer: 'nico', + group: 'Users', + title: 'some subject - link#1', + body: 'some body - link#1', + }, + ) + + ticket2 = ticket_create( + data: { + customer: 'nico', + group: 'Users', + title: 'some subject - link#2', + body: 'some body - link#2', + }, + ) + + click( + css: '.content.active .links .js-add', + ) + sleep 2 + + set( + css: '.content.active .modal-body [name="ticket_number"]', + value: ticket1[:number], + ) + select( + css: '.content.active .modal-body [name="link_type"]', + value: 'normal', + ) + click( + css: '.content.active .modal-footer .js-submit', + ) + + watch_for( + css: '.content.active .ticketLinks', + value: ticket1[:title], + ) + + reload() + + watch_for( + css: '.content.active .ticketLinks', + value: ticket1[:title], + ) + click( + css: '.content.active .ticketLinks .js-delete' + ) + watch_for_disappear( + css: '.content.active .ticketLinks', + value: ticket1[:title], + ) + + reload() + + watch_for_disappear( + css: '.content.active .ticketLinks', + value: ticket1[:title], + ) + + end + +end diff --git a/test/browser_test_helper.rb b/test/browser_test_helper.rb index b447a0764..640c20534 100644 --- a/test/browser_test_helper.rb +++ b/test/browser_test_helper.rb @@ -1202,6 +1202,7 @@ wait untill text in selector disabppears { id: 123, number: '100001', + title: 'overview #1', } =end @@ -1308,6 +1309,7 @@ wait untill text in selector disabppears ticket = { id: id, number: number, + title: data[:title], } sleep 3 # wait until notify is gone screenshot(browser: instance, comment: 'ticket_create_ok')