2018-12-05 10:43:53 +00:00
|
|
|
require 'rails_helper'
|
|
|
|
|
|
|
|
RSpec.describe 'ObjectManager Attributes', type: :request do
|
|
|
|
|
|
|
|
let(:admin_user) do
|
|
|
|
create(:admin_user)
|
|
|
|
end
|
|
|
|
|
|
|
|
describe 'request handling' do
|
|
|
|
|
|
|
|
it 'does add new ticket text object' do
|
|
|
|
authenticated_as(admin_user)
|
|
|
|
post '/api/v1/object_manager_attributes', params: {}, as: :json
|
|
|
|
|
|
|
|
# token based on headers
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'name': 'test1',
|
|
|
|
'object': 'Ticket',
|
|
|
|
'display': 'Test 1',
|
|
|
|
'active': true,
|
|
|
|
'data_type': 'input',
|
2018-12-05 10:43:53 +00:00
|
|
|
'data_option': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'default': 'test',
|
|
|
|
'type': 'text',
|
2018-12-05 10:43:53 +00:00
|
|
|
'maxlength': 120
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'screens': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'create_middle': {
|
|
|
|
'ticket.customer': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'edit': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'ticket.customer': {
|
|
|
|
'shown': true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'id': 'c-196'
|
2018-12-05 10:43:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
post '/api/v1/object_manager_attributes', params: params, as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:created)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(json_response).to be_truthy
|
|
|
|
expect(json_response['data_option']['null']).to be_truthy
|
|
|
|
expect(json_response['data_option']['null']).to eq(true)
|
|
|
|
expect(json_response['name']).to eq('test1')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'does add new ticket text object - no default' do
|
|
|
|
authenticated_as(admin_user)
|
|
|
|
post '/api/v1/object_manager_attributes', params: {}, as: :json
|
|
|
|
|
|
|
|
# token based on headers
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'name': 'test2',
|
|
|
|
'object': 'Ticket',
|
|
|
|
'display': 'Test 2',
|
|
|
|
'active': true,
|
|
|
|
'data_type': 'input',
|
2018-12-05 10:43:53 +00:00
|
|
|
'data_option': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'type': 'text',
|
2018-12-05 10:43:53 +00:00
|
|
|
'maxlength': 120
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'screens': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'create_middle': {
|
|
|
|
'ticket.customer': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'edit': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'ticket.customer': {
|
|
|
|
'shown': true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'id': 'c-196'
|
2018-12-05 10:43:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
post '/api/v1/object_manager_attributes', params: params, as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:created)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(json_response).to be_truthy
|
|
|
|
expect(json_response['data_option']['null']).to be_truthy
|
|
|
|
expect(json_response['data_option']['null']).to eq(true)
|
|
|
|
expect(json_response['name']).to eq('test2')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'does update ticket text object', db_strategy: :reset do
|
|
|
|
|
|
|
|
# add a new object
|
|
|
|
object = create(:object_manager_attribute_text)
|
|
|
|
|
|
|
|
migration = ObjectManager::Attribute.migration_execute
|
|
|
|
expect(migration).to eq(true)
|
|
|
|
|
|
|
|
authenticated_as(admin_user)
|
|
|
|
post "/api/v1/object_manager_attributes/#{object.id}", params: {}, as: :json
|
|
|
|
|
|
|
|
# parameters for updating
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'name': 'test4',
|
|
|
|
'object': 'Ticket',
|
|
|
|
'display': 'Test 4',
|
|
|
|
'active': true,
|
|
|
|
'data_type': 'input',
|
2018-12-05 10:43:53 +00:00
|
|
|
'data_option': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'default': 'test',
|
|
|
|
'type': 'text',
|
2018-12-05 10:43:53 +00:00
|
|
|
'maxlength': 120
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'screens': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'create_middle': {
|
|
|
|
'ticket.customer': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'edit': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'ticket.customer': {
|
|
|
|
'shown': true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'id': 'c-196'
|
2018-12-05 10:43:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
# update the object
|
|
|
|
put "/api/v1/object_manager_attributes/#{object.id}", params: params, as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:ok)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(json_response).to be_truthy
|
|
|
|
expect(json_response['data_option']['null']).to be_truthy
|
|
|
|
expect(json_response['name']).to eq('test4')
|
|
|
|
expect(json_response['display']).to eq('Test 4')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'does add new ticket boolean object' do
|
|
|
|
authenticated_as(admin_user)
|
|
|
|
post '/api/v1/object_manager_attributes', params: {}, as: :json
|
|
|
|
|
|
|
|
# token based on headers
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'active': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'data_option': {
|
|
|
|
'options': {
|
|
|
|
'false': 'no',
|
2018-12-19 17:31:51 +00:00
|
|
|
'true': 'yes'
|
2018-12-05 10:43:53 +00:00
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'data_type': 'boolean',
|
|
|
|
'display': 'Boolean 2',
|
|
|
|
'id': 'c-200',
|
|
|
|
'name': 'bool2',
|
|
|
|
'object': 'Ticket',
|
|
|
|
'screens': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'create_middle': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent' => {
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column',
|
2018-12-19 17:31:51 +00:00
|
|
|
'shown': true
|
2018-12-05 10:43:53 +00:00
|
|
|
},
|
|
|
|
'ticket.customer' => {
|
|
|
|
'item_class': 'column',
|
2018-12-19 17:31:51 +00:00
|
|
|
'shown': true
|
2018-12-05 10:43:53 +00:00
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'edit': {
|
|
|
|
'ticket.agent' => {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
},
|
|
|
|
'ticket.customer' => {
|
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
post '/api/v1/object_manager_attributes', params: params, as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:created)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(json_response).to be_truthy
|
|
|
|
expect(json_response['data_option']['null']).to be_truthy
|
|
|
|
expect(json_response['data_option']['null']).to eq(true)
|
|
|
|
expect(json_response['name']).to eq('bool2')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'does add new user select object' do
|
|
|
|
authenticated_as(admin_user)
|
|
|
|
post '/api/v1/object_manager_attributes', params: {}, as: :json
|
|
|
|
|
|
|
|
# token based on headers
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'active': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'data_option': {
|
|
|
|
'options': {
|
|
|
|
'key1': 'foo'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'data_type': 'select',
|
|
|
|
'display': 'Test 5',
|
|
|
|
'id': 'c-204',
|
|
|
|
'name': 'test5',
|
|
|
|
'object': 'User',
|
|
|
|
'screens': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'create': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'admin.user' => {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent' => {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
},
|
|
|
|
'ticket.customer' => {
|
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'edit': {
|
|
|
|
'admin.user' => {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
},
|
|
|
|
'ticket.agent' => {
|
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'view': {
|
|
|
|
'admin.user' => {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent' => {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
},
|
|
|
|
'ticket.customer' => {
|
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
post '/api/v1/object_manager_attributes', params: params, as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:created)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(json_response).to be_truthy
|
|
|
|
expect(json_response['data_option']['null']).to be_truthy
|
|
|
|
expect(json_response['data_option']['null']).to eq(true)
|
|
|
|
expect(json_response['name']).to eq('test5')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'does update user select object', db_strategy: :reset do
|
|
|
|
|
|
|
|
# add a new object
|
|
|
|
object = create(:object_manager_attribute_text)
|
|
|
|
|
|
|
|
migration = ObjectManager::Attribute.migration_execute
|
|
|
|
expect(migration).to eq(true)
|
|
|
|
|
|
|
|
post "/api/v1/object_manager_attributes/#{object.id}", params: {}, as: :json
|
|
|
|
|
|
|
|
# parameters for updating
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
active: true,
|
2018-12-05 10:43:53 +00:00
|
|
|
data_option: {
|
|
|
|
options: {
|
|
|
|
key1: 'foo',
|
|
|
|
key2: 'bar'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
data_type: 'select',
|
|
|
|
display: 'Test 7',
|
|
|
|
id: 'c-204',
|
|
|
|
name: 'test7',
|
|
|
|
object: 'User',
|
|
|
|
screens: {
|
2018-12-05 10:43:53 +00:00
|
|
|
create: {
|
2018-12-19 17:31:51 +00:00
|
|
|
'admin.user' => {
|
2018-12-05 10:43:53 +00:00
|
|
|
shown: true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent' => {
|
2018-12-05 10:43:53 +00:00
|
|
|
shown: true
|
|
|
|
},
|
|
|
|
'ticket.customer' => {
|
|
|
|
shown: true
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
edit: {
|
|
|
|
'admin.user' => {
|
2018-12-05 10:43:53 +00:00
|
|
|
shown: true
|
|
|
|
},
|
|
|
|
'ticket.agent' => {
|
|
|
|
shown: true
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
view: {
|
|
|
|
'admin.user' => {
|
2018-12-05 10:43:53 +00:00
|
|
|
shown: true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent' => {
|
2018-12-05 10:43:53 +00:00
|
|
|
shown: true
|
|
|
|
},
|
|
|
|
'ticket.customer' => {
|
|
|
|
shown: true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# update the object
|
|
|
|
authenticated_as(admin_user)
|
|
|
|
put "/api/v1/object_manager_attributes/#{object.id}", params: params, as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:ok)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(json_response).to be_truthy
|
|
|
|
expect(json_response['data_option']['options']).to be_truthy
|
|
|
|
expect(json_response['name']).to eq('test7')
|
|
|
|
expect(json_response['display']).to eq('Test 7')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'does converts string to boolean for default value for boolean data type with true (01)', db_strategy: :reset do
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'name': "customerdescription#{rand(999_999_999)}",
|
|
|
|
'object': 'Ticket',
|
|
|
|
'display': "custom description#{rand(999_999_999)}",
|
|
|
|
'active': true,
|
|
|
|
'data_type': 'boolean',
|
2018-12-05 10:43:53 +00:00
|
|
|
'data_option': {
|
|
|
|
'options': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'true': '',
|
2018-12-05 10:43:53 +00:00
|
|
|
'false': '',
|
|
|
|
},
|
|
|
|
'default': 'true',
|
|
|
|
'screens': {
|
|
|
|
'create_middle': {
|
|
|
|
'ticket.customer': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'edit': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'ticket.customer': {
|
|
|
|
'shown': true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'id': 'c-201'
|
2018-12-05 10:43:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
authenticated_as(admin_user)
|
|
|
|
post '/api/v1/object_manager_attributes', params: params, as: :json
|
|
|
|
|
|
|
|
migration = ObjectManager::Attribute.migration_execute
|
|
|
|
expect(migration).to eq(true)
|
|
|
|
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:created) # created
|
2018-12-05 10:43:53 +00:00
|
|
|
|
|
|
|
expect(json_response).to be_truthy
|
|
|
|
expect(json_response['data_option']['default']).to be_truthy
|
|
|
|
expect(json_response['data_option']['default']).to eq(true)
|
|
|
|
expect(json_response['data_type']).to eq('boolean')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'does converts string to boolean for default value for boolean data type with false (02)', db_strategy: :reset do
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'name': "customerdescription_#{rand(999_999_999)}",
|
|
|
|
'object': 'Ticket',
|
|
|
|
'display': "custom description #{rand(999_999_999)}",
|
|
|
|
'active': true,
|
|
|
|
'data_type': 'boolean',
|
2018-12-05 10:43:53 +00:00
|
|
|
'data_option': {
|
|
|
|
'options': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'true': '',
|
2018-12-05 10:43:53 +00:00
|
|
|
'false': '',
|
|
|
|
},
|
|
|
|
'default': 'false',
|
|
|
|
'screens': {
|
|
|
|
'create_middle': {
|
|
|
|
'ticket.customer': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'edit': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'ticket.customer': {
|
|
|
|
'shown': true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
authenticated_as(admin_user)
|
|
|
|
post '/api/v1/object_manager_attributes', params: params, as: :json
|
|
|
|
|
|
|
|
migration = ObjectManager::Attribute.migration_execute
|
|
|
|
expect(migration).to eq(true)
|
|
|
|
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:created) # created
|
2018-12-05 10:43:53 +00:00
|
|
|
|
|
|
|
expect(json_response).to be_truthy
|
|
|
|
expect(json_response['data_option']['default']).to be_falsey
|
|
|
|
expect(json_response['data_option']['default']).to eq(false)
|
|
|
|
expect(json_response['data_type']).to eq('boolean')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'does ticket attributes cannot be removed when it is referenced by an overview (03)', db_strategy: :reset do
|
|
|
|
|
|
|
|
# 1. create a new ticket attribute and execute migration
|
2019-06-28 11:38:49 +00:00
|
|
|
ObjectManager::Attribute.migration_execute
|
2018-12-05 10:43:53 +00:00
|
|
|
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'name': 'test_attribute_referenced_by_an_overview',
|
|
|
|
'object': 'Ticket',
|
|
|
|
'display': 'Test Attribute',
|
|
|
|
'active': true,
|
|
|
|
'data_type': 'input',
|
2018-12-05 10:43:53 +00:00
|
|
|
'data_option': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'default': '',
|
|
|
|
'type': 'text',
|
2018-12-05 10:43:53 +00:00
|
|
|
'maxlength': 120,
|
2018-12-19 17:31:51 +00:00
|
|
|
'null': true,
|
|
|
|
'options': {},
|
|
|
|
'relation': ''
|
2018-12-05 10:43:53 +00:00
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'screens': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'create_middle': {
|
|
|
|
'ticket.customer': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'edit': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'ticket.customer': {
|
|
|
|
'shown': true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
authenticated_as(admin_user)
|
|
|
|
post '/api/v1/object_manager_attributes', params: params, as: :json
|
|
|
|
|
|
|
|
migration = ObjectManager::Attribute.migration_execute
|
|
|
|
expect(migration).to eq(true)
|
|
|
|
|
|
|
|
# 2. create an overview that uses the attribute
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'test_overview',
|
|
|
|
roles: Role.where(name: 'Agent').pluck(:name),
|
2018-12-05 10:43:53 +00:00
|
|
|
condition: {
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.state_id': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'operator': 'is',
|
2018-12-19 17:31:51 +00:00
|
|
|
'value': Ticket::State.all.pluck(:id),
|
2018-12-05 10:43:53 +00:00
|
|
|
},
|
|
|
|
'ticket.test_attribute_referenced_by_an_overview': {
|
|
|
|
'operator': 'contains',
|
2018-12-19 17:31:51 +00:00
|
|
|
'value': 'DUMMY'
|
2018-12-05 10:43:53 +00:00
|
|
|
},
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
order: {
|
|
|
|
by: 'created_at',
|
2018-12-05 10:43:53 +00:00
|
|
|
direction: 'DESC',
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
view: {
|
|
|
|
d: %w[title customer state created_at],
|
|
|
|
s: %w[number title customer state created_at],
|
|
|
|
m: %w[number title customer state created_at],
|
2018-12-05 10:43:53 +00:00
|
|
|
view_mode_default: 's',
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
user_ids: [ '1' ],
|
2018-12-05 10:43:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if Overview.where('name like ?', '%test%').empty?
|
|
|
|
post '/api/v1/overviews', params: params, as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:created)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(Hash).to eq(json_response.class)
|
|
|
|
expect('test_overview').to eq(json_response['name'])
|
|
|
|
end
|
|
|
|
|
|
|
|
# 3. attempt to delete the ticket attribute
|
|
|
|
get '/api/v1/object_manager_attributes', as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:ok)
|
2018-12-05 10:43:53 +00:00
|
|
|
target_attribute = json_response.select { |x| x['name'] == 'test_attribute_referenced_by_an_overview' && x['object'] == 'Ticket' }
|
|
|
|
expect(target_attribute.size).to eq(1)
|
|
|
|
target_id = target_attribute[0]['id']
|
|
|
|
|
|
|
|
delete "/api/v1/object_manager_attributes/#{target_id}", as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:unprocessable_entity)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(response.body).to include('Overview')
|
|
|
|
expect(response.body).to include('test_overview')
|
|
|
|
expect(response.body).to include('cannot be deleted!')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'does ticket attributes cannot be removed when it is referenced by a trigger (04)', db_strategy: :reset do
|
|
|
|
|
|
|
|
# 1. create a new ticket attribute and execute migration
|
2019-06-28 11:38:49 +00:00
|
|
|
ObjectManager::Attribute.migration_execute
|
2018-12-05 10:43:53 +00:00
|
|
|
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'name': 'test_attribute_referenced_by_a_trigger',
|
|
|
|
'object': 'Ticket',
|
|
|
|
'display': 'Test Attribute',
|
|
|
|
'active': true,
|
|
|
|
'data_type': 'input',
|
2018-12-05 10:43:53 +00:00
|
|
|
'data_option': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'default': '',
|
|
|
|
'type': 'text',
|
2018-12-05 10:43:53 +00:00
|
|
|
'maxlength': 120,
|
2018-12-19 17:31:51 +00:00
|
|
|
'null': true,
|
|
|
|
'options': {},
|
|
|
|
'relation': ''
|
2018-12-05 10:43:53 +00:00
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'screens': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'create_middle': {
|
|
|
|
'ticket.customer': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'edit': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'ticket.customer': {
|
|
|
|
'shown': true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
authenticated_as(admin_user)
|
|
|
|
post '/api/v1/object_manager_attributes', params: params, as: :json
|
|
|
|
|
|
|
|
migration = ObjectManager::Attribute.migration_execute
|
|
|
|
expect(migration).to eq(true)
|
|
|
|
|
|
|
|
# 2. create an trigger that uses the attribute
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'test_trigger',
|
2018-12-05 10:43:53 +00:00
|
|
|
condition: {
|
|
|
|
'ticket.test_attribute_referenced_by_a_trigger': {
|
|
|
|
'operator': 'contains',
|
2018-12-19 17:31:51 +00:00
|
|
|
'value': 'DUMMY'
|
2018-12-05 10:43:53 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
'perform': {
|
|
|
|
'ticket.state_id': {
|
|
|
|
'value': '2'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'active': true,
|
|
|
|
'id': 'c-3'
|
2018-12-05 10:43:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if Trigger.where('name like ?', '%test%').empty?
|
|
|
|
post '/api/v1/triggers', params: params, as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:created)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(Hash).to eq(json_response.class)
|
|
|
|
expect('test_trigger').to eq(json_response['name'])
|
|
|
|
end
|
|
|
|
|
|
|
|
# 3. attempt to delete the ticket attribute
|
|
|
|
get '/api/v1/object_manager_attributes', as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:ok)
|
2018-12-05 10:43:53 +00:00
|
|
|
target_attribute = json_response.select { |x| x['name'] == 'test_attribute_referenced_by_a_trigger' && x['object'] == 'Ticket' }
|
|
|
|
expect(target_attribute.size).to eq(1)
|
|
|
|
target_id = target_attribute[0]['id']
|
|
|
|
|
|
|
|
delete "/api/v1/object_manager_attributes/#{target_id}", as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:unprocessable_entity)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(response.body).to include('Trigger')
|
|
|
|
expect(response.body).to include('test_trigger')
|
|
|
|
expect(response.body).to include('cannot be deleted!')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'does ticket attributes cannot be removed when it is referenced by a scheduler (05)', db_strategy: :reset do
|
|
|
|
|
|
|
|
# 1. create a new ticket attribute and execute migration
|
2019-06-28 11:38:49 +00:00
|
|
|
ObjectManager::Attribute.migration_execute
|
2018-12-05 10:43:53 +00:00
|
|
|
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'name': 'test_attribute_referenced_by_a_scheduler',
|
|
|
|
'object': 'Ticket',
|
|
|
|
'display': 'Test Attribute',
|
|
|
|
'active': true,
|
|
|
|
'data_type': 'input',
|
2018-12-05 10:43:53 +00:00
|
|
|
'data_option': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'default': '',
|
|
|
|
'type': 'text',
|
2018-12-05 10:43:53 +00:00
|
|
|
'maxlength': 120,
|
2018-12-19 17:31:51 +00:00
|
|
|
'null': true,
|
|
|
|
'options': {},
|
|
|
|
'relation': ''
|
2018-12-05 10:43:53 +00:00
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'screens': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'create_middle': {
|
|
|
|
'ticket.customer': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'edit': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'ticket.customer': {
|
|
|
|
'shown': true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
authenticated_as(admin_user)
|
|
|
|
post '/api/v1/object_manager_attributes', params: params, as: :json
|
|
|
|
|
|
|
|
migration = ObjectManager::Attribute.migration_execute
|
|
|
|
expect(migration).to eq(true)
|
|
|
|
|
|
|
|
# 2. create a scheduler that uses the attribute
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'test_scheduler',
|
|
|
|
'timeplan': {
|
|
|
|
'days': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'Mon': true,
|
|
|
|
'Tue': false,
|
|
|
|
'Wed': false,
|
|
|
|
'Thu': false,
|
|
|
|
'Fri': false,
|
|
|
|
'Sat': false,
|
|
|
|
'Sun': false
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'hours': {
|
|
|
|
'0': true,
|
|
|
|
'1': false,
|
|
|
|
'2': false,
|
|
|
|
'3': false,
|
|
|
|
'4': false,
|
|
|
|
'5': false,
|
|
|
|
'6': false,
|
|
|
|
'7': false,
|
|
|
|
'8': false,
|
|
|
|
'9': false,
|
2018-12-05 10:43:53 +00:00
|
|
|
'10': false,
|
|
|
|
'11': false,
|
|
|
|
'12': false,
|
|
|
|
'13': false,
|
|
|
|
'14': false,
|
|
|
|
'15': false,
|
|
|
|
'16': false,
|
|
|
|
'17': false,
|
|
|
|
'18': false,
|
|
|
|
'19': false,
|
|
|
|
'20': false,
|
|
|
|
'21': false,
|
|
|
|
'22': false,
|
|
|
|
'23': false
|
|
|
|
},
|
|
|
|
'minutes': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'0': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'10': false,
|
|
|
|
'20': false,
|
|
|
|
'30': false,
|
|
|
|
'40': false,
|
|
|
|
'50': false
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'condition': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'ticket.test_attribute_referenced_by_a_scheduler': {
|
|
|
|
'operator': 'contains',
|
2018-12-19 17:31:51 +00:00
|
|
|
'value': 'DUMMY'
|
2018-12-05 10:43:53 +00:00
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'perform': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'ticket.state_id': {
|
|
|
|
'value': '2'
|
|
|
|
}
|
|
|
|
},
|
|
|
|
'disable_notification': true,
|
2018-12-19 17:31:51 +00:00
|
|
|
'note': '',
|
|
|
|
'active': true,
|
|
|
|
'id': 'c-0'
|
2018-12-05 10:43:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if Job.where('name like ?', '%test%').empty?
|
|
|
|
post '/api/v1/jobs', params: params, as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:created)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(Hash).to eq(json_response.class)
|
|
|
|
expect('test_scheduler').to eq(json_response['name'])
|
|
|
|
end
|
|
|
|
|
|
|
|
# 3. attempt to delete the ticket attribute
|
|
|
|
get '/api/v1/object_manager_attributes', as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:ok)
|
2018-12-05 10:43:53 +00:00
|
|
|
target_attribute = json_response.select { |x| x['name'] == 'test_attribute_referenced_by_a_scheduler' && x['object'] == 'Ticket' }
|
|
|
|
expect(target_attribute.size).to eq(1)
|
|
|
|
target_id = target_attribute[0]['id']
|
|
|
|
|
|
|
|
delete "/api/v1/object_manager_attributes/#{target_id}", as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:unprocessable_entity)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(response.body).to include('Job')
|
|
|
|
expect(response.body).to include('test_scheduler')
|
|
|
|
expect(response.body).to include('cannot be deleted!')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'does ticket attributes can be removed when it is referenced by an overview but by user object (06)', db_strategy: :reset do
|
|
|
|
|
|
|
|
# 1. create a new ticket attribute and execute migration
|
2019-06-28 11:38:49 +00:00
|
|
|
ObjectManager::Attribute.migration_execute
|
2018-12-05 10:43:53 +00:00
|
|
|
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'name': 'test_attribute_referenced_by_an_overview',
|
|
|
|
'object': 'Ticket',
|
|
|
|
'display': 'Test Attribute',
|
|
|
|
'active': true,
|
|
|
|
'data_type': 'input',
|
2018-12-05 10:43:53 +00:00
|
|
|
'data_option': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'default': '',
|
|
|
|
'type': 'text',
|
2018-12-05 10:43:53 +00:00
|
|
|
'maxlength': 120,
|
2018-12-19 17:31:51 +00:00
|
|
|
'null': true,
|
|
|
|
'options': {},
|
|
|
|
'relation': ''
|
2018-12-05 10:43:53 +00:00
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'screens': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'create_middle': {
|
|
|
|
'ticket.customer': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'edit': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'ticket.customer': {
|
|
|
|
'shown': true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
authenticated_as(admin_user)
|
|
|
|
post '/api/v1/object_manager_attributes', params: params, as: :json
|
|
|
|
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'name': 'test_attribute_referenced_by_an_overview',
|
|
|
|
'object': 'User',
|
|
|
|
'display': 'Test Attribute',
|
|
|
|
'active': true,
|
|
|
|
'data_type': 'input',
|
2018-12-05 10:43:53 +00:00
|
|
|
'data_option': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'default': '',
|
|
|
|
'type': 'text',
|
2018-12-05 10:43:53 +00:00
|
|
|
'maxlength': 120,
|
2018-12-19 17:31:51 +00:00
|
|
|
'null': true,
|
|
|
|
'options': {},
|
|
|
|
'relation': ''
|
2018-12-05 10:43:53 +00:00
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'screens': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'create_middle': {
|
|
|
|
'ticket.customer': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'edit': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'ticket.customer': {
|
|
|
|
'shown': true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
post '/api/v1/object_manager_attributes', params: params, as: :json
|
|
|
|
|
|
|
|
migration = ObjectManager::Attribute.migration_execute
|
|
|
|
expect(migration).to eq(true)
|
|
|
|
|
|
|
|
# 2. create an overview that uses the attribute
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
name: 'test_overview',
|
|
|
|
roles: Role.where(name: 'Agent').pluck(:name),
|
2018-12-05 10:43:53 +00:00
|
|
|
condition: {
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.state_id': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'operator': 'is',
|
2018-12-19 17:31:51 +00:00
|
|
|
'value': Ticket::State.all.pluck(:id),
|
2018-12-05 10:43:53 +00:00
|
|
|
},
|
|
|
|
'ticket.test_attribute_referenced_by_an_overview': {
|
|
|
|
'operator': 'contains',
|
2018-12-19 17:31:51 +00:00
|
|
|
'value': 'DUMMY'
|
2018-12-05 10:43:53 +00:00
|
|
|
},
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
order: {
|
|
|
|
by: 'created_at',
|
2018-12-05 10:43:53 +00:00
|
|
|
direction: 'DESC',
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
view: {
|
|
|
|
d: %w[title customer state created_at],
|
|
|
|
s: %w[number title customer state created_at],
|
|
|
|
m: %w[number title customer state created_at],
|
2018-12-05 10:43:53 +00:00
|
|
|
view_mode_default: 's',
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
user_ids: [ '1' ],
|
2018-12-05 10:43:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if Overview.where('name like ?', '%test%').empty?
|
|
|
|
post '/api/v1/overviews', params: params, as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:created)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(Hash).to eq(json_response.class)
|
|
|
|
expect('test_overview').to eq(json_response['name'])
|
|
|
|
end
|
|
|
|
|
|
|
|
# 3. attempt to delete the ticket attribute
|
|
|
|
get '/api/v1/object_manager_attributes', as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:ok)
|
2018-12-05 10:43:53 +00:00
|
|
|
all_json_response = json_response
|
|
|
|
|
|
|
|
target_attribute = all_json_response.select { |x| x['name'] == 'test_attribute_referenced_by_an_overview' && x['object'] == 'User' }
|
|
|
|
expect(target_attribute.size).to eq(1)
|
|
|
|
target_id = target_attribute[0]['id']
|
|
|
|
|
|
|
|
delete "/api/v1/object_manager_attributes/#{target_id}", as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:ok)
|
2018-12-05 10:43:53 +00:00
|
|
|
|
|
|
|
target_attribute = all_json_response.select { |x| x['name'] == 'test_attribute_referenced_by_an_overview' && x['object'] == 'Ticket' }
|
|
|
|
expect(target_attribute.size).to eq(1)
|
|
|
|
target_id = target_attribute[0]['id']
|
|
|
|
|
|
|
|
delete "/api/v1/object_manager_attributes/#{target_id}", as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:unprocessable_entity)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(response.body).to include('Overview')
|
|
|
|
expect(response.body).to include('test_overview')
|
|
|
|
expect(response.body).to include('cannot be deleted!')
|
|
|
|
|
|
|
|
migration = ObjectManager::Attribute.migration_execute
|
|
|
|
expect(migration).to eq(true)
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'does verify if attribute type can not be changed (07)', db_strategy: :reset do
|
|
|
|
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'name': "customerdescription_#{rand(999_999_999)}",
|
|
|
|
'object': 'Ticket',
|
|
|
|
'display': "custom description #{rand(999_999_999)}",
|
|
|
|
'active': true,
|
|
|
|
'data_type': 'boolean',
|
2018-12-05 10:43:53 +00:00
|
|
|
'data_option': {
|
|
|
|
'options': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'true': '',
|
2018-12-05 10:43:53 +00:00
|
|
|
'false': '',
|
|
|
|
},
|
|
|
|
'default': 'false',
|
|
|
|
'screens': {
|
|
|
|
'create_middle': {
|
|
|
|
'ticket.customer': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'edit': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'ticket.customer': {
|
|
|
|
'shown': true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
authenticated_as(admin_user)
|
|
|
|
post '/api/v1/object_manager_attributes', params: params, as: :json
|
|
|
|
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:created) # created
|
2018-12-05 10:43:53 +00:00
|
|
|
|
|
|
|
expect(json_response).to be_truthy
|
|
|
|
expect(json_response['data_option']['default']).to be_falsey
|
|
|
|
expect(json_response['data_option']['default']).to eq(false)
|
|
|
|
expect(json_response['data_type']).to eq('boolean')
|
|
|
|
|
|
|
|
migration = ObjectManager::Attribute.migration_execute
|
|
|
|
expect(migration).to eq(true)
|
|
|
|
|
|
|
|
params['data_type'] = 'input'
|
|
|
|
params['data_option'] = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'default': 'test',
|
|
|
|
'type': 'text',
|
2018-12-05 10:43:53 +00:00
|
|
|
'maxlength': 120
|
|
|
|
}
|
|
|
|
|
|
|
|
put "/api/v1/object_manager_attributes/#{json_response['id']}", params: params, as: :json
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:unprocessable_entity)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(json_response).to be_truthy
|
|
|
|
expect(json_response['error']).to be_truthy
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'does verify if attribute type can be changed (08)', db_strategy: :reset do
|
|
|
|
|
|
|
|
params = {
|
2018-12-19 17:31:51 +00:00
|
|
|
'name': "customerdescription_#{rand(999_999_999)}",
|
|
|
|
'object': 'Ticket',
|
|
|
|
'display': "custom description #{rand(999_999_999)}",
|
|
|
|
'active': true,
|
|
|
|
'data_type': 'input',
|
2018-12-05 10:43:53 +00:00
|
|
|
'data_option': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'default': 'test',
|
|
|
|
'type': 'text',
|
2018-12-05 10:43:53 +00:00
|
|
|
'maxlength': 120,
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'screens': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'create_middle': {
|
|
|
|
'ticket.customer': {
|
2018-12-19 17:31:51 +00:00
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
|
|
|
'shown': true,
|
2018-12-05 10:43:53 +00:00
|
|
|
'item_class': 'column'
|
|
|
|
}
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'edit': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'ticket.customer': {
|
|
|
|
'shown': true
|
|
|
|
},
|
2018-12-19 17:31:51 +00:00
|
|
|
'ticket.agent': {
|
2018-12-05 10:43:53 +00:00
|
|
|
'shown': true
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
authenticated_as(admin_user)
|
|
|
|
post '/api/v1/object_manager_attributes', params: params, as: :json
|
|
|
|
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:created) # created
|
2018-12-05 10:43:53 +00:00
|
|
|
|
|
|
|
expect(json_response).to be_truthy
|
|
|
|
expect(json_response['data_option']['default']).to eq('test')
|
|
|
|
expect(json_response['data_type']).to eq('input')
|
|
|
|
|
|
|
|
migration = ObjectManager::Attribute.migration_execute
|
|
|
|
expect(migration).to eq(true)
|
|
|
|
|
|
|
|
params['data_type'] = 'select'
|
|
|
|
params['data_option'] = {
|
|
|
|
'default': 'fuu',
|
|
|
|
'options': {
|
|
|
|
'key1': 'foo',
|
|
|
|
'key2': 'fuu',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
put "/api/v1/object_manager_attributes/#{json_response['id']}", params: params, as: :json
|
|
|
|
|
2019-04-15 01:41:17 +00:00
|
|
|
expect(response).to have_http_status(:ok)
|
2018-12-05 10:43:53 +00:00
|
|
|
expect(json_response).to be_truthy
|
|
|
|
expect(json_response['data_option']['default']).to eq('test')
|
|
|
|
expect(json_response['data_option_new']['default']).to eq('fuu')
|
|
|
|
expect(json_response['data_type']).to eq('select')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|