|
@@ -1,1209 +0,0 @@
|
|
|
-# Copyright (C) 2012-2023 Zammad Foundation, https://zammad-foundation.org/
|
|
|
-
|
|
|
-require 'integration_test_helper'
|
|
|
-
|
|
|
-class ObjectManagerTest < ActiveSupport::TestCase
|
|
|
-
|
|
|
- test 'a object manager' do
|
|
|
-
|
|
|
- list_objects = ObjectManager.list_objects
|
|
|
- assert_equal(%w[Ticket TicketArticle User Organization Group], list_objects)
|
|
|
-
|
|
|
- list_objects = ObjectManager.list_frontend_objects
|
|
|
- assert_equal(%w[Ticket User Organization Group], list_objects)
|
|
|
-
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
-
|
|
|
- # create simple attribute
|
|
|
- attribute1 = ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test1',
|
|
|
- display: 'Test 1',
|
|
|
- data_type: 'input',
|
|
|
- data_option: {
|
|
|
- maxlength: 200,
|
|
|
- type: 'text',
|
|
|
- null: false,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- editable: false,
|
|
|
- to_migrate: false,
|
|
|
- )
|
|
|
- assert(attribute1)
|
|
|
- assert_equal('test1', attribute1.name)
|
|
|
- assert_equal(true, attribute1.editable)
|
|
|
- assert_equal(true, attribute1.to_create)
|
|
|
- assert_equal(true, attribute1.to_migrate)
|
|
|
- assert_equal(false, attribute1.to_delete)
|
|
|
- assert_equal(true, ObjectManager::Attribute.pending_migration?)
|
|
|
-
|
|
|
- attribute1 = ObjectManager::Attribute.get(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test1',
|
|
|
- )
|
|
|
- assert(attribute1)
|
|
|
- assert_equal('test1', attribute1.name)
|
|
|
- assert_equal(true, attribute1.editable)
|
|
|
- assert_equal(true, attribute1.to_create)
|
|
|
- assert_equal(true, attribute1.to_migrate)
|
|
|
- assert_equal(false, attribute1.to_delete)
|
|
|
- assert_equal(true, ObjectManager::Attribute.pending_migration?)
|
|
|
-
|
|
|
- # delete attribute without execute migrations
|
|
|
- ObjectManager::Attribute.remove(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test1',
|
|
|
- )
|
|
|
-
|
|
|
- attribute1 = ObjectManager::Attribute.get(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test1',
|
|
|
- )
|
|
|
- assert_not(attribute1)
|
|
|
-
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert(ObjectManager::Attribute.migration_execute)
|
|
|
-
|
|
|
- attribute1 = ObjectManager::Attribute.get(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test1',
|
|
|
- )
|
|
|
- assert_not(attribute1)
|
|
|
-
|
|
|
- # create invalid attributes
|
|
|
- assert_raises(ActiveRecord::RecordInvalid) do
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test2_id',
|
|
|
- display: 'Test 2 with id',
|
|
|
- data_type: 'input',
|
|
|
- data_option: {
|
|
|
- maxlength: 200,
|
|
|
- type: 'text',
|
|
|
- null: false,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- end
|
|
|
- assert_raises(ActiveRecord::RecordInvalid) do
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test3_ids',
|
|
|
- display: 'Test 3 with id',
|
|
|
- data_type: 'input',
|
|
|
- data_option: {
|
|
|
- maxlength: 200,
|
|
|
- type: 'text',
|
|
|
- null: false,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- end
|
|
|
- assert_raises(ActiveRecord::RecordInvalid) do
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test4',
|
|
|
- display: 'Test 4 with missing data_option[:type]',
|
|
|
- data_type: 'input',
|
|
|
- data_option: {
|
|
|
- maxlength: 200,
|
|
|
- null: false,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- end
|
|
|
-
|
|
|
- attribute5 = ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test5',
|
|
|
- display: 'Test 5',
|
|
|
- data_type: 'boolean',
|
|
|
- data_option: {
|
|
|
- default: true,
|
|
|
- options: {
|
|
|
- true: 'Yes',
|
|
|
- false: 'No',
|
|
|
- },
|
|
|
- null: false,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- assert(attribute5)
|
|
|
- assert_equal('test5', attribute5.name)
|
|
|
- ObjectManager::Attribute.remove(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test5',
|
|
|
- )
|
|
|
-
|
|
|
- assert_raises(ActiveRecord::RecordInvalid) do
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test6',
|
|
|
- display: 'Test 6',
|
|
|
- data_type: 'boolean',
|
|
|
- data_option: {
|
|
|
- options: {
|
|
|
- true: 'Yes',
|
|
|
- false: 'No',
|
|
|
- },
|
|
|
- null: false,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- end
|
|
|
-
|
|
|
- attribute7 = ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test7',
|
|
|
- display: 'Test 7',
|
|
|
- data_type: 'select',
|
|
|
- data_option: {
|
|
|
- default: 1,
|
|
|
- options: {
|
|
|
- '1' => 'aa',
|
|
|
- '2' => 'bb',
|
|
|
- },
|
|
|
- null: false,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- assert(attribute7)
|
|
|
- assert_equal('test7', attribute7.name)
|
|
|
- ObjectManager::Attribute.remove(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test7',
|
|
|
- )
|
|
|
-
|
|
|
- assert_raises(ActiveRecord::RecordInvalid) do
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test8',
|
|
|
- display: 'Test 8',
|
|
|
- data_type: 'select',
|
|
|
- data_option: {
|
|
|
- default: 1,
|
|
|
- null: false,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- end
|
|
|
-
|
|
|
- attribute9 = ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test9',
|
|
|
- display: 'Test 9',
|
|
|
- data_type: 'datetime',
|
|
|
- data_option: {
|
|
|
- future: true,
|
|
|
- past: false,
|
|
|
- diff: 24,
|
|
|
- null: true,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- assert(attribute9)
|
|
|
- assert_equal('test9', attribute9.name)
|
|
|
- ObjectManager::Attribute.remove(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test9',
|
|
|
- )
|
|
|
-
|
|
|
- assert_raises(ActiveRecord::RecordInvalid) do
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test10',
|
|
|
- display: 'Test 10',
|
|
|
- data_type: 'datetime',
|
|
|
- data_option: {
|
|
|
- past: false,
|
|
|
- diff: 24,
|
|
|
- null: true,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- end
|
|
|
-
|
|
|
- attribute11 = ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test11',
|
|
|
- display: 'Test 11',
|
|
|
- data_type: 'date',
|
|
|
- data_option: {
|
|
|
- future: true,
|
|
|
- past: false,
|
|
|
- diff: 24,
|
|
|
- null: true,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- assert(attribute11)
|
|
|
- assert_equal('test11', attribute11.name)
|
|
|
- ObjectManager::Attribute.remove(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test11',
|
|
|
- )
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
-
|
|
|
- assert_raises(ActiveRecord::RecordInvalid) do
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test13|',
|
|
|
- display: 'Test 13',
|
|
|
- data_type: 'date',
|
|
|
- data_option: {
|
|
|
- future: true,
|
|
|
- past: false,
|
|
|
- diff: 24,
|
|
|
- null: true,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- end
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
-
|
|
|
- assert_raises(ActiveRecord::RecordInvalid) do
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test14!',
|
|
|
- display: 'Test 14',
|
|
|
- data_type: 'date',
|
|
|
- data_option: {
|
|
|
- future: true,
|
|
|
- past: false,
|
|
|
- diff: 24,
|
|
|
- null: true,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- end
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
-
|
|
|
- assert_raises(ActiveRecord::RecordInvalid) do
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test15ä',
|
|
|
- display: 'Test 15',
|
|
|
- data_type: 'date',
|
|
|
- data_option: {
|
|
|
- future: true,
|
|
|
- past: false,
|
|
|
- diff: 24,
|
|
|
- null: true,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- end
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
-
|
|
|
- # Test case #16 invalidated after callback added to set default #data_option[:null] value
|
|
|
-
|
|
|
- assert_raises(ActiveRecord::RecordInvalid) do
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'test17',
|
|
|
- display: 'Test 17',
|
|
|
- data_type: 'integer',
|
|
|
- data_option: {
|
|
|
- default: 2,
|
|
|
- min: 1,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- end
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
-
|
|
|
- assert_raises(ActiveRecord::RecordInvalid) do
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'delete',
|
|
|
- display: 'Test 18',
|
|
|
- data_type: 'input',
|
|
|
- data_option: {
|
|
|
- maxlength: 200,
|
|
|
- type: 'text',
|
|
|
- null: false,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- end
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
-
|
|
|
- attribute_count = ObjectManager::Attribute.count
|
|
|
- assert_raises(ActiveRecord::RecordInvalid) do
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'updated_at',
|
|
|
- display: 'Update Time',
|
|
|
- data_type: 'datetime',
|
|
|
- data_option: {
|
|
|
- future: true,
|
|
|
- past: true,
|
|
|
- diff: 24,
|
|
|
- null: true,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
- end
|
|
|
- assert_equal(attribute_count, ObjectManager::Attribute.count)
|
|
|
-
|
|
|
- assert_raises(ActiveRecord::RecordInvalid) do
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'updated_AT',
|
|
|
- display: 'Update Time',
|
|
|
- data_type: 'datetime',
|
|
|
- data_option: {
|
|
|
- future: true,
|
|
|
- past: true,
|
|
|
- diff: 24,
|
|
|
- null: true,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
- end
|
|
|
-
|
|
|
- assert_equal(attribute_count, ObjectManager::Attribute.count)
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- test 'b object manager attribute' do
|
|
|
-
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert_equal(0, ObjectManager::Attribute.where(to_migrate: true).count)
|
|
|
- assert_equal(0, ObjectManager::Attribute.migrations.count)
|
|
|
-
|
|
|
- attribute1 = ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'attribute1',
|
|
|
- display: 'Attribute 1',
|
|
|
- data_type: 'input',
|
|
|
- data_option: {
|
|
|
- maxlength: 200,
|
|
|
- type: 'text',
|
|
|
- null: true,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- assert(attribute1)
|
|
|
-
|
|
|
- assert_equal(true, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert_equal(1, ObjectManager::Attribute.where(to_migrate: true).count)
|
|
|
- assert_equal(1, ObjectManager::Attribute.migrations.count)
|
|
|
-
|
|
|
- # execute migrations
|
|
|
- assert(ObjectManager::Attribute.migration_execute)
|
|
|
-
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert_equal(0, ObjectManager::Attribute.where(to_migrate: true).count)
|
|
|
- assert_equal(0, ObjectManager::Attribute.migrations.count)
|
|
|
-
|
|
|
- # create example ticket
|
|
|
- ticket1 = Ticket.create(
|
|
|
- title: 'some attribute test1',
|
|
|
- group: Group.lookup(name: 'Users'),
|
|
|
- customer_id: 2,
|
|
|
- state: Ticket::State.lookup(name: 'new'),
|
|
|
- priority: Ticket::Priority.lookup(name: '2 normal'),
|
|
|
- attribute1: 'some attribute text',
|
|
|
- updated_by_id: 1,
|
|
|
- created_by_id: 1,
|
|
|
- )
|
|
|
- assert('ticket1 created', ticket1)
|
|
|
-
|
|
|
- assert_equal('some attribute test1', ticket1.title)
|
|
|
- assert_equal('Users', ticket1.group.name)
|
|
|
- assert_equal('new', ticket1.state.name)
|
|
|
- assert_equal('some attribute text', ticket1.attribute1)
|
|
|
-
|
|
|
- # add additional attributes
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'attribute2',
|
|
|
- display: 'Attribute 2',
|
|
|
- data_type: 'select',
|
|
|
- data_option: {
|
|
|
- default: '2',
|
|
|
- options: {
|
|
|
- '1' => 'aa',
|
|
|
- '2' => 'bb',
|
|
|
- },
|
|
|
- null: true,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'attribute3',
|
|
|
- display: 'Attribute 3',
|
|
|
- data_type: 'datetime',
|
|
|
- data_option: {
|
|
|
- future: true,
|
|
|
- past: false,
|
|
|
- diff: 24,
|
|
|
- null: true,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'attribute4',
|
|
|
- display: 'Attribute 4',
|
|
|
- data_type: 'datetime',
|
|
|
- data_option: {
|
|
|
- future: true,
|
|
|
- past: false,
|
|
|
- diff: 24,
|
|
|
- null: true,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
-
|
|
|
- # execute migrations
|
|
|
- assert_equal(true, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert(ObjectManager::Attribute.migration_execute)
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
-
|
|
|
- # create example ticket
|
|
|
- ticket2 = Ticket.create(
|
|
|
- title: 'some attribute test2',
|
|
|
- group: Group.lookup(name: 'Users'),
|
|
|
- customer_id: 2,
|
|
|
- state: Ticket::State.lookup(name: 'new'),
|
|
|
- priority: Ticket::Priority.lookup(name: '2 normal'),
|
|
|
- attribute1: 'some attribute text',
|
|
|
- attribute2: '1',
|
|
|
- attribute3: Time.zone.parse('2016-05-12 00:59:59 UTC'),
|
|
|
- attribute4: Date.parse('2016-05-11'),
|
|
|
- updated_by_id: 1,
|
|
|
- created_by_id: 1,
|
|
|
- )
|
|
|
- assert('ticket2 created', ticket2)
|
|
|
-
|
|
|
- assert_equal('some attribute test2', ticket2.title)
|
|
|
- assert_equal('Users', ticket2.group.name)
|
|
|
- assert_equal('new', ticket2.state.name)
|
|
|
- assert_equal('some attribute text', ticket2.attribute1)
|
|
|
- assert_equal('1', ticket2.attribute2)
|
|
|
- assert_equal(Time.zone.parse('2016-05-12 00:59:59 UTC'), ticket2.attribute3)
|
|
|
- assert_equal(Date.parse('2016-05-11'), ticket2.attribute4)
|
|
|
-
|
|
|
- # update data_option null -> to_config
|
|
|
- attribute1 = ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'attribute1',
|
|
|
- display: 'Attribute 1',
|
|
|
- data_type: 'input',
|
|
|
- data_option: {
|
|
|
- maxlength: 200,
|
|
|
- type: 'text',
|
|
|
- null: false,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- assert(attribute1)
|
|
|
-
|
|
|
- assert_equal(true, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert_equal(0, ObjectManager::Attribute.where(to_migrate: true).count)
|
|
|
- assert_equal(1, ObjectManager::Attribute.where(to_config: true).count)
|
|
|
- assert_equal(1, ObjectManager::Attribute.migrations.count)
|
|
|
-
|
|
|
- # execute migrations
|
|
|
- assert(ObjectManager::Attribute.migration_execute)
|
|
|
-
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert_equal(0, ObjectManager::Attribute.where(to_migrate: true).count)
|
|
|
- assert_equal(0, ObjectManager::Attribute.where(to_config: true).count)
|
|
|
- assert_equal(0, ObjectManager::Attribute.migrations.count)
|
|
|
-
|
|
|
- # update data_option maxlength -> to_config && to_migrate
|
|
|
- attribute1 = ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'attribute1',
|
|
|
- display: 'Attribute 1',
|
|
|
- data_type: 'input',
|
|
|
- data_option: {
|
|
|
- maxlength: 250,
|
|
|
- type: 'text',
|
|
|
- null: false,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- assert(attribute1)
|
|
|
-
|
|
|
- assert_equal(true, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert_equal(1, ObjectManager::Attribute.where(to_migrate: true).count)
|
|
|
- assert_equal(1, ObjectManager::Attribute.where(to_config: true).count)
|
|
|
- assert_equal(1, ObjectManager::Attribute.migrations.count)
|
|
|
-
|
|
|
- # execute migrations
|
|
|
- assert(ObjectManager::Attribute.migration_execute)
|
|
|
-
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert_equal(0, ObjectManager::Attribute.where(to_migrate: true).count)
|
|
|
- assert_equal(0, ObjectManager::Attribute.where(to_config: true).count)
|
|
|
- assert_equal(0, ObjectManager::Attribute.migrations.count)
|
|
|
-
|
|
|
- # remove attribute
|
|
|
- ObjectManager::Attribute.remove(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'attribute1',
|
|
|
- )
|
|
|
- ObjectManager::Attribute.remove(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'attribute2',
|
|
|
- )
|
|
|
- ObjectManager::Attribute.remove(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'attribute3',
|
|
|
- )
|
|
|
- ObjectManager::Attribute.remove(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'attribute4',
|
|
|
- )
|
|
|
- assert(ObjectManager::Attribute.migration_execute)
|
|
|
-
|
|
|
- ticket2 = Ticket.find(ticket2.id)
|
|
|
- assert('ticket2 created', ticket2)
|
|
|
-
|
|
|
- assert_equal('some attribute test2', ticket2.title)
|
|
|
- assert_equal('Users', ticket2.group.name)
|
|
|
- assert_equal('new', ticket2.state.name)
|
|
|
- assert_nil(ticket2[:attribute1])
|
|
|
- assert_nil(ticket2[:attribute2])
|
|
|
- assert_nil(ticket2[:attribute3])
|
|
|
- assert_nil(ticket2[:attribute4])
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- test 'c object manager attribute - certain names' do
|
|
|
-
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert_equal(0, ObjectManager::Attribute.where(to_migrate: true).count)
|
|
|
- assert_equal(0, ObjectManager::Attribute.migrations.count)
|
|
|
-
|
|
|
- attribute1 = ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: '1_a_anfrage_status',
|
|
|
- display: '1_a_anfrage_status',
|
|
|
- data_type: 'input',
|
|
|
- data_option: {
|
|
|
- maxlength: 200,
|
|
|
- type: 'text',
|
|
|
- null: true,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- assert(attribute1)
|
|
|
-
|
|
|
- assert_equal(true, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert_equal(1, ObjectManager::Attribute.where(to_migrate: true).count)
|
|
|
- assert_equal(1, ObjectManager::Attribute.migrations.count)
|
|
|
-
|
|
|
- # execute migrations
|
|
|
- assert(ObjectManager::Attribute.migration_execute)
|
|
|
-
|
|
|
- assert_equal(false, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert_equal(0, ObjectManager::Attribute.where(to_migrate: true).count)
|
|
|
- assert_equal(0, ObjectManager::Attribute.migrations.count)
|
|
|
-
|
|
|
- # create example ticket
|
|
|
- ticket1 = Ticket.create!(
|
|
|
- title: 'some attribute test3',
|
|
|
- group: Group.lookup(name: 'Users'),
|
|
|
- customer_id: 2,
|
|
|
- state: Ticket::State.lookup(name: 'new'),
|
|
|
- priority: Ticket::Priority.lookup(name: '2 normal'),
|
|
|
- '1_a_anfrage_status': 'some attribute text',
|
|
|
- updated_by_id: 1,
|
|
|
- created_by_id: 1,
|
|
|
- )
|
|
|
- assert('ticket1 created', ticket1)
|
|
|
-
|
|
|
- assert_equal('some attribute test3', ticket1.title)
|
|
|
- assert_equal('Users', ticket1.group.name)
|
|
|
- assert_equal('new', ticket1.state.name)
|
|
|
- assert_equal('some attribute text', ticket1['1_a_anfrage_status'])
|
|
|
-
|
|
|
- condition = {
|
|
|
- 'ticket.title' => {
|
|
|
- operator: 'is',
|
|
|
- value: 'some attribute test3',
|
|
|
- },
|
|
|
- }
|
|
|
- ticket_count, tickets = Ticket.selectors(condition, limit: 10)
|
|
|
- assert_equal(ticket_count, 1)
|
|
|
- assert_equal(tickets[0].id, ticket1.id)
|
|
|
-
|
|
|
- condition = {
|
|
|
- 'ticket.1_a_anfrage_status' => {
|
|
|
- operator: 'is',
|
|
|
- value: 'some attribute text',
|
|
|
- },
|
|
|
- }
|
|
|
- ticket_count, tickets = Ticket.selectors(condition, limit: 10)
|
|
|
- assert_equal(ticket_count, 1)
|
|
|
- assert_equal(tickets[0].id, ticket1.id)
|
|
|
-
|
|
|
- agent1 = User.create_or_update(
|
|
|
- login: 'agent1@example.com',
|
|
|
- firstname: 'Notification',
|
|
|
- lastname: 'Agent1',
|
|
|
- email: 'agent1@example.com',
|
|
|
- password: 'agentpw',
|
|
|
- active: true,
|
|
|
- roles: Role.where(name: 'Agent'),
|
|
|
- groups: Group.all,
|
|
|
- updated_by_id: 1,
|
|
|
- created_by_id: 1,
|
|
|
- )
|
|
|
-
|
|
|
- Overview.create!(
|
|
|
- name: 'Overview1',
|
|
|
- link: 'my_overview',
|
|
|
- roles: Role.all,
|
|
|
- condition: {
|
|
|
- 'ticket.1_a_anfrage_status' => {
|
|
|
- operator: 'is',
|
|
|
- value: 'some attribute text',
|
|
|
- },
|
|
|
- },
|
|
|
- order: {
|
|
|
- by: '1_a_anfrage_status',
|
|
|
- direction: 'DESC',
|
|
|
- },
|
|
|
- group_by: '1_a_anfrage_status',
|
|
|
- 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',
|
|
|
- },
|
|
|
- prio: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- created_by_id: 1,
|
|
|
- )
|
|
|
-
|
|
|
- result = Ticket::Overviews.index(agent1)
|
|
|
-
|
|
|
- overview = nil
|
|
|
- result.each do |local_overview|
|
|
|
- next if local_overview[:overview][:name] != 'Overview1'
|
|
|
-
|
|
|
- overview = local_overview
|
|
|
- break
|
|
|
- end
|
|
|
- assert(overview)
|
|
|
-
|
|
|
- assert_equal(1, overview[:tickets].count)
|
|
|
- assert_equal(1, overview[:count])
|
|
|
- assert_equal(ticket1.id, overview[:tickets][0][:id])
|
|
|
- end
|
|
|
-
|
|
|
- test 'd object manager attribute - update attribute type' do
|
|
|
-
|
|
|
- attribute1 = ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'example_1',
|
|
|
- display: 'example_1',
|
|
|
- data_type: 'input',
|
|
|
- data_option: {
|
|
|
- default: '',
|
|
|
- maxlength: 200,
|
|
|
- type: 'text',
|
|
|
- null: true,
|
|
|
- options: {},
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
-
|
|
|
- assert_equal(true, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert_equal(1, ObjectManager::Attribute.migrations.count)
|
|
|
-
|
|
|
- assert(ObjectManager::Attribute.migration_execute)
|
|
|
-
|
|
|
- assert_raises(ActiveRecord::RecordInvalid) do
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'example_1',
|
|
|
- display: 'example_1',
|
|
|
- data_type: 'boolean',
|
|
|
- data_option: {
|
|
|
- default: true,
|
|
|
- options: {
|
|
|
- true: 'Yes',
|
|
|
- false: 'No',
|
|
|
- },
|
|
|
- null: false,
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 200,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
- end
|
|
|
-
|
|
|
- attribute2 = ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'example_1',
|
|
|
- display: 'example_1',
|
|
|
- data_type: 'select',
|
|
|
- data_option: {
|
|
|
- default: '',
|
|
|
- maxlength: 200,
|
|
|
- type: 'text',
|
|
|
- null: true,
|
|
|
- options: {
|
|
|
- aa: 'aa',
|
|
|
- bb: 'bb',
|
|
|
- },
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
-
|
|
|
- assert_equal(attribute1.id, attribute2.id)
|
|
|
- assert_equal(true, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert_equal(1, ObjectManager::Attribute.migrations.count)
|
|
|
-
|
|
|
- assert(ObjectManager::Attribute.migration_execute)
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
- test 'overview any owner / no owner is set' do
|
|
|
-
|
|
|
- group = Group.create!(
|
|
|
- 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!(
|
|
|
- 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,
|
|
|
- )
|
|
|
-
|
|
|
- ObjectManager::Attribute.add(
|
|
|
- object: 'Ticket',
|
|
|
- name: 'watcher',
|
|
|
- display: 'watcher',
|
|
|
- data_type: 'select',
|
|
|
- data_option: {
|
|
|
- default: '',
|
|
|
- maxlength: 200,
|
|
|
- type: 'text',
|
|
|
- null: true,
|
|
|
- options: {
|
|
|
- aa: 'agent a',
|
|
|
- bb: 'agent b',
|
|
|
- cc: 'agent c',
|
|
|
- },
|
|
|
- },
|
|
|
- active: true,
|
|
|
- screens: {},
|
|
|
- position: 20,
|
|
|
- created_by_id: 1,
|
|
|
- updated_by_id: 1,
|
|
|
- )
|
|
|
-
|
|
|
- assert_equal(true, ObjectManager::Attribute.pending_migration?)
|
|
|
- assert_equal(1, ObjectManager::Attribute.migrations.count)
|
|
|
-
|
|
|
- assert(ObjectManager::Attribute.migration_execute)
|
|
|
-
|
|
|
- Ticket.destroy_all
|
|
|
- Overview.destroy_all
|
|
|
-
|
|
|
- UserInfo.current_user_id = 1
|
|
|
- overview_role = Role.find_by(name: 'Agent')
|
|
|
- overview1 = Overview.create!(
|
|
|
- name: 'not watched',
|
|
|
- prio: 1000,
|
|
|
- role_ids: [overview_role.id],
|
|
|
- condition: {
|
|
|
- 'ticket.watcher' => {
|
|
|
- operator: 'is',
|
|
|
- value: '',
|
|
|
- },
|
|
|
- },
|
|
|
- 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',
|
|
|
- },
|
|
|
- )
|
|
|
-
|
|
|
- overview2 = Overview.create!(
|
|
|
- name: 'not watched by somebody',
|
|
|
- prio: 2000,
|
|
|
- role_ids: [overview_role.id],
|
|
|
- condition: {
|
|
|
- 'ticket.watcher' => {
|
|
|
- operator: 'is not',
|
|
|
- value: '',
|
|
|
- },
|
|
|
- },
|
|
|
- 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',
|
|
|
- },
|
|
|
- )
|
|
|
-
|
|
|
- overview3 = Overview.create!(
|
|
|
- name: 'not watched as array',
|
|
|
- prio: 3000,
|
|
|
- role_ids: [overview_role.id],
|
|
|
- condition: {
|
|
|
- 'ticket.watcher' => {
|
|
|
- operator: 'is',
|
|
|
- value: [''],
|
|
|
- },
|
|
|
- },
|
|
|
- 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',
|
|
|
- },
|
|
|
- )
|
|
|
-
|
|
|
- overview4 = Overview.create!(
|
|
|
- name: 'not watched by somebody as array',
|
|
|
- prio: 4000,
|
|
|
- role_ids: [overview_role.id],
|
|
|
- condition: {
|
|
|
- 'ticket.watcher' => {
|
|
|
- operator: 'is not',
|
|
|
- value: [''],
|
|
|
- },
|
|
|
- },
|
|
|
- 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',
|
|
|
- },
|
|
|
- )
|
|
|
-
|
|
|
- overview5 = Overview.create!(
|
|
|
- name: 'watched by aa',
|
|
|
- prio: 5000,
|
|
|
- role_ids: [overview_role.id],
|
|
|
- condition: {
|
|
|
- 'ticket.watcher' => {
|
|
|
- operator: 'is',
|
|
|
- value: 'aa',
|
|
|
- },
|
|
|
- },
|
|
|
- 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',
|
|
|
- },
|
|
|
- )
|
|
|
-
|
|
|
- overview6 = Overview.create!(
|
|
|
- name: 'not watched by aa',
|
|
|
- prio: 6000,
|
|
|
- role_ids: [overview_role.id],
|
|
|
- condition: {
|
|
|
- 'ticket.watcher' => {
|
|
|
- operator: 'is not',
|
|
|
- value: 'aa',
|
|
|
- },
|
|
|
- },
|
|
|
- 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',
|
|
|
- },
|
|
|
- )
|
|
|
-
|
|
|
- overview7 = Overview.create!(
|
|
|
- name: 'watched by aa array',
|
|
|
- prio: 7000,
|
|
|
- role_ids: [overview_role.id],
|
|
|
- condition: {
|
|
|
- 'ticket.watcher' => {
|
|
|
- operator: 'is',
|
|
|
- value: ['aa'],
|
|
|
- },
|
|
|
- },
|
|
|
- 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',
|
|
|
- },
|
|
|
- )
|
|
|
-
|
|
|
- overview8 = Overview.create!(
|
|
|
- name: 'not watched by aa array',
|
|
|
- prio: 8000,
|
|
|
- role_ids: [overview_role.id],
|
|
|
- condition: {
|
|
|
- 'ticket.watcher' => {
|
|
|
- operator: 'is not',
|
|
|
- value: ['aa'],
|
|
|
- },
|
|
|
- },
|
|
|
- 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',
|
|
|
- },
|
|
|
- )
|
|
|
-
|
|
|
- ticket1 = Ticket.create!(
|
|
|
- title: 'overview test 1',
|
|
|
- group: Group.lookup(name: 'OverviewTest'),
|
|
|
- customer_id: 2,
|
|
|
- owner_id: 1,
|
|
|
- watcher: '',
|
|
|
- state: Ticket::State.lookup(name: 'new'),
|
|
|
- priority: Ticket::Priority.lookup(name: '2 normal'),
|
|
|
- )
|
|
|
-
|
|
|
- travel 2.seconds
|
|
|
- ticket2 = Ticket.create!(
|
|
|
- title: 'overview test 2',
|
|
|
- group: Group.lookup(name: 'OverviewTest'),
|
|
|
- customer_id: 2,
|
|
|
- owner_id: nil,
|
|
|
- watcher: nil,
|
|
|
- state: Ticket::State.lookup(name: 'new'),
|
|
|
- priority: Ticket::Priority.lookup(name: '2 normal'),
|
|
|
- )
|
|
|
-
|
|
|
- travel 2.seconds
|
|
|
- ticket3 = Ticket.create!(
|
|
|
- title: 'overview test 3',
|
|
|
- group: Group.lookup(name: 'OverviewTest'),
|
|
|
- customer_id: 2,
|
|
|
- owner_id: agent1.id,
|
|
|
- watcher: 'aa',
|
|
|
- state: Ticket::State.lookup(name: 'new'),
|
|
|
- priority: Ticket::Priority.lookup(name: '2 normal'),
|
|
|
- )
|
|
|
-
|
|
|
- result = Ticket::Overviews.index(agent1)
|
|
|
- assert_equal(result[0][:overview][:id], overview1.id)
|
|
|
- assert_equal(result[0][:overview][:name], 'not watched')
|
|
|
- assert_equal(result[0][:overview][:view], 'not_watched')
|
|
|
- assert_equal(result[0][:tickets].class, Array)
|
|
|
- assert_equal(result[0][:tickets][0][:id], ticket1.id)
|
|
|
- assert_equal(result[0][:tickets][1][:id], ticket2.id)
|
|
|
- assert_equal(result[0][:count], 2)
|
|
|
-
|
|
|
- assert_equal(result[1][:overview][:id], overview2.id)
|
|
|
- assert_equal(result[1][:overview][:name], 'not watched by somebody')
|
|
|
- assert_equal(result[1][:overview][:view], 'not_watched_by_somebody')
|
|
|
- assert_equal(result[1][:tickets].class, Array)
|
|
|
- assert_equal(result[1][:tickets][0][:id], ticket3.id)
|
|
|
- assert_equal(result[1][:count], 1)
|
|
|
-
|
|
|
- assert_equal(result[2][:overview][:id], overview3.id)
|
|
|
- assert_equal(result[2][:overview][:name], 'not watched as array')
|
|
|
- assert_equal(result[2][:overview][:view], 'not_watched_as_array')
|
|
|
- assert_equal(result[2][:tickets].class, Array)
|
|
|
- assert_equal(result[2][:tickets][0][:id], ticket1.id)
|
|
|
- assert_equal(result[2][:tickets][1][:id], ticket2.id)
|
|
|
- assert_equal(result[2][:count], 2)
|
|
|
-
|
|
|
- assert_equal(result[3][:overview][:id], overview4.id)
|
|
|
- assert_equal(result[3][:overview][:name], 'not watched by somebody as array')
|
|
|
- assert_equal(result[3][:overview][:view], 'not_watched_by_somebody_as_array')
|
|
|
- assert_equal(result[3][:tickets].class, Array)
|
|
|
- assert_equal(result[3][:tickets][0][:id], ticket3.id)
|
|
|
- assert_equal(result[3][:count], 1)
|
|
|
-
|
|
|
- assert_equal(result[4][:overview][:id], overview5.id)
|
|
|
- assert_equal(result[4][:overview][:name], 'watched by aa')
|
|
|
- assert_equal(result[4][:overview][:view], 'watched_by_aa')
|
|
|
- assert_equal(result[4][:tickets].class, Array)
|
|
|
- assert_equal(result[4][:tickets][0][:id], ticket3.id)
|
|
|
- assert_equal(result[4][:count], 1)
|
|
|
-
|
|
|
- assert_equal(result[5][:overview][:id], overview6.id)
|
|
|
- assert_equal(result[5][:overview][:name], 'not watched by aa')
|
|
|
- assert_equal(result[5][:overview][:view], 'not_watched_by_aa')
|
|
|
- assert_equal(result[5][:tickets].class, Array)
|
|
|
- assert_equal(result[5][:tickets][0][:id], ticket1.id)
|
|
|
- assert_equal(result[5][:tickets][1][:id], ticket2.id)
|
|
|
- assert_equal(result[5][:count], 2)
|
|
|
-
|
|
|
- assert_equal(result[6][:overview][:id], overview7.id)
|
|
|
- assert_equal(result[6][:overview][:name], 'watched by aa array')
|
|
|
- assert_equal(result[6][:overview][:view], 'watched_by_aa_array')
|
|
|
- assert_equal(result[6][:tickets].class, Array)
|
|
|
- assert_equal(result[6][:tickets][0][:id], ticket3.id)
|
|
|
- assert_equal(result[6][:count], 1)
|
|
|
-
|
|
|
- assert_equal(result[7][:overview][:id], overview8.id)
|
|
|
- assert_equal(result[7][:overview][:name], 'not watched by aa array')
|
|
|
- assert_equal(result[7][:overview][:view], 'not_watched_by_aa_array')
|
|
|
- assert_equal(result[7][:tickets].class, Array)
|
|
|
- assert_equal(result[7][:tickets][0][:id], ticket1.id)
|
|
|
- assert_equal(result[7][:tickets][1][:id], ticket2.id)
|
|
|
- assert_equal(result[7][:count], 2)
|
|
|
-
|
|
|
- end
|
|
|
-
|
|
|
-end
|