/test/functional/test_safe.rb

http://github.com/jnunemaker/mongomapper · Ruby · 76 lines · 66 code · 10 blank · 0 comment · 2 complexity · 134ee0d0760fa1c1049762c221b0e785 MD5 · raw file

  1. require 'test_helper'
  2. class SafeTest < Test::Unit::TestCase
  3. context "A Document" do
  4. should "default safe to off" do
  5. Doc().should_not be_safe
  6. end
  7. should "allow turning safe on" do
  8. Doc() { safe }.should be_safe
  9. end
  10. context "inherited with safe setting on" do
  11. should "set subclass safe setting on" do
  12. inherited = Class.new(Doc() { safe })
  13. inherited.should be_safe
  14. end
  15. end
  16. context "inherited with safe setting off" do
  17. should "leave subclass safe setting off" do
  18. inherited = Class.new(Doc())
  19. inherited.should_not be_safe
  20. end
  21. end
  22. end
  23. context "A safe document" do
  24. setup do
  25. @klass = Doc() do
  26. safe
  27. end
  28. end
  29. teardown { drop_indexes(@klass) }
  30. context "#save" do
  31. setup do
  32. @klass.ensure_index :email, :unique => true
  33. end
  34. context "using safe setting from class" do
  35. should "work fine when all is well" do
  36. assert_nothing_raised do
  37. @klass.new(:email => 'john@doe.com').save
  38. end
  39. end
  40. should "raise error when operation fails" do
  41. assert_raises(Mongo::OperationFailure) do
  42. 2.times do
  43. @klass.new(:email => 'john@doe.com').save
  44. end
  45. end
  46. end
  47. end
  48. context "overriding safe setting" do
  49. should "raise error if safe is true" do
  50. assert_raises(Mongo::OperationFailure) do
  51. 2.times do
  52. @klass.new(:email => 'john@doe.com').save(:safe => true)
  53. end
  54. end
  55. end
  56. should "not raise error if safe is false" do
  57. assert_nothing_raised do
  58. 2.times do
  59. @klass.new(:email => 'john@doe.com').save(:safe => false)
  60. end
  61. end
  62. end
  63. end
  64. end
  65. end
  66. end