123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389 |
- # Copyright (C) 2012-2023 Zammad Foundation, https://zammad-foundation.org/
- require 'test_helper'
- class ModelTest < ActiveSupport::TestCase
- test 'create_if_not_exists test' do
- group1 = Group.create_if_not_exists(
- name: 'model1-create_if_not_exists',
- active: true,
- updated_at: '2015-02-05 16:37:00',
- updated_by_id: 1,
- created_by_id: 1,
- )
- assert_raises(ActiveRecord::RecordNotUnique) do
- Group.create_if_not_exists(
- name: 'model1-Create_If_Not_Exists',
- active: true,
- updated_at: '2015-02-05 16:37:00',
- updated_by_id: 1,
- created_by_id: 1,
- )
- end
- group2 = Group.create_if_not_exists(
- name: 'model1-create_if_not_exists',
- active: true,
- updated_at: '2015-02-05 16:39:00',
- updated_by_id: 1,
- created_by_id: 1,
- )
- assert_equal(group1.id, group2.id)
- assert_equal(group2.updated_at.to_s, '2015-02-05 16:37:00 UTC')
- end
- test 'create_or_update test' do
- group1 = Group.create_or_update(
- name: 'model1-create_or_update',
- active: true,
- updated_at: '2015-02-05 16:37:00',
- updated_by_id: 1,
- created_by_id: 1,
- )
- assert_raises(ActiveRecord::RecordNotUnique) do
- Group.create_or_update(
- name: 'model1-Create_Or_Update',
- active: true,
- updated_at: '2015-02-05 16:37:00',
- updated_by_id: 1,
- created_by_id: 1,
- )
- end
- group2 = Group.create_or_update(
- name: 'model1-create_or_update',
- active: true,
- updated_at: '2015-02-05 16:39:00',
- updated_by_id: 1,
- created_by_id: 1,
- )
- assert_equal(group1.id, group2.id)
- assert_equal(group2.updated_at.to_s, '2015-02-05 16:39:00 UTC')
- end
- test 'references test' do
- # create base
- groups = Group.where(name: 'Users')
- roles = Role.where(name: %w[Agent Admin])
- agent1 = User.create_or_update(
- login: 'model-agent1@example.com',
- firstname: 'Model',
- lastname: 'Agent1',
- email: 'model-agent1@example.com',
- password: 'agentpw',
- active: true,
- roles: roles,
- groups: groups,
- updated_at: '2015-02-05 16:37:00',
- updated_by_id: 1,
- created_by_id: 1,
- )
- agent2 = User.create_or_update(
- login: 'model-agent2@example.com',
- firstname: 'Model',
- lastname: 'Agent2',
- email: 'model-agent2@example.com',
- password: 'agentpw',
- active: true,
- roles: roles,
- groups: groups,
- updated_at: '2015-02-05 17:37:00',
- updated_by_id: agent1.id,
- created_by_id: 1,
- )
- organization1 = Organization.create_if_not_exists(
- name: 'Model Org 1',
- updated_at: '2015-02-05 16:37:00',
- updated_by_id: 1,
- created_by_id: 1,
- )
- organization2 = Organization.create_if_not_exists(
- name: 'Model Org 2',
- updated_at: '2015-02-05 16:37:00',
- updated_by_id: agent1.id,
- created_by_id: 1,
- )
- roles = Role.where(name: 'Customer')
- User.create_or_update(
- login: 'model-customer1@example.com',
- firstname: 'Model',
- lastname: 'Customer1',
- email: 'model-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,
- )
- User.create_or_update(
- login: 'model-customer2@example.com',
- firstname: 'Model',
- lastname: 'Customer2',
- email: 'model-customer2@example.com',
- password: 'customerpw',
- active: true,
- organization_id: nil,
- roles: roles,
- updated_at: '2015-02-05 16:37:00',
- updated_by_id: agent1.id,
- created_by_id: 1,
- )
- User.create_or_update(
- login: 'model-customer3@example.com',
- firstname: 'Model',
- lastname: 'Customer3',
- email: 'model-customer3@example.com',
- password: 'customerpw',
- active: true,
- organization_id: nil,
- roles: roles,
- updated_at: '2015-02-05 16:37:00',
- updated_by_id: agent1.id,
- created_by_id: agent1.id,
- )
- # user
- # verify agent1
- references1 = Models.references('User', agent1.id)
- assert_equal(references1['User']['updated_by_id'], 3)
- assert_equal(references1['User']['created_by_id'], 1)
- assert_equal(references1['Organization']['updated_by_id'], 1)
- assert_equal(references1['UserGroup']['user_id'], 1)
- assert_not(references1['Group'])
- references_total1 = Models.references_total('User', agent1.id)
- assert_equal(references_total1, 8)
- # verify agent2
- references2 = Models.references('User', agent2.id)
- assert_not(references2['User'])
- assert_not(references2['Organization'])
- assert_not(references2['Group'])
- assert_equal(references2['UserGroup']['user_id'], 1)
- references_total2 = Models.references_total('User', agent2.id)
- assert_equal(references_total2, 1)
- Models.merge('User', agent2.id, agent1.id)
- # verify agent1
- references1 = Models.references('User', agent1.id)
- assert_not(references1['User'])
- assert_not(references1['Organization'])
- assert_not(references1['Group'])
- assert_not(references1['UserGroup'])
- assert(references1.blank?)
- references_total1 = Models.references_total('User', agent1.id)
- assert_equal(references_total1, 0)
- # verify agent2
- references2 = Models.references('User', agent2.id)
- assert_equal(references2['User']['updated_by_id'], 3)
- assert_equal(references2['User']['created_by_id'], 1)
- assert_equal(references2['Organization']['updated_by_id'], 1)
- assert_equal(references2['UserGroup']['user_id'], 2)
- assert_not(references2['Group'])
- references_total2 = Models.references_total('User', agent2.id)
- assert_equal(references_total2, 9)
- # org
- # verify agent1
- references1 = Models.references('Organization', organization1.id)
- assert_equal(references1['User']['organization_id'], 1)
- assert_not(references1['Organization'])
- assert_not(references1['Group'])
- references_total1 = Models.references_total('Organization', organization1.id)
- assert_equal(references_total1, 1)
- # verify agent2
- references2 = Models.references('Organization', organization2.id)
- assert(references2.blank?)
- references_total2 = Models.references_total('Organization', organization2.id)
- assert_equal(references_total2, 0)
- Models.merge('Organization', organization2.id, organization1.id)
- # verify agent1
- references1 = Models.references('Organization', organization1.id)
- assert(references1.blank?)
- references_total1 = Models.references_total('Organization', organization1.id)
- assert_equal(references_total1, 0)
- # verify agent2
- references2 = Models.references('Organization', organization2.id)
- assert_equal(references2['User']['organization_id'], 1)
- assert_not(references2['Organization'])
- assert_not(references2['Group'])
- references_total2 = Models.references_total('Organization', organization2.id)
- assert_equal(references_total2, 1)
- end
- test 'searchable test' do
- searchable = Models.searchable
- assert(searchable.include?(Ticket))
- assert(searchable.include?(User))
- assert(searchable.include?(Organization))
- assert(searchable.include?(Chat::Session))
- assert(searchable.include?(KnowledgeBase::Answer::Translation))
- assert_equal(5, searchable.count)
- end
- test 'param_cleanup test' do
- params = {
- id: 123,
- abc: true,
- firstname: '123',
- created_by_id: 1,
- created_at: Time.zone.now,
- updated_by_id: 1,
- updated_at: Time.zone.now,
- action: 'some action',
- controller: 'some controller',
- }
- result = User.param_cleanup(params, true)
- assert_not(result.key?(:id))
- assert_not(result.key?(:abc))
- assert_equal('123', result[:firstname])
- assert_not(result.key?(:created_by_id))
- assert_not(result.key?(:created_at))
- assert_not(result.key?(:updated_by_id))
- assert_not(result.key?(:updated_at))
- assert_not(result.key?(:action))
- assert_not(result.key?(:controller))
- params = {
- id: 123,
- abc: true,
- firstname: '123',
- created_by_id: 1,
- created_at: Time.zone.now,
- updated_by_id: 1,
- updated_at: Time.zone.now,
- action: 'some action',
- controller: 'some controller',
- }
- result = User.param_cleanup(params)
- assert_equal(123, result[:id])
- assert_not(result.key?(:abc))
- assert_equal('123', result[:firstname])
- assert_not(result.key?(:created_by_id))
- assert_not(result.key?(:created_at))
- assert_not(result.key?(:updated_by_id))
- assert_not(result.key?(:updated_at))
- assert_not(result.key?(:action))
- assert_not(result.key?(:controller))
- Setting.set('import_mode', true)
- params = {
- id: 123,
- abc: true,
- firstname: '123',
- created_by_id: 1,
- created_at: Time.zone.now,
- updated_by_id: 1,
- updated_at: Time.zone.now,
- action: 'some action',
- controller: 'some controller',
- }
- result = User.param_cleanup(params, true)
- assert_not(result.key?(:abc))
- assert_equal('123', result[:firstname])
- assert_equal(1, result[:created_by_id])
- assert(result[:created_at])
- assert_equal(1, result[:updated_by_id])
- assert(result[:updated_at])
- assert_not(result.key?(:action))
- assert_not(result.key?(:controller))
- params = {
- id: 123,
- abc: true,
- firstname: '123',
- created_by_id: 1,
- created_at: Time.zone.now,
- updated_by_id: 1,
- updated_at: Time.zone.now,
- action: 'some action',
- controller: 'some controller',
- }
- result = User.param_cleanup(params)
- assert_equal(123, result[:id])
- assert_equal('123', result[:firstname])
- assert_equal(1, result[:created_by_id])
- assert(result[:created_at])
- assert_equal(1, result[:updated_by_id])
- assert(result[:updated_at])
- assert_not(result.key?(:action))
- assert_not(result.key?(:controller))
- end
- test 'param_preferences_merge test' do
- params = {
- id: 123,
- firstname: '123',
- created_by_id: 1,
- created_at: Time.zone.now,
- updated_by_id: 1,
- updated_at: Time.zone.now,
- preferences: {},
- }
- user = User.new(params)
- assert(user.preferences.blank?)
- user.preferences = { A: 1, B: 2 }
- assert(user.preferences.present?)
- params = {
- firstname: '123 ABC',
- preferences: { 'B' => 3, C: 4 },
- }
- clean_params = User.param_cleanup(params)
- clean_user_params = user.param_preferences_merge(clean_params)
- assert_equal(clean_user_params[:firstname], '123 ABC')
- assert(clean_user_params[:preferences].present?)
- assert_equal(clean_user_params[:preferences]['A'], 1)
- assert_equal(clean_user_params[:preferences]['B'], 3)
- assert_equal(clean_user_params[:preferences]['C'], 4)
- assert_equal(clean_user_params[:preferences][:A], 1)
- assert_equal(clean_user_params[:preferences][:B], 3)
- assert_equal(clean_user_params[:preferences][:C], 4)
- params = {
- firstname: '123 ABCD',
- preferences: {},
- }
- clean_params = User.param_cleanup(params)
- clean_user_params = user.param_preferences_merge(clean_params)
- assert_equal(clean_user_params[:firstname], '123 ABCD')
- assert(clean_user_params[:preferences].present?)
- assert_equal(clean_user_params[:preferences]['A'], 1)
- assert_equal(clean_user_params[:preferences]['B'], 2)
- assert_nil(clean_user_params[:preferences]['C'])
- assert_equal(clean_user_params[:preferences][:A], 1)
- assert_equal(clean_user_params[:preferences][:B], 2)
- assert_nil(clean_user_params[:preferences][:C])
- end
- end
|