/wheels/tests/model/callbacks/beforeSave.cfc

http://cfwheels.googlecode.com/ · ColdFusion CFScript · 75 lines · 67 code · 8 blank · 0 comment · 0 complexity · 6c85fc3f970ef644033a9ef8e9fa0c5e MD5 · raw file

  1. <cfcomponent extends="wheelsMapping.Test">
  2. <cffunction name="test_proceeding_on_true_and_nothing">
  3. <cfset model("tag").$registerCallback(type="beforeSave", methods="callbackThatReturnsTrue,callbackThatReturnsNothing")>
  4. <cfset loc.obj = model("tag").findOne(order="id")>
  5. <cfset loc.oldName = loc.obj.name>
  6. <cfset loc.obj.name = "somethingElse">
  7. <cfset loc.obj.save()>
  8. <cfset loc.obj.reload()>
  9. <cfset loc.name = loc.obj.name>
  10. <cfset loc.obj.name = loc.oldName>
  11. <cfset loc.obj.save()>
  12. <cfset model("tag").$clearCallbacks(type="beforeSave")>
  13. <cfset assert("loc.name IS NOT loc.oldName")>
  14. </cffunction>
  15. <cffunction name="test_aborting_on_false">
  16. <cfset model("tag").$registerCallback(type="beforeSave", methods="callbackThatReturnsFalse")>
  17. <cfset loc.obj = model("tag").findOne(order="id")>
  18. <cfset loc.oldName = loc.obj.name>
  19. <cfset loc.obj.name = "somethingElse">
  20. <cfset loc.obj.save()>
  21. <cfset loc.obj.reload()>
  22. <cfset model("tag").$clearCallbacks(type="beforeSave")>
  23. <cfset assert("loc.obj.name IS loc.oldName")>
  24. </cffunction>
  25. <cffunction name="test_setting_property">
  26. <cfset model("tag").$registerCallback(type="beforeSave", methods="callbackThatSetsProperty")>
  27. <cfset loc.obj = model("tag").findOne(order="id")>
  28. <cfset loc.existBefore = StructKeyExists(loc.obj, "setByCallback")>
  29. <cfset loc.obj.save()>
  30. <cfset loc.existAfter = StructKeyExists(loc.obj, "setByCallback")>
  31. <cfset model("tag").$clearCallbacks(type="beforeSave")>
  32. <cfset assert("NOT loc.existBefore AND loc.existAfter")>
  33. </cffunction>
  34. <cffunction name="test_setting_property_with_skipped_callback">
  35. <cfset model("tag").$registerCallback(type="beforeSave", methods="callbackThatSetsProperty")>
  36. <cfset loc.obj = model("tag").findOne(order="id")>
  37. <cfset loc.existBefore = StructKeyExists(loc.obj, "setByCallback")>
  38. <cfset loc.obj.save(callbacks=false, transaction="rollback")>
  39. <cfset loc.existAfter = StructKeyExists(loc.obj, "setByCallback")>
  40. <cfset model("tag").$clearCallbacks(type="beforeSave")>
  41. <cfset assert("NOT loc.existBefore AND NOT loc.existAfter")>
  42. </cffunction>
  43. <cffunction name="test_execution_order">
  44. <cfset model("tag").$registerCallback(type="beforeSave", methods="firstCallback,secondCallback")>
  45. <cfset loc.obj = model("tag").findOne(order="id")>
  46. <cfset loc.obj.name = "somethingElse">
  47. <cfset loc.obj.save()>
  48. <cfset model("tag").$clearCallbacks(type="beforeSave")>
  49. <cfset assert("loc.obj.orderTest IS 'first,second'")>
  50. </cffunction>
  51. <cffunction name="test_aborting_chain">
  52. <cfset model("tag").$registerCallback(type="beforeSave", methods="firstCallback,callbackThatReturnsFalse,secondCallback")>
  53. <cfset loc.obj = model("tag").findOne(order="id")>
  54. <cfset loc.obj.name = "somethingElse">
  55. <cfset loc.obj.save()>
  56. <cfset model("tag").$clearCallbacks(type="beforeSave")>
  57. <cfset assert("loc.obj.orderTest IS 'first'")>
  58. </cffunction>
  59. <cffunction name="test_setting_in_init_and_clearing">
  60. <cfset loc.callbacks = model("author").$callbacks()>
  61. <cfset assert("loc.callbacks.beforeSave[1] IS 'callbackThatReturnsTrue'")>
  62. <cfset model("author").$clearCallbacks(type="beforeSave")>
  63. <cfset assert("ArrayLen(loc.callbacks.beforeSave) IS 0 AND loc.callbacks.beforeDelete[1] IS 'callbackThatReturnsTrue'")>
  64. <cfset model("author").$clearCallbacks()>
  65. <cfset assert("ArrayLen(loc.callbacks.beforeDelete) IS 0")>
  66. </cffunction>
  67. </cfcomponent>