Advertisement
Guest User

BaseOpenmrsObjectTest

a guest
Jun 20th, 2020
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.22 KB | None | 0 0
  1. /**
  2. * This Source Code Form is subject to the terms of the Mozilla Public License,
  3. * v. 2.0. If a copy of the MPL was not distributed with this file, You can
  4. * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
  5. * the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
  6. *
  7. * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
  8. * graphic logo is a trademark of OpenMRS Inc.
  9. */
  10. package org.openmrs;
  11.  
  12. import org.hibernate.Session;
  13. import org.hibernate.SessionFactory;
  14. import org.junit.jupiter.api.Test;
  15. import org.junit.platform.runner.JUnitPlatform;
  16. import org.junit.runner.RunWith;
  17. import org.openmrs.test.BaseContextSensitiveTest;
  18.  
  19. import static org.junit.jupiter.api.Assertions.assertEquals;
  20. import static org.junit.jupiter.api.Assertions.assertFalse;
  21. import static org.junit.jupiter.api.Assertions.assertTrue;
  22.  
  23. @RunWith(JUnitPlatform.class)
  24. public class BaseOpenmrsObjectTest extends BaseContextSensitiveTest {
  25.  
  26. private static class BaseOpenmrsObjectMock extends BaseOpenmrsObject {
  27.  
  28. @Override
  29. public Integer getId() {
  30. return null;
  31. }
  32.  
  33. @Override
  34. public void setId(Integer id) {
  35. }
  36.  
  37. }
  38.  
  39. /**
  40. * @see BaseOpenmrsObject#equals(Object)
  41. */
  42. @Test
  43. public void equals_shouldReturnFalseIfGivenObjHasNullUuid() {
  44. //given
  45. BaseOpenmrsObject o = new BaseOpenmrsObjectMock();
  46. BaseOpenmrsObject obj = new BaseOpenmrsObjectMock();
  47.  
  48. //when
  49. obj.setUuid(null);
  50.  
  51. //then
  52. assertFalse(o.equals(obj));
  53. }
  54.  
  55. /**
  56. * @see BaseOpenmrsObject#equals(Object)
  57. */
  58. @Test
  59. public void equals_shouldReturnFalseIfGivenObjIsNotInstanceOfBaseOpenmrsObject() {
  60. //given
  61. BaseOpenmrsObject o = new BaseOpenmrsObjectMock();
  62.  
  63. //when
  64. Object obj = new Object();
  65.  
  66. //then
  67. assertFalse(o.equals(obj));
  68. }
  69.  
  70. /**
  71. * @see BaseOpenmrsObject#equals(Object)
  72. */
  73. @Test
  74. public void equals_shouldReturnFalseIfGivenObjIsNull() {
  75. //given
  76. BaseOpenmrsObject o = new BaseOpenmrsObjectMock();
  77.  
  78. //when
  79. BaseOpenmrsObject obj = null;
  80.  
  81. //then
  82. assertFalse(o.equals(obj));
  83. }
  84.  
  85. /**
  86. * @see BaseOpenmrsObject#equals(Object)
  87. */
  88. @Test
  89. public void equals_shouldReturnFalseIfUuidIsNull() {
  90. //given
  91. BaseOpenmrsObject o = new BaseOpenmrsObjectMock();
  92. BaseOpenmrsObject obj = new BaseOpenmrsObjectMock();
  93.  
  94. //when
  95. o.setUuid(null);
  96.  
  97. //then
  98. assertFalse(o.equals(obj));
  99. }
  100.  
  101. /**
  102. * @see BaseOpenmrsObject#equals(Object)
  103. */
  104. @Test
  105. public void equals_shouldReturnTrueIfObjectsAreTheSame() {
  106. //given
  107. BaseOpenmrsObject o = new BaseOpenmrsObjectMock();
  108.  
  109. //when
  110. BaseOpenmrsObject obj = o;
  111.  
  112. //then
  113. assertTrue(o.equals(obj));
  114. }
  115.  
  116. /**
  117. * @see BaseOpenmrsObject#equals(Object)
  118. */
  119. @Test
  120. public void equals_shouldReturnTrueIfUuidsAreEqual() {
  121. //given
  122. BaseOpenmrsObject o = new BaseOpenmrsObjectMock();
  123. BaseOpenmrsObject obj = new BaseOpenmrsObjectMock();
  124.  
  125. //when
  126. obj.setUuid(o.getUuid());
  127.  
  128. //then
  129. assertTrue(o.equals(obj));
  130. }
  131.  
  132. /**
  133. * @see BaseOpenmrsObject#hashCode()
  134. */
  135. @Test
  136. public void hashCode_shouldNotFailIfUuidIsNull() {
  137. //given
  138. BaseOpenmrsObject o = new BaseOpenmrsObjectMock();
  139.  
  140. //when
  141. o.setUuid(null);
  142.  
  143. //then
  144. o.hashCode();
  145. }
  146.  
  147. @Test
  148. public void shouldNotBeEqualWhenDifferentClassesAndSameId() {
  149. Encounter encounter = new Encounter(2);
  150. Order order = new Order(2);
  151.  
  152. assertFalse(encounter.equals(order));
  153. }
  154.  
  155. @Test
  156. public void shouldNotBeEqualWhenFirstIsNull() {
  157. Encounter encounter = new Encounter(2);
  158. assertFalse(encounter.equals(null));
  159. }
  160.  
  161. /**
  162. * @see BaseOpenmrsObject#toString()
  163. */
  164. @Test
  165. public void toString_shouldIncludeUuidIfNotNull() {
  166. BaseOpenmrsObject o = new BaseOpenmrsObjectMock();
  167.  
  168. assertEquals("BaseOpenmrsObjectTest.BaseOpenmrsObjectMock[hashCode=" + Integer.toHexString(o.hashCode()) + ",uuid="
  169. + o.getUuid() + "]", o.toString());
  170. }
  171.  
  172. /**
  173. * @see BaseOpenmrsObject#toString()
  174. */
  175. @Test
  176. public void toString_shouldIncludeHashCodeIfUuidIsNull() {
  177. //given
  178. BaseOpenmrsObject o = new BaseOpenmrsObjectMock();
  179. o.setUuid(null);
  180.  
  181. //when
  182. //then
  183. assertEquals("BaseOpenmrsObjectTest.BaseOpenmrsObjectMock[hashCode=" + Integer.toHexString(o.hashCode())
  184. + ",uuid=<null>]", o.toString());
  185. }
  186.  
  187. /**
  188. * @see BaseOpenmrsObject#equals(Object)
  189. */
  190. @Test
  191. public void equals_shouldReturnTrueIfGivenObjectIsInstanceOfSuperOrExtendingClass() {
  192. Concept concept = new Concept(5);
  193. Concept numeric = new ConceptNumeric();
  194. numeric.setUuid(concept.getUuid());
  195. assertTrue(numeric.equals(concept));
  196. assertTrue(concept.equals(numeric));
  197. }
  198.  
  199. /**
  200. * @see BaseOpenmrsObject#equals(Object)
  201. */
  202. @Test
  203. public void equals_shouldReturnFalseIfGivenObjIsNotInstanceOfSuperOrExtendingClass() {
  204. Encounter encounter = new Encounter();
  205. Concept concept = new Concept(5);
  206. concept.setUuid(encounter.getUuid());
  207. assertFalse(encounter.equals(concept));
  208. assertFalse(concept.equals(encounter));
  209. }
  210.  
  211. /**
  212. * @see BaseOpenmrsObject#equals(Object)
  213. */
  214. @Test
  215. public void equals_shouldReturnTrueIfGivenObjectIsSubclassOfSuperOrExtendingClass() {
  216. Order order = new Order(21);
  217. DrugOrder type = new DrugOrder(21);
  218. type.setUuid(order.getUuid());
  219. assertTrue(type.equals(order));
  220. assertTrue(order.equals(type));
  221. }
  222.  
  223. /**
  224. * @see BaseOpenmrsObject#equals(Object)
  225. */
  226. @Test
  227. public void equals_shouldReturnFalseIfGivenObjectIsNotSubclassOfSuperOrExtendingClass() {
  228. Order order = new Order(21);
  229. OrderFrequency type = new OrderFrequency();
  230. type.setUuid(order.getUuid());
  231. assertFalse(type.equals(order));
  232. assertFalse(order.equals(type));
  233. }
  234.  
  235. /**
  236. * @see BaseOpenmrsObject#equals(Object)
  237. */
  238. @Test
  239. public void equals_shouldReturnfalseIfHibernateProxyOfOneThingIsComparedtoHibernateProxyofSomething() {
  240. SessionFactory sessionFactory = (SessionFactory) applicationContext.getBean("sessionFactory");
  241. Session session = sessionFactory.getCurrentSession();
  242. assertFalse((session.load(Patient.class, 2)).equals((session.load(Concept.class, 11))));
  243. }
  244.  
  245. /**
  246. * @see BaseOpenmrsObject#equals(Object)
  247. */
  248. @Test
  249. public void equals_shouldReturnFalseIfHibernateProxyOfOneThingIsComparedtoNonHibernateProxyofSomething() {
  250. SessionFactory sessionFactory = (SessionFactory) applicationContext.getBean("sessionFactory");
  251. Session session = sessionFactory.getCurrentSession();
  252.  
  253. //NonHibernate managed class declaration
  254. class TestClass extends BaseOpenmrsObject {
  255. private Integer id;
  256. TestClass() {
  257. }
  258. @Override
  259. public Integer getId() {
  260. return id;
  261. }
  262. @Override
  263. public void setId(Integer id) {
  264. this.id = id;
  265. }
  266. @Override
  267. public int hashCode() {
  268. if (getUuid() == null) {
  269. return super.hashCode();
  270. }
  271. return getUuid().hashCode();
  272. }
  273. @Override
  274. public boolean equals(Object obj) {
  275. if (this == obj) {
  276. return true;
  277. }
  278. if (!(obj instanceof TestClass)) {
  279. return false;
  280. }
  281. TestClass other = (TestClass) obj;
  282. if (getUuid() == null) {
  283. return false;
  284. }
  285. return getUuid().equals(other.getUuid());
  286. }
  287. @Override
  288. public String toString() {
  289. return new org.apache.commons.lang3.builder.ToStringBuilder(this, org.apache.commons.lang3.builder.ToStringStyle.SHORT_PREFIX_STYLE).append("hashCode",
  290. Integer.toHexString(hashCode())).append("uuid", getUuid()).build();
  291. }
  292. }
  293.  
  294. Patient patient = (Patient) session.get(Patient.class, 2);
  295. String uid = patient.getUuid();
  296.  
  297. //NonHibernate managed class Instantiation
  298. TestClass obj = new TestClass();
  299. obj.setUuid(uid);
  300.  
  301. assertFalse(obj.equals((session.load(Patient.class, 2))));
  302. assertFalse((session.load(Patient.class, 2)).equals(obj));
  303. }
  304.  
  305. /**
  306. * @see BaseOpenmrsObject#equals(Object)
  307. */
  308. @Test
  309. public void equals_shouldWorkOnNonHibernateManagedClasses() {
  310. //NonHibernate managed class
  311. class TestClass extends BaseOpenmrsObject {
  312. private Integer id;
  313. TestClass() {
  314. }
  315. @Override
  316. public Integer getId() {
  317. return id;
  318. }
  319. @Override
  320. public void setId(Integer id) {
  321. this.id = id;
  322. }
  323. @Override
  324. public int hashCode() {
  325. if (getUuid() == null) {
  326. return super.hashCode();
  327. }
  328. return getUuid().hashCode();
  329. }
  330. @Override
  331. public boolean equals(Object obj) {
  332. if (this == obj) {
  333. return true;
  334. }
  335. if (!(obj instanceof TestClass)) {
  336. return false;
  337. }
  338. TestClass other = (TestClass) obj;
  339. if (getUuid() == null) {
  340. return false;
  341. }
  342. else {
  343. return getUuid().equals(other.getUuid());
  344. }
  345. }
  346. @Override
  347. public String toString() {
  348. return new org.apache.commons.lang3.builder.ToStringBuilder(this, org.apache.commons.lang3.builder.ToStringStyle.SHORT_PREFIX_STYLE).append("hashCode",
  349. Integer.toHexString(hashCode())).append("uuid", getUuid()).build();
  350. }
  351. }
  352.  
  353. //Another NonHibernate managed class
  354. class AnotherTestClass extends BaseOpenmrsObject {
  355. private int id;
  356. @Override
  357. public boolean equals(Object obj) {
  358. if (this == obj) {
  359. return true;
  360. }
  361. if (!(obj instanceof AnotherTestClass)) {
  362. return false;
  363. }
  364. AnotherTestClass other = (AnotherTestClass) obj;
  365. if (getUuid() == null) {
  366. return false;
  367. }
  368. return getUuid().equals(other.getUuid());
  369. }
  370.  
  371. @Override
  372. public Integer getId() {
  373. return id;
  374. }
  375.  
  376. @Override
  377. public void setId(Integer id) {
  378. this.id = id;
  379. }
  380. }
  381.  
  382. //Object of a NonHibernate managed class
  383. TestClass testObj = new TestClass();
  384. String uuid = testObj.getUuid();
  385.  
  386. TestClass testObjsameuuid = new TestClass();
  387. testObjsameuuid.setUuid(uuid);
  388. //Object of Another NonHibernate managed class
  389. AnotherTestClass anotherTestObj = new AnotherTestClass();
  390. anotherTestObj.setUuid(uuid);
  391.  
  392. AnotherTestClass anotherTestObjectsameUuid = new AnotherTestClass();
  393. anotherTestObjectsameUuid.setUuid(uuid);
  394.  
  395. assertFalse(anotherTestObj.equals(testObj));
  396. assertFalse(testObj.equals(anotherTestObj));
  397. assertTrue(testObj.equals(testObjsameuuid));
  398. assertTrue(anotherTestObj.equals(anotherTestObjectsameUuid));
  399. assertTrue(testObjsameuuid.equals(testObj));
  400. assertTrue(anotherTestObjectsameUuid.equals(anotherTestObj));
  401.  
  402. }
  403.  
  404. /**
  405. * @see BaseOpenmrsObject#equals(Object)
  406. */
  407. @Test
  408. public void equals_shouldReturnTrueIfHibernateProxyOfOneObjectComparedToNonHibernateProxyOfTheSameObject(){
  409. SessionFactory sessionFactory = (SessionFactory) applicationContext.getBean("sessionFactory");
  410. Session session = sessionFactory.getCurrentSession();
  411.  
  412. Patient patient = (Patient) session.get(Patient.class, 2);
  413. Patient patientproxyobject = (Patient) session.load(Patient.class, 2);
  414.  
  415. assertTrue(patient.equals(patientproxyobject));
  416. }
  417.  
  418. /**
  419. * @see BaseOpenmrsObject#equals(Object)
  420. */
  421. @Test
  422. public void equals_shouldReturnTrueIfHibernateProxyOfSomeObjectComparedToAnotherHibernateProxyOfTheSameObject(){
  423. SessionFactory sessionFactory = (SessionFactory) applicationContext.getBean("sessionFactory");
  424. Session session = sessionFactory.getCurrentSession();
  425.  
  426. assertTrue(session.load(Patient.class, 2).equals((session.load(Patient.class, 2)))) ;
  427. }
  428. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement