/spec/oria_spec.rb

http://github.com/intridea/oria · Ruby · 152 lines · 113 code · 24 blank · 15 comment · 15 complexity · b2194c3cf40f7a6a66bb3a65c148313d MD5 · raw file

  1. require "spec_helper"
  2. require "oria"
  3. describe Oria do
  4. describe "Moneta methods" do
  5. it "should include []" do
  6. Oria.should respond_to(:[])
  7. end
  8. it "should include []=" do
  9. Oria.should respond_to(:[]=)
  10. end
  11. it "should include clear" do
  12. Oria.should respond_to(:clear)
  13. end
  14. it "should include delete" do
  15. Oria.should respond_to(:delete)
  16. end
  17. it "should include has_key?" do
  18. Oria.should respond_to(:has_key?)
  19. end
  20. it "should include key?" do
  21. Oria.should respond_to(:key?)
  22. end
  23. end
  24. describe "class methods" do
  25. it "should provide a connect method" do
  26. Oria.should respond_to(:connect)
  27. end
  28. it "should support per-app keys" do
  29. Oria.should respond_to(:app_key)
  30. Oria.should respond_to(:app_key=)
  31. end
  32. it "should support custom connections" do
  33. Oria.connect("127.0.0.1", 4567)
  34. Oria.server.should == "127.0.0.1"
  35. Oria.port.should == 4567
  36. Oria::Server.stop
  37. sleep 1
  38. end
  39. end
  40. describe "app_key" do
  41. # it "should default to nil" do
  42. # # This is bleeding over from the last example below. Frankly,
  43. # # I don't know how to fix it. I'm unclear on separating
  44. # # Rspec examples from each other at the class level like
  45. # # this.
  46. # Oria.app_key.should be_nil
  47. # end
  48. it "should be configurable" do
  49. Oria.app_key = "test_app"
  50. Oria.app_key.should == "test_app"
  51. end
  52. end
  53. describe "setting values" do
  54. before :all do
  55. Oria.connect
  56. sleep 1
  57. end
  58. after :all do
  59. # TODO: In general, I find "sleep" to be a terrible method of doing anything.
  60. # Still, it gets the job done, albeit by delaying our specs.
  61. Oria::Server.stop
  62. sleep 0.5
  63. end
  64. it "should set string values" do
  65. Oria["foo"] = "bar"
  66. Oria["foo"].should == "bar"
  67. end
  68. it "should set integer values" do
  69. Oria["foo"] = 12
  70. Oria["foo"].should == 12
  71. end
  72. it "should support Hashes" do
  73. Oria["foo"] = {"Flip" => "Sasser"}
  74. Oria["foo"].should == {"Flip" => "Sasser"}
  75. end
  76. it "should support Arrays" do
  77. Oria["foo"] = ["Foo", "Bar", "Baz"]
  78. Oria["foo"].should == ["Foo", "Bar", "Baz"]
  79. end
  80. it "should support Booleans" do
  81. Oria["true"] = false
  82. Oria["true"].should == false
  83. end
  84. it "should support deleting values" do
  85. Oria["memoria"] = "foobar"
  86. Oria["dont_delete"] = "please"
  87. Oria.delete("memoria").should == "foobar"
  88. Oria["memora"].should be_nil
  89. Oria["dont_delete"].should == "please"
  90. end
  91. it "should support complete clearing" do
  92. Oria["a"] = "c"
  93. Oria["b"] = "d"
  94. Oria["a"].should == "c"
  95. Oria["b"].should == "d"
  96. Oria.clear
  97. Oria["a"].should be_nil
  98. Oria["b"].should be_nil
  99. end
  100. it "should support key-checking" do
  101. Oria["key_check"] = "check-a-key"
  102. Oria.key?("key_check").should be_true
  103. Oria.key?("key_check_broken").should be_false
  104. Oria.has_key?("key_check").should be_true
  105. Oria.has_key?("key_check_broken").should be_false
  106. end
  107. it "should support stashing" do
  108. key = Oria.stash("foobar")
  109. key.should_not be_nil
  110. Oria[key].should == "foobar"
  111. end
  112. it "should support different app_keys" do
  113. Oria.app_key = "test_app_1"
  114. Oria["test_app_1"] = "bar"
  115. Oria["test_app_1"].should == "bar"
  116. Oria.app_key = "test_app_2"
  117. Oria["test_app_2"] = "baz"
  118. Oria["test_app_1"].should be_nil
  119. Oria["test_app_2"].should == "baz"
  120. end
  121. end
  122. # it "should automatically boot a server" do
  123. # Oria.should_receive(:connect)
  124. # Oria["foo"] = "bar"
  125. # Oria["foo"].should == "bar"
  126. # Oria::Server.stop
  127. # end
  128. end