zammad/test/unit/object_cache_test.rb
2015-07-03 17:32:48 +02:00

169 lines
5.1 KiB
Ruby

# encoding: utf-8
require 'test_helper'
class ObjectCacheTest < ActiveSupport::TestCase
test 'organization cache' do
org = Organization.create_or_update(
name: 'some org cache member',
updated_by_id: 1,
created_by_id: 1,
)
roles = Role.where( name: %w(Agent Admin) )
groups = Group.all
user1 = User.create_or_update(
login: 'object_cache1@example.org',
firstname: 'object_cache1',
lastname: 'object_cache1',
email: 'object_cache1@example.org',
password: 'some_pass',
active: true,
updated_by_id: 1,
created_by_id: 1,
organization_id: org.id,
roles: roles,
groups: groups,
)
assets = org.assets({})
assert_equal( org.member_ids, assets[:Organization][org.id]['member_ids'] )
user1.organization_id = nil
user1.save
assets = org.assets({})
assert_equal( org.member_ids, assets[:Organization][org.id]['member_ids'] )
end
test 'user cache' do
roles = Role.where( name: %w(Agent Admin) )
groups = Group.all
user1 = User.create_or_update(
login: 'object_cache1@example.org',
firstname: 'object_cache1',
lastname: 'object_cache1',
email: 'object_cache1@example.org',
password: 'some_pass',
active: true,
updated_by_id: 1,
created_by_id: 1,
roles: roles,
groups: groups,
)
assets = user1.assets({})
assert_equal( user1.group_ids, assets[:User][user1.id]['group_ids'] )
# update group
group1 = groups.first
group1.note = "some note #{rand(9_999_999_999)}"
group1.save
assets = user1.assets({})
assert_equal( group1.note, assets[:Group][group1.id]['note'] )
# update group
assert_equal( user1.group_ids, assets[:User][user1.id]['group_ids'] )
user1.group_ids = []
user1.save
assets = user1.assets({})
assert_equal( user1.group_ids, assets[:User][user1.id]['group_ids'] )
# update role
assert_equal( user1.role_ids, assets[:User][user1.id]['role_ids'] )
user1.role_ids = []
user1.save
assets = user1.assets({})
assert_equal( user1.role_ids, assets[:User][user1.id]['role_ids'] )
# update groups
assert_equal( user1.organization_ids, assets[:User][user1.id]['organization_ids'] )
user1.organization_ids = [1]
user1.save
assets = user1.assets({})
assert_equal( user1.organization_ids, assets[:User][user1.id]['organization_ids'] )
end
test 'group cache' do
name = 'object cache test ' + rand(9_999_999).to_s
group = Group.create(
name: name,
updated_by_id: 1,
created_by_id: 1,
)
group_new = Group.where( name: name ).first
assert_equal( name, group_new[:name], 'verify by where' )
# lookup by name
cache_key = "#{group_new.name}"
assert_nil( Group.cache_get(cache_key) )
group_lookup_name = Group.lookup( name: group_new.name )
assert_equal( group_new.name, group_lookup_name[:name], 'verify by lookup.name' )
assert( Group.cache_get(cache_key) )
# lookup by id
cache_key = "#{group_new.id}"
assert_nil( Group.cache_get(cache_key) )
group_lookup_id = Group.lookup( id: group.id )
assert_equal( group_new.name, group_lookup_id[:name], 'verify by lookup.id' )
assert( Group.cache_get(cache_key) )
# update / check if old name caches are deleted
name_new = name + ' next'
group.name = name_new
group.save
# lookup by name
cache_key = "#{group.name}"
assert_nil( Group.cache_get(cache_key) )
group_lookup = Group.where( name: group_new.name ).first
assert_nil( group_lookup, 'verify by where name_old' )
assert_nil( Group.cache_get(cache_key) )
group_lookup = Group.where( name: group.name ).first
assert_equal( name_new, group_lookup[:name], 'verify by where name_new' )
assert_nil( Group.cache_get(cache_key) )
group_lookup_name = Group.lookup( name: group_new.name )
assert_nil( group_lookup_name, 'verify by lookup.name name_old' )
assert_nil( Group.cache_get(cache_key) )
group_lookup_name = Group.lookup( name: group.name )
assert_equal( name_new, group_lookup_name[:name], 'verify by lookup.name name_new' )
assert( Group.cache_get(cache_key) )
# lookup by id
cache_key = "#{group_new.id}"
assert_nil( Group.cache_get(cache_key) )
group_lookup_id = Group.lookup( id: group.id )
assert_equal( name_new, group_lookup_id[:name], 'verify by lookup.id' )
assert( Group.cache_get(cache_key) )
group.destroy
# lookup by name
group_lookup = Group.where( name: group_new.name ).first
assert_nil( group_lookup, 'verify by where name_old' )
group_lookup = Group.where( name: group.name ).first
assert_nil( group_lookup, 'verify by where name_new' )
group_lookup_name = Group.lookup( name: group_new.name )
assert_nil( group_lookup_name, 'verify by lookup.name name_old' )
group_lookup_name = Group.lookup( name: group.name )
assert_nil( group_lookup_name, 'verify by lookup.name name_new' )
# lookup by id
group_lookup_id = Group.lookup( id: group.id )
assert_nil( group_lookup_id, 'verify by lookup.id' )
end
end