Guest User

Untitled

a guest
Mar 20th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.05 KB | None | 0 0
  1. public class MyClass
  2. {
  3.  
  4. public void deleteOrganization(Organization organization)
  5. {
  6. /*Delete organization*/
  7.  
  8. /*Delete related users*/
  9. for (User user : organization.getUsers()) {
  10. deleteUser(user);
  11. }
  12. }
  13.  
  14. public void deleteUser(User user)
  15. {
  16. /*Delete user logic*/
  17. }
  18. }
  19.  
  20. @Test
  21. public void shouldDeleteOrganization()
  22. {
  23. MyClass spy = spy(new MyClass());
  24.  
  25. // avoid invoking the method
  26. doNothing().when(spy).deleteUser(any(User.class));
  27.  
  28. // invoke method under test
  29. spy.deleteOrganization(new Organization());
  30. }
  31.  
  32. public void deleteOrganization(Organization organization)
  33. {
  34. /*Delete organization*/
  35.  
  36. /*Delete related users*/
  37. for (User user : organization.getUsers()) {
  38. privateDeleteUser(user);
  39. }
  40. }
  41.  
  42. private void privateDeleteUser(User user){
  43. //actual delete logic here, without anything delete organization doesn't need
  44. }
  45.  
  46.  
  47. public void deleteUser(User user)
  48. {
  49. //do validation
  50. privateDeleteUser(user);
  51. //perform any extra business locic
  52. }
  53.  
  54. public void DeleteOrganizationService(){
  55.  
  56. private MyClass myClass;
  57. ...
  58.  
  59. public void delete(Organization organization)
  60. {
  61. myClass.deleteOrganization(organization);
  62. /*Delete related users*/
  63. for (User user : organization.getUsers()) {
  64. myClass.deleteUser(user);
  65. }
  66. }
  67.  
  68. }
  69.  
  70. public void deleteOrganization(Organization organization)
  71. {
  72. /*Delete organization only does not modify users*/
  73. }
  74.  
  75. public void deleteUser(User user)
  76. {
  77. /*same as before*/
  78. }
  79.  
  80. Self Use of only override-able method is not proper design pattern.
  81.  
  82. Solution to above problem
  83.  
  84. public class MyClass
  85. {
  86.  
  87. public void deleteOrganization(Organization organization)
  88. {
  89. /*Delete organization*/
  90.  
  91. /*Delete related users*/
  92. for (User user : organization.getUsers()) {
  93. deleteSingleUser(user);
  94. }
  95. }
  96.  
  97. public void deleteUser(User user)
  98. {
  99. deleteSingleUser(user);
  100. }
  101.  
  102. private void deleteSingleUser(User user){
  103. /*delete user*/
  104. }
  105. }
Add Comment
Please, Sign In to add comment