# 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.sort, assets[:Organization][org.id]['member_ids'].sort) user1.organization_id = nil user1.save assets = org.assets({}) assert_equal(org.member_ids.sort, assets[:Organization][org.id]['member_ids'].sort) end test 'user cache' do roles = Role.where( name: %w(Agent Admin) ) groups = Group.all # be sure that minimum one admin is available User.create_or_update( login: 'last_admin_check@example.org', firstname: 'last_admin_check', lastname: 'last_admin_check', email: 'last_admin_check@example.org', password: 'some_pass', active: true, updated_by_id: 1, created_by_id: 1, roles: roles, groups: groups, ) 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.sort, assets[:User][user1.id]['group_ids'].sort) # 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.sort, assets[:User][user1.id]['group_ids'].sort) user1.group_ids = [] user1.save assets = user1.assets({}) assert_equal(user1.group_ids.sort, assets[:User][user1.id]['group_ids'].sort) # update role assert_equal(user1.role_ids.sort, assets[:User][user1.id]['role_ids'].sort) user1.role_ids = [] user1.save assets = user1.assets({}) assert_equal(user1.role_ids.sort, assets[:User][user1.id]['role_ids'].sort) # update groups assert_equal(user1.organization_ids.sort, assets[:User][user1.id]['organization_ids'].sort) user1.organization_ids = [1] user1.save assets = user1.assets({}) assert_equal(user1.organization_ids.sort, assets[:User][user1.id]['organization_ids'].sort) 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.to_s 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.to_s 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.to_s 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.to_s 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