|
@@ -0,0 +1,317 @@
|
|
|
+# encoding: utf-8
|
|
|
+require 'test_helper'
|
|
|
+
|
|
|
+class TicketOverviewTest < ActiveSupport::TestCase
|
|
|
+
|
|
|
+ # create base
|
|
|
+ group = Group.create_or_update(
|
|
|
+ name: 'OverviewTest',
|
|
|
+ updated_at: '2015-02-05 16:37:00',
|
|
|
+ updated_by_id: 1,
|
|
|
+ created_by_id: 1,
|
|
|
+ )
|
|
|
+ roles = Role.where(name: 'Agent')
|
|
|
+ agent1 = User.create_or_update(
|
|
|
+ login: 'ticket-overview-agent1@example.com',
|
|
|
+ firstname: 'Overview',
|
|
|
+ lastname: 'Agent1',
|
|
|
+ email: 'ticket-overview-agent1@example.com',
|
|
|
+ password: 'agentpw',
|
|
|
+ active: true,
|
|
|
+ roles: roles,
|
|
|
+ groups: [group],
|
|
|
+ updated_at: '2015-02-05 16:37:00',
|
|
|
+ updated_by_id: 1,
|
|
|
+ created_by_id: 1,
|
|
|
+ )
|
|
|
+ agent2 = User.create_or_update(
|
|
|
+ login: 'ticket-overview-agent2@example.com',
|
|
|
+ firstname: 'Overview',
|
|
|
+ lastname: 'Agent2',
|
|
|
+ email: 'ticket-overview-agent2@example.com',
|
|
|
+ password: 'agentpw',
|
|
|
+ active: true,
|
|
|
+ roles: roles,
|
|
|
+ #groups: groups,
|
|
|
+ updated_at: '2015-02-05 16:38:00',
|
|
|
+ updated_by_id: 1,
|
|
|
+ created_by_id: 1,
|
|
|
+ )
|
|
|
+ roles = Role.where(name: 'Customer')
|
|
|
+ organization1 = Organization.create_or_update(
|
|
|
+ name: 'Overview Org',
|
|
|
+ updated_at: '2015-02-05 16:37:00',
|
|
|
+ updated_by_id: 1,
|
|
|
+ created_by_id: 1,
|
|
|
+ )
|
|
|
+ customer1 = User.create_or_update(
|
|
|
+ login: 'ticket-overview-customer1@example.com',
|
|
|
+ firstname: 'Overview',
|
|
|
+ lastname: 'Customer1',
|
|
|
+ email: 'ticket-overview-customer1@example.com',
|
|
|
+ password: 'customerpw',
|
|
|
+ active: true,
|
|
|
+ organization_id: organization1.id,
|
|
|
+ roles: roles,
|
|
|
+ updated_at: '2015-02-05 16:37:00',
|
|
|
+ updated_by_id: 1,
|
|
|
+ created_by_id: 1,
|
|
|
+ )
|
|
|
+ customer2 = User.create_or_update(
|
|
|
+ login: 'ticket-overview-customer2@example.com',
|
|
|
+ firstname: 'Overview',
|
|
|
+ lastname: 'Customer2',
|
|
|
+ email: 'ticket-overview-customer2@example.com',
|
|
|
+ password: 'customerpw',
|
|
|
+ active: true,
|
|
|
+ organization_id: organization1.id,
|
|
|
+ roles: roles,
|
|
|
+ updated_at: '2015-02-05 16:37:00',
|
|
|
+ updated_by_id: 1,
|
|
|
+ created_by_id: 1,
|
|
|
+ )
|
|
|
+ customer3 = User.create_or_update(
|
|
|
+ login: 'ticket-overview-customer3@example.com',
|
|
|
+ firstname: 'Overview',
|
|
|
+ lastname: 'Customer3',
|
|
|
+ email: 'ticket-overview-customer3@example.com',
|
|
|
+ password: 'customerpw',
|
|
|
+ active: true,
|
|
|
+ organization_id: nil,
|
|
|
+ roles: roles,
|
|
|
+ updated_at: '2015-02-05 16:37:00',
|
|
|
+ updated_by_id: 1,
|
|
|
+ created_by_id: 1,
|
|
|
+ )
|
|
|
+ Overview.destroy_all
|
|
|
+ UserInfo.current_user_id = 1
|
|
|
+ overview_role = Role.find_by(name: 'Agent')
|
|
|
+ Overview.create_or_update(
|
|
|
+ name: 'My assigned Tickets',
|
|
|
+ link: 'my_assigned',
|
|
|
+ prio: 1000,
|
|
|
+ role_id: overview_role.id,
|
|
|
+ condition: {
|
|
|
+ 'ticket.state_id' => {
|
|
|
+ operator: 'is',
|
|
|
+ value: [ 1, 2, 3, 7 ],
|
|
|
+ },
|
|
|
+ 'ticket.owner_id' => {
|
|
|
+ operator: 'is',
|
|
|
+ pre_condition: 'current_user.id',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ order: {
|
|
|
+ by: 'created_at',
|
|
|
+ direction: 'ASC',
|
|
|
+ },
|
|
|
+ view: {
|
|
|
+ d: %w(title customer group created_at),
|
|
|
+ s: %w(title customer group created_at),
|
|
|
+ m: %w(number title customer group created_at),
|
|
|
+ view_mode_default: 's',
|
|
|
+ },
|
|
|
+ )
|
|
|
+
|
|
|
+ Overview.create_or_update(
|
|
|
+ name: 'Unassigned & Open',
|
|
|
+ link: 'all_unassigned',
|
|
|
+ prio: 1010,
|
|
|
+ role_id: overview_role.id,
|
|
|
+ condition: {
|
|
|
+ 'ticket.state_id' => {
|
|
|
+ operator: 'is',
|
|
|
+ value: [1, 2, 3],
|
|
|
+ },
|
|
|
+ 'ticket.owner_id' => {
|
|
|
+ operator: 'is',
|
|
|
+ value: 1,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ order: {
|
|
|
+ by: 'created_at',
|
|
|
+ direction: 'ASC',
|
|
|
+ },
|
|
|
+ view: {
|
|
|
+ d: %w(title customer group created_at),
|
|
|
+ s: %w(title customer group created_at),
|
|
|
+ m: %w(number title customer group created_at),
|
|
|
+ view_mode_default: 's',
|
|
|
+ },
|
|
|
+ )
|
|
|
+ Overview.create_or_update(
|
|
|
+ name: 'My Tickets 2',
|
|
|
+ link: 'my_tickets_2',
|
|
|
+ prio: 1020,
|
|
|
+ role_id: overview_role.id,
|
|
|
+ user_ids: [agent2.id],
|
|
|
+ condition: {
|
|
|
+ 'ticket.state_id' => {
|
|
|
+ operator: 'is',
|
|
|
+ value: [ 1, 2, 3, 7 ],
|
|
|
+ },
|
|
|
+ 'ticket.owner_id' => {
|
|
|
+ operator: 'is',
|
|
|
+ pre_condition: 'current_user.id',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ order: {
|
|
|
+ by: 'created_at',
|
|
|
+ direction: 'ASC',
|
|
|
+ },
|
|
|
+ view: {
|
|
|
+ d: %w(title customer group created_at),
|
|
|
+ s: %w(title customer group created_at),
|
|
|
+ m: %w(number title customer group created_at),
|
|
|
+ view_mode_default: 's',
|
|
|
+ },
|
|
|
+ )
|
|
|
+
|
|
|
+ overview_role = Role.find_by(name: 'Customer')
|
|
|
+ Overview.create_or_update(
|
|
|
+ name: 'My Tickets',
|
|
|
+ link: 'my_tickets',
|
|
|
+ prio: 1100,
|
|
|
+ role_id: overview_role.id,
|
|
|
+ condition: {
|
|
|
+ 'ticket.state_id' => {
|
|
|
+ operator: 'is',
|
|
|
+ value: [ 1, 2, 3, 4, 6, 7 ],
|
|
|
+ },
|
|
|
+ 'ticket.customer_id' => {
|
|
|
+ operator: 'is',
|
|
|
+ pre_condition: 'current_user.id',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ order: {
|
|
|
+ by: 'created_at',
|
|
|
+ direction: 'DESC',
|
|
|
+ },
|
|
|
+ view: {
|
|
|
+ d: %w(title customer state created_at),
|
|
|
+ s: %w(number title state created_at),
|
|
|
+ m: %w(number title state created_at),
|
|
|
+ view_mode_default: 's',
|
|
|
+ },
|
|
|
+ )
|
|
|
+ Overview.create_or_update(
|
|
|
+ name: 'My Organization Tickets',
|
|
|
+ link: 'my_organization_tickets',
|
|
|
+ prio: 1200,
|
|
|
+ role_id: overview_role.id,
|
|
|
+ organization_shared: true,
|
|
|
+ condition: {
|
|
|
+ 'ticket.state_id' => {
|
|
|
+ operator: 'is',
|
|
|
+ value: [ 1, 2, 3, 4, 6, 7 ],
|
|
|
+ },
|
|
|
+ 'ticket.organization_id' => {
|
|
|
+ operator: 'is',
|
|
|
+ pre_condition: 'current_user.organization_id',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ order: {
|
|
|
+ by: 'created_at',
|
|
|
+ direction: 'DESC',
|
|
|
+ },
|
|
|
+ view: {
|
|
|
+ d: %w(title customer state created_at),
|
|
|
+ s: %w(number title customer state created_at),
|
|
|
+ m: %w(number title customer state created_at),
|
|
|
+ view_mode_default: 's',
|
|
|
+ },
|
|
|
+ )
|
|
|
+ Overview.create_or_update(
|
|
|
+ name: 'My Organization Tickets (open)',
|
|
|
+ link: 'my_organization_tickets_open',
|
|
|
+ prio: 1200,
|
|
|
+ role_id: overview_role.id,
|
|
|
+ user_ids: [customer2.id],
|
|
|
+ organization_shared: true,
|
|
|
+ condition: {
|
|
|
+ 'ticket.state_id' => {
|
|
|
+ operator: 'is',
|
|
|
+ value: [ 1, 2, 3 ],
|
|
|
+ },
|
|
|
+ 'ticket.organization_id' => {
|
|
|
+ operator: 'is',
|
|
|
+ pre_condition: 'current_user.organization_id',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ order: {
|
|
|
+ by: 'created_at',
|
|
|
+ direction: 'DESC',
|
|
|
+ },
|
|
|
+ view: {
|
|
|
+ d: %w(title customer state created_at),
|
|
|
+ s: %w(number title customer state created_at),
|
|
|
+ m: %w(number title customer state created_at),
|
|
|
+ view_mode_default: 's',
|
|
|
+ },
|
|
|
+ )
|
|
|
+
|
|
|
+ overview_role = Role.find_by(name: 'Admin')
|
|
|
+ Overview.create_or_update(
|
|
|
+ name: 'Not Shown Admin',
|
|
|
+ link: 'not_shown_admin',
|
|
|
+ prio: 9900,
|
|
|
+ role_id: overview_role.id,
|
|
|
+ condition: {
|
|
|
+ 'ticket.state_id' => {
|
|
|
+ operator: 'is',
|
|
|
+ value: [ 1, 2, 3 ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ order: {
|
|
|
+ by: 'created_at',
|
|
|
+ direction: 'DESC',
|
|
|
+ },
|
|
|
+ view: {
|
|
|
+ d: %w(title customer state created_at),
|
|
|
+ s: %w(number title customer state created_at),
|
|
|
+ m: %w(number title customer state created_at),
|
|
|
+ view_mode_default: 's',
|
|
|
+ },
|
|
|
+ )
|
|
|
+
|
|
|
+ test 'ticket create' do
|
|
|
+
|
|
|
+ result = Ticket::Overviews.all(
|
|
|
+ current_user: agent1,
|
|
|
+ )
|
|
|
+ assert_equal(2, result.count)
|
|
|
+ assert_equal('My assigned Tickets', result[0].name)
|
|
|
+ assert_equal('Unassigned & Open', result[1].name)
|
|
|
+
|
|
|
+ result = Ticket::Overviews.all(
|
|
|
+ current_user: agent2,
|
|
|
+ )
|
|
|
+ assert_equal(3, result.count)
|
|
|
+ assert_equal('My assigned Tickets', result[0].name)
|
|
|
+ assert_equal('Unassigned & Open', result[1].name)
|
|
|
+ assert_equal('My Tickets 2', result[2].name)
|
|
|
+
|
|
|
+ result = Ticket::Overviews.all(
|
|
|
+ current_user: customer1,
|
|
|
+ )
|
|
|
+ assert_equal(2, result.count)
|
|
|
+ assert_equal('My Tickets', result[0].name)
|
|
|
+ assert_equal('My Organization Tickets', result[1].name)
|
|
|
+
|
|
|
+ result = Ticket::Overviews.all(
|
|
|
+ current_user: customer2,
|
|
|
+ )
|
|
|
+ assert_equal(3, result.count)
|
|
|
+ assert_equal('My Tickets', result[0].name)
|
|
|
+ assert_equal('My Organization Tickets', result[1].name)
|
|
|
+ assert_equal('My Organization Tickets (open)', result[2].name)
|
|
|
+
|
|
|
+ result = Ticket::Overviews.all(
|
|
|
+ current_user: customer3,
|
|
|
+ )
|
|
|
+ assert_equal(1, result.count)
|
|
|
+ assert_equal('My Tickets', result[0].name)
|
|
|
+
|
|
|
+ end
|
|
|
+
|
|
|
+end
|