model_test.rb 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. require 'test_helper'
  2. class ModelTest < ActiveSupport::TestCase
  3. test 'create_if_not_exists test' do
  4. group1 = Group.create_if_not_exists(
  5. name: 'model1-create_if_not_exists',
  6. active: true,
  7. updated_at: '2015-02-05 16:37:00',
  8. updated_by_id: 1,
  9. created_by_id: 1,
  10. )
  11. assert_raises( ActiveRecord::RecordNotUnique ) do
  12. Group.create_if_not_exists(
  13. name: 'model1-Create_If_Not_Exists',
  14. active: true,
  15. updated_at: '2015-02-05 16:37:00',
  16. updated_by_id: 1,
  17. created_by_id: 1,
  18. )
  19. end
  20. group2 = Group.create_if_not_exists(
  21. name: 'model1-create_if_not_exists',
  22. active: true,
  23. updated_at: '2015-02-05 16:39:00',
  24. updated_by_id: 1,
  25. created_by_id: 1,
  26. )
  27. assert_equal(group1.id, group2.id)
  28. assert_equal(group2.updated_at.to_s, '2015-02-05 16:37:00 UTC')
  29. end
  30. test 'create_or_update test' do
  31. group1 = Group.create_or_update(
  32. name: 'model1-create_or_update',
  33. active: true,
  34. updated_at: '2015-02-05 16:37:00',
  35. updated_by_id: 1,
  36. created_by_id: 1,
  37. )
  38. assert_raises( ActiveRecord::RecordNotUnique ) do
  39. Group.create_or_update(
  40. name: 'model1-Create_Or_Update',
  41. active: true,
  42. updated_at: '2015-02-05 16:37:00',
  43. updated_by_id: 1,
  44. created_by_id: 1,
  45. )
  46. end
  47. group2 = Group.create_or_update(
  48. name: 'model1-create_or_update',
  49. active: true,
  50. updated_at: '2015-02-05 16:39:00',
  51. updated_by_id: 1,
  52. created_by_id: 1,
  53. )
  54. assert_equal(group1.id, group2.id)
  55. assert_equal(group2.updated_at.to_s, '2015-02-05 16:39:00 UTC')
  56. end
  57. test 'references test' do
  58. # create base
  59. groups = Group.where(name: 'Users')
  60. roles = Role.where(name: %w[Agent Admin])
  61. agent1 = User.create_or_update(
  62. login: 'model-agent1@example.com',
  63. firstname: 'Model',
  64. lastname: 'Agent1',
  65. email: 'model-agent1@example.com',
  66. password: 'agentpw',
  67. active: true,
  68. roles: roles,
  69. groups: groups,
  70. updated_at: '2015-02-05 16:37:00',
  71. updated_by_id: 1,
  72. created_by_id: 1,
  73. )
  74. agent2 = User.create_or_update(
  75. login: 'model-agent2@example.com',
  76. firstname: 'Model',
  77. lastname: 'Agent2',
  78. email: 'model-agent2@example.com',
  79. password: 'agentpw',
  80. active: true,
  81. roles: roles,
  82. groups: groups,
  83. updated_at: '2015-02-05 17:37:00',
  84. updated_by_id: agent1.id,
  85. created_by_id: 1,
  86. )
  87. organization1 = Organization.create_if_not_exists(
  88. name: 'Model Org 1',
  89. updated_at: '2015-02-05 16:37:00',
  90. updated_by_id: 1,
  91. created_by_id: 1,
  92. )
  93. organization2 = Organization.create_if_not_exists(
  94. name: 'Model Org 2',
  95. updated_at: '2015-02-05 16:37:00',
  96. updated_by_id: agent1.id,
  97. created_by_id: 1,
  98. )
  99. roles = Role.where(name: 'Customer')
  100. customer1 = User.create_or_update(
  101. login: 'model-customer1@example.com',
  102. firstname: 'Model',
  103. lastname: 'Customer1',
  104. email: 'model-customer1@example.com',
  105. password: 'customerpw',
  106. active: true,
  107. organization_id: organization1.id,
  108. roles: roles,
  109. updated_at: '2015-02-05 16:37:00',
  110. updated_by_id: 1,
  111. created_by_id: 1,
  112. )
  113. customer2 = User.create_or_update(
  114. login: 'model-customer2@example.com',
  115. firstname: 'Model',
  116. lastname: 'Customer2',
  117. email: 'model-customer2@example.com',
  118. password: 'customerpw',
  119. active: true,
  120. organization_id: nil,
  121. roles: roles,
  122. updated_at: '2015-02-05 16:37:00',
  123. updated_by_id: agent1.id,
  124. created_by_id: 1,
  125. )
  126. customer3 = User.create_or_update(
  127. login: 'model-customer3@example.com',
  128. firstname: 'Model',
  129. lastname: 'Customer3',
  130. email: 'model-customer3@example.com',
  131. password: 'customerpw',
  132. active: true,
  133. organization_id: nil,
  134. roles: roles,
  135. updated_at: '2015-02-05 16:37:00',
  136. updated_by_id: agent1.id,
  137. created_by_id: agent1.id,
  138. )
  139. # user
  140. # verify agent1
  141. references1 = Models.references('User', agent1.id)
  142. assert_equal(references1['User']['updated_by_id'], 3)
  143. assert_equal(references1['User']['created_by_id'], 1)
  144. assert_equal(references1['Organization']['updated_by_id'], 1)
  145. assert_equal(references1['UserGroup']['user_id'], 1)
  146. assert(!references1['Group'])
  147. references_total1 = Models.references_total('User', agent1.id)
  148. assert_equal(references_total1, 8)
  149. # verify agent2
  150. references2 = Models.references('User', agent2.id)
  151. assert(!references2['User'])
  152. assert(!references2['Organization'])
  153. assert(!references2['Group'])
  154. assert_equal(references2['UserGroup']['user_id'], 1)
  155. references_total2 = Models.references_total('User', agent2.id)
  156. assert_equal(references_total2, 1)
  157. Models.merge('User', agent2.id, agent1.id)
  158. # verify agent1
  159. references1 = Models.references('User', agent1.id)
  160. assert(!references1['User'])
  161. assert(!references1['Organization'])
  162. assert(!references1['Group'])
  163. assert(!references1['UserGroup'])
  164. assert(references1.blank?)
  165. references_total1 = Models.references_total('User', agent1.id)
  166. assert_equal(references_total1, 0)
  167. # verify agent2
  168. references2 = Models.references('User', agent2.id)
  169. assert_equal(references2['User']['updated_by_id'], 3)
  170. assert_equal(references2['User']['created_by_id'], 1)
  171. assert_equal(references2['Organization']['updated_by_id'], 1)
  172. assert_equal(references2['UserGroup']['user_id'], 2)
  173. assert(!references2['Group'])
  174. references_total2 = Models.references_total('User', agent2.id)
  175. assert_equal(references_total2, 9)
  176. # org
  177. # verify agent1
  178. references1 = Models.references('Organization', organization1.id)
  179. assert_equal(references1['User']['organization_id'], 1)
  180. assert(!references1['Organization'])
  181. assert(!references1['Group'])
  182. references_total1 = Models.references_total('Organization', organization1.id)
  183. assert_equal(references_total1, 1)
  184. # verify agent2
  185. references2 = Models.references('Organization', organization2.id)
  186. assert(references2.blank?)
  187. references_total2 = Models.references_total('Organization', organization2.id)
  188. assert_equal(references_total2, 0)
  189. Models.merge('Organization', organization2.id, organization1.id)
  190. # verify agent1
  191. references1 = Models.references('Organization', organization1.id)
  192. assert(references1.blank?)
  193. references_total1 = Models.references_total('Organization', organization1.id)
  194. assert_equal(references_total1, 0)
  195. # verify agent2
  196. references2 = Models.references('Organization', organization2.id)
  197. assert_equal(references2['User']['organization_id'], 1)
  198. assert(!references2['Organization'])
  199. assert(!references2['Group'])
  200. references_total2 = Models.references_total('Organization', organization2.id)
  201. assert_equal(references_total2, 1)
  202. end
  203. test 'searchable test' do
  204. searchable = Models.searchable
  205. assert(searchable.include?(Ticket))
  206. assert(searchable.include?(User))
  207. assert(searchable.include?(Organization))
  208. assert_equal(3, searchable.count)
  209. end
  210. end