couchmodel 0.1.0.beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +20 -0
 - data/README.rdoc +156 -0
 - data/Rakefile +20 -0
 - data/lib/core_extension/array.rb +14 -0
 - data/lib/core_extension/string.rb +12 -0
 - data/lib/couch_model/active_model.rb +86 -0
 - data/lib/couch_model/base/accessor.rb +39 -0
 - data/lib/couch_model/base/association.rb +63 -0
 - data/lib/couch_model/base/finder.rb +28 -0
 - data/lib/couch_model/base/setup.rb +88 -0
 - data/lib/couch_model/base.rb +117 -0
 - data/lib/couch_model/collection.rb +84 -0
 - data/lib/couch_model/configuration.rb +68 -0
 - data/lib/couch_model/database.rb +64 -0
 - data/lib/couch_model/design.rb +92 -0
 - data/lib/couch_model/server.rb +44 -0
 - data/lib/couch_model/transport.rb +68 -0
 - data/lib/couch_model/view.rb +52 -0
 - data/lib/couch_model.rb +15 -0
 - data/spec/fake_transport.yml +202 -0
 - data/spec/fake_transport_helper.rb +27 -0
 - data/spec/integration/basic_spec.rb +125 -0
 - data/spec/integration/design/membership.design +5 -0
 - data/spec/integration/design/user.design +2 -0
 - data/spec/lib/core_extension/array_spec.rb +24 -0
 - data/spec/lib/core_extension/string_spec.rb +22 -0
 - data/spec/lib/couch_model/active_model_spec.rb +228 -0
 - data/spec/lib/couch_model/base_spec.rb +169 -0
 - data/spec/lib/couch_model/collection_spec.rb +100 -0
 - data/spec/lib/couch_model/configuration_spec.rb +117 -0
 - data/spec/lib/couch_model/core/accessor_spec.rb +59 -0
 - data/spec/lib/couch_model/core/association_spec.rb +114 -0
 - data/spec/lib/couch_model/core/finder_spec.rb +24 -0
 - data/spec/lib/couch_model/core/setup_spec.rb +88 -0
 - data/spec/lib/couch_model/database_spec.rb +165 -0
 - data/spec/lib/couch_model/design/association_test_model_one.design +5 -0
 - data/spec/lib/couch_model/design/base_test_model.design +10 -0
 - data/spec/lib/couch_model/design/setup_test_model.design +10 -0
 - data/spec/lib/couch_model/design_spec.rb +144 -0
 - data/spec/lib/couch_model/server_spec.rb +64 -0
 - data/spec/lib/couch_model/transport_spec.rb +44 -0
 - data/spec/lib/couch_model/view_spec.rb +166 -0
 - data/spec/lib/couch_model_spec.rb +3 -0
 - data/spec/spec_helper.rb +27 -0
 - metadata +128 -0
 
| 
         @@ -0,0 +1,144 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "spec_helper"))
         
     | 
| 
      
 2 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "lib", "couch_model", "design"))
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            CouchModel::Configuration.design_directory = File.join File.dirname(__FILE__), "design"
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            describe CouchModel::Design do
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              before :each do
         
     | 
| 
      
 9 
     | 
    
         
            +
                @model_class = Object
         
     | 
| 
      
 10 
     | 
    
         
            +
                @model_class.stub!(:to_s).and_return("BaseTestModel")
         
     | 
| 
      
 11 
     | 
    
         
            +
                @database = CouchModel::Database.new :name => "test"
         
     | 
| 
      
 12 
     | 
    
         
            +
                @design = CouchModel::Design.new @database, @model_class, :language => "another_language"
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              describe "initialize" do
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                it "should set the database" do
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @design.database.should == @database
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                it "should set the model class" do
         
     | 
| 
      
 22 
     | 
    
         
            +
                  @design.model_class.should == @model_class
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                it "should set the attributes" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                  @design.language.should == "another_language"
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              describe "filename" do
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                it "should return the name of the expected file" do
         
     | 
| 
      
 34 
     | 
    
         
            +
                  @design.filename.should == File.join(CouchModel::Configuration.design_directory, "base_test_model.design")
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
              describe "load_file" do
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                def do_load
         
     | 
| 
      
 42 
     | 
    
         
            +
                  @design.load_file
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                context "file does exists" do
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                  before :each do
         
     | 
| 
      
 48 
     | 
    
         
            +
                    File.stub!(:exists?).and_return(true)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                  it "should set the attributes" do
         
     | 
| 
      
 52 
     | 
    
         
            +
                    do_load
         
     | 
| 
      
 53 
     | 
    
         
            +
                    @design.id.should == "test_design"
         
     | 
| 
      
 54 
     | 
    
         
            +
                    @design.language.should == "javascript"
         
     | 
| 
      
 55 
     | 
    
         
            +
                    @design.views.should_not be_nil
         
     | 
| 
      
 56 
     | 
    
         
            +
                  end
         
     | 
| 
      
 57 
     | 
    
         
            +
                  
         
     | 
| 
      
 58 
     | 
    
         
            +
                  it "should return true" do
         
     | 
| 
      
 59 
     | 
    
         
            +
                    do_load.should be_true
         
     | 
| 
      
 60 
     | 
    
         
            +
                  end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                context "file doesn't exists" do
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                  before :each do
         
     | 
| 
      
 67 
     | 
    
         
            +
                    File.stub!(:exists?).and_return(false)
         
     | 
| 
      
 68 
     | 
    
         
            +
                  end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                  it "should return false" do
         
     | 
| 
      
 71 
     | 
    
         
            +
                    do_load.should be_false
         
     | 
| 
      
 72 
     | 
    
         
            +
                  end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
              end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
              describe "views=" do
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                before :each do
         
     | 
| 
      
 81 
     | 
    
         
            +
                  @view_hash = { "view_1" => { :map => "map function", :reduce => "reduce function" } }
         
     | 
| 
      
 82 
     | 
    
         
            +
                end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                it "should convert the given array of hashes into an array of views" do
         
     | 
| 
      
 85 
     | 
    
         
            +
                  @design.views = @view_hash
         
     | 
| 
      
 86 
     | 
    
         
            +
                  @design.views.first.should be_instance_of(CouchModel::View)
         
     | 
| 
      
 87 
     | 
    
         
            +
                  @design.views.first.name.should == "view_1"
         
     | 
| 
      
 88 
     | 
    
         
            +
                  @design.views.first.map.should == "map function"
         
     | 
| 
      
 89 
     | 
    
         
            +
                  @design.views.first.reduce.should == "reduce function"
         
     | 
| 
      
 90 
     | 
    
         
            +
                end
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
              end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
              describe "generate_view" do
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                def do_generate
         
     | 
| 
      
 97 
     | 
    
         
            +
                  @design.generate_view "test", :keys => [ :test ]
         
     | 
| 
      
 98 
     | 
    
         
            +
                end
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                it "should return the view" do
         
     | 
| 
      
 101 
     | 
    
         
            +
                  do_generate.should be_instance_of(CouchModel::View)
         
     | 
| 
      
 102 
     | 
    
         
            +
                end
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                it "should add a generated view" do
         
     | 
| 
      
 105 
     | 
    
         
            +
                  lambda do
         
     | 
| 
      
 106 
     | 
    
         
            +
                    do_generate
         
     | 
| 
      
 107 
     | 
    
         
            +
                  end.should change(@design.views, :size).by(1)
         
     | 
| 
      
 108 
     | 
    
         
            +
                end
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
              end
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
              describe "to_hash" do
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
                it "should return a hash with all the design data" do
         
     | 
| 
      
 115 
     | 
    
         
            +
                  @design.to_hash.should == {
         
     | 
| 
      
 116 
     | 
    
         
            +
                    "_id"       => "_design/test_design",
         
     | 
| 
      
 117 
     | 
    
         
            +
                    "language"  => "another_language",
         
     | 
| 
      
 118 
     | 
    
         
            +
                    "views"     => { "test_view" => {"map" => "function(document) { };", "reduce" => "function(key, values, rereduce) { };" } }
         
     | 
| 
      
 119 
     | 
    
         
            +
                  }
         
     | 
| 
      
 120 
     | 
    
         
            +
                end
         
     | 
| 
      
 121 
     | 
    
         
            +
                
         
     | 
| 
      
 122 
     | 
    
         
            +
              end
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
              describe "exists?" do
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
                it "should return true is the design document exists" do
         
     | 
| 
      
 127 
     | 
    
         
            +
                  @design.exists?.should be_true
         
     | 
| 
      
 128 
     | 
    
         
            +
                end
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
              end
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
              describe "push" do
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
                def do_push
         
     | 
| 
      
 135 
     | 
    
         
            +
                  @design.push
         
     | 
| 
      
 136 
     | 
    
         
            +
                end
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                it "should push the design" do
         
     | 
| 
      
 139 
     | 
    
         
            +
                  do_push.should be_true
         
     | 
| 
      
 140 
     | 
    
         
            +
                end
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
      
 142 
     | 
    
         
            +
              end
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,64 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "spec_helper"))
         
     | 
| 
      
 2 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "lib", "couch_model", "server"))
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe CouchModel::Server do
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              before :each do
         
     | 
| 
      
 7 
     | 
    
         
            +
                @server = CouchModel::Server.new
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              describe "==" do
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                it "should be true when comparing two equal servers" do
         
     | 
| 
      
 13 
     | 
    
         
            +
                  other = CouchModel::Server.new
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @server.should == other
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                it "should be false when comparing two different servers" do
         
     | 
| 
      
 18 
     | 
    
         
            +
                  other = CouchModel::Server.new :host => "other"
         
     | 
| 
      
 19 
     | 
    
         
            +
                  @server.should_not == other
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
                
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              describe "informations" do
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                it "should return server informations" do
         
     | 
| 
      
 27 
     | 
    
         
            +
                  informations = @server.informations
         
     | 
| 
      
 28 
     | 
    
         
            +
                  informations.should == {
         
     | 
| 
      
 29 
     | 
    
         
            +
                    "couchdb" => "Welcome",
         
     | 
| 
      
 30 
     | 
    
         
            +
                    "version" => "0.10.0"
         
     | 
| 
      
 31 
     | 
    
         
            +
                  }
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              describe "statistics" do
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                it "should return server statistics" do
         
     | 
| 
      
 39 
     | 
    
         
            +
                  statistics = @server.statistics
         
     | 
| 
      
 40 
     | 
    
         
            +
                  statistics.should have_key("httpd_status_codes")
         
     | 
| 
      
 41 
     | 
    
         
            +
                  statistics.should have_key("httpd_request_methods")
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              describe "database_names" do
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                it "should return the names of all databases" do
         
     | 
| 
      
 49 
     | 
    
         
            +
                  database_names = @server.database_names
         
     | 
| 
      
 50 
     | 
    
         
            +
                  database_names.should == [ "development", "test" ]
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
              describe "uuids" do
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                it "should return a given number of uuids" do
         
     | 
| 
      
 58 
     | 
    
         
            +
                  uuids = @server.uuids 3
         
     | 
| 
      
 59 
     | 
    
         
            +
                  uuids.size.should == 3
         
     | 
| 
      
 60 
     | 
    
         
            +
                end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,44 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "spec_helper"))
         
     | 
| 
      
 2 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "lib", "couch_model", "transport"))
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe CouchModel::Transport do
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              describe "request" do
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                use_real_transport!
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                before :each do
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @http_method = :get
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @url = "http://localhost:5984/"
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @options = { }
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  @request = Net::HTTP::Get.new "/"
         
     | 
| 
      
 16 
     | 
    
         
            +
                  @response = Object.new
         
     | 
| 
      
 17 
     | 
    
         
            +
                  @response.stub!(:code).and_return("200")
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @response.stub!(:body).and_return("{\"couchdb\":\"Welcome\",\"version\":\"0.10.0\"}")
         
     | 
| 
      
 19 
     | 
    
         
            +
                  Net::HTTP.stub!(:start).and_return(@response)
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                def do_request(options = { })
         
     | 
| 
      
 23 
     | 
    
         
            +
                  CouchModel::Transport.request @http_method, @url, @options.merge(options)
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                it "should initialize the correct request object" do
         
     | 
| 
      
 27 
     | 
    
         
            +
                  Net::HTTP::Get.should_receive(:new).with("/").and_return(@request)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  do_request
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                it "should perform the request" do
         
     | 
| 
      
 32 
     | 
    
         
            +
                  Net::HTTP.should_receive(:start).and_return(@response)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  do_request
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                it "should raise UnexpectedStatusCodeError if an unexpected status id returned" do
         
     | 
| 
      
 37 
     | 
    
         
            +
                  lambda do
         
     | 
| 
      
 38 
     | 
    
         
            +
                    do_request :expected_status_code => 201
         
     | 
| 
      
 39 
     | 
    
         
            +
                  end.should raise_error(CouchModel::Transport::UnexpectedStatusCodeError)
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
              end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,166 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "spec_helper"))
         
     | 
| 
      
 2 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "lib", "couch_model", "database"))
         
     | 
| 
      
 3 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "lib", "couch_model", "design"))
         
     | 
| 
      
 4 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "lib", "couch_model", "view"))
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            CouchModel::Configuration.design_directory = File.join File.dirname(__FILE__), "design"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            describe CouchModel::View do
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              before :each do
         
     | 
| 
      
 11 
     | 
    
         
            +
                @model_class = Object
         
     | 
| 
      
 12 
     | 
    
         
            +
                @model_class.stub!(:to_s).and_return("TestModel")
         
     | 
| 
      
 13 
     | 
    
         
            +
                @database = CouchModel::Database.new :name => "test"
         
     | 
| 
      
 14 
     | 
    
         
            +
                @design = CouchModel::Design.new @database, @model_class
         
     | 
| 
      
 15 
     | 
    
         
            +
                @view = CouchModel::View.new @design,
         
     | 
| 
      
 16 
     | 
    
         
            +
                                             :name    => "view name",
         
     | 
| 
      
 17 
     | 
    
         
            +
                                             :map     => "map function",
         
     | 
| 
      
 18 
     | 
    
         
            +
                                             :reduce  => "reduce function"
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              describe "initialize" do
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                before :each do
         
     | 
| 
      
 24 
     | 
    
         
            +
                  @options = { :name => "view name" }
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                def do_initialize(options = { })
         
     | 
| 
      
 28 
     | 
    
         
            +
                  @view = CouchModel::View.new @design, @options.merge(options)
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                it "should set the name" do
         
     | 
| 
      
 32 
     | 
    
         
            +
                  do_initialize
         
     | 
| 
      
 33 
     | 
    
         
            +
                  @view.name.should == "view name"
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                context "using function generator" do
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                  before :each do
         
     | 
| 
      
 39 
     | 
    
         
            +
                    @options.merge! :keys => [ "test key" ]
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                  it "should generate the map function" do
         
     | 
| 
      
 43 
     | 
    
         
            +
                    do_initialize
         
     | 
| 
      
 44 
     | 
    
         
            +
                    @view.map.should ==
         
     | 
| 
      
 45 
     | 
    
         
            +
            """function(document) {
         
     | 
| 
      
 46 
     | 
    
         
            +
              if (document['#{CouchModel::Configuration::CLASS_KEY}'] == 'TestModel' && document['test key']) {
         
     | 
| 
      
 47 
     | 
    
         
            +
                emit(document['test key'], null);
         
     | 
| 
      
 48 
     | 
    
         
            +
              }
         
     | 
| 
      
 49 
     | 
    
         
            +
            }
         
     | 
| 
      
 50 
     | 
    
         
            +
            """
         
     | 
| 
      
 51 
     | 
    
         
            +
                  end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                  it "should set the reduce function to nil" do
         
     | 
| 
      
 54 
     | 
    
         
            +
                    do_initialize
         
     | 
| 
      
 55 
     | 
    
         
            +
                    @view.reduce.should be_nil
         
     | 
| 
      
 56 
     | 
    
         
            +
                  end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                context "using explizit functions" do
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                  before :each do
         
     | 
| 
      
 63 
     | 
    
         
            +
                    @options.merge! :map    => "map function",
         
     | 
| 
      
 64 
     | 
    
         
            +
                                    :reduce => "reduce function"
         
     | 
| 
      
 65 
     | 
    
         
            +
                  end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                  it "should set the map function" do
         
     | 
| 
      
 68 
     | 
    
         
            +
                    do_initialize
         
     | 
| 
      
 69 
     | 
    
         
            +
                    @view.map.should == "map function"
         
     | 
| 
      
 70 
     | 
    
         
            +
                  end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                  it "should set the reduce function" do
         
     | 
| 
      
 73 
     | 
    
         
            +
                    do_initialize
         
     | 
| 
      
 74 
     | 
    
         
            +
                    @view.reduce.should == "reduce function"
         
     | 
| 
      
 75 
     | 
    
         
            +
                  end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                end
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
              end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
              describe "collection" do
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                it "should return a collection" do
         
     | 
| 
      
 84 
     | 
    
         
            +
                  @view.collection.should be_instance_of(CouchModel::Collection)
         
     | 
| 
      
 85 
     | 
    
         
            +
                end
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
                it "should initialize the collection with the view url" do
         
     | 
| 
      
 88 
     | 
    
         
            +
                  @view.collection.url.should == @view.url
         
     | 
| 
      
 89 
     | 
    
         
            +
                end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
                it "should pass the options to the collection" do
         
     | 
| 
      
 92 
     | 
    
         
            +
                  @view.collection(:test => "test").options.should == { :test => "test" }
         
     | 
| 
      
 93 
     | 
    
         
            +
                end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
              end
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
              describe "to_hash" do
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                it "should return a hash with all view data" do
         
     | 
| 
      
 100 
     | 
    
         
            +
                  @view.to_hash.should == {
         
     | 
| 
      
 101 
     | 
    
         
            +
                    "view name" => {
         
     | 
| 
      
 102 
     | 
    
         
            +
                      "map"     => "map function",
         
     | 
| 
      
 103 
     | 
    
         
            +
                      "reduce"  => "reduce function"
         
     | 
| 
      
 104 
     | 
    
         
            +
                    }
         
     | 
| 
      
 105 
     | 
    
         
            +
                  }
         
     | 
| 
      
 106 
     | 
    
         
            +
                end
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
              end
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
              describe "generate_functions" do
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                before :each do
         
     | 
| 
      
 113 
     | 
    
         
            +
                  @options = { }
         
     | 
| 
      
 114 
     | 
    
         
            +
                end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                def do_generate
         
     | 
| 
      
 117 
     | 
    
         
            +
                  @view.generate_functions @options
         
     | 
| 
      
 118 
     | 
    
         
            +
                end
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                describe "without any keys given" do
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
                  it "should set the map function" do
         
     | 
| 
      
 123 
     | 
    
         
            +
                    do_generate
         
     | 
| 
      
 124 
     | 
    
         
            +
                    @view.map.should ==
         
     | 
| 
      
 125 
     | 
    
         
            +
            """function(document) {
         
     | 
| 
      
 126 
     | 
    
         
            +
              if (document['#{CouchModel::Configuration::CLASS_KEY}'] == 'TestModel') {
         
     | 
| 
      
 127 
     | 
    
         
            +
                emit(document['_id'], null);
         
     | 
| 
      
 128 
     | 
    
         
            +
              }
         
     | 
| 
      
 129 
     | 
    
         
            +
            }
         
     | 
| 
      
 130 
     | 
    
         
            +
            """
         
     | 
| 
      
 131 
     | 
    
         
            +
                  end
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
                  it "should set the reduce function to nil" do
         
     | 
| 
      
 134 
     | 
    
         
            +
                    do_generate
         
     | 
| 
      
 135 
     | 
    
         
            +
                    @view.reduce.should be_nil
         
     | 
| 
      
 136 
     | 
    
         
            +
                  end
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                end
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
      
 140 
     | 
    
         
            +
                describe "with keys given" do
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
      
 142 
     | 
    
         
            +
                  before :each do
         
     | 
| 
      
 143 
     | 
    
         
            +
                    @options.merge! :keys => [ :foo, :bar ]
         
     | 
| 
      
 144 
     | 
    
         
            +
                  end
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
      
 146 
     | 
    
         
            +
                  it "should set the map function" do
         
     | 
| 
      
 147 
     | 
    
         
            +
                    do_generate
         
     | 
| 
      
 148 
     | 
    
         
            +
                    @view.map.should ==
         
     | 
| 
      
 149 
     | 
    
         
            +
            """function(document) {
         
     | 
| 
      
 150 
     | 
    
         
            +
              if (document['#{CouchModel::Configuration::CLASS_KEY}'] == 'TestModel' && document['foo'] && document['bar']) {
         
     | 
| 
      
 151 
     | 
    
         
            +
                emit([ document['foo'], document['bar'] ], null);
         
     | 
| 
      
 152 
     | 
    
         
            +
              }
         
     | 
| 
      
 153 
     | 
    
         
            +
            }
         
     | 
| 
      
 154 
     | 
    
         
            +
            """
         
     | 
| 
      
 155 
     | 
    
         
            +
                  end
         
     | 
| 
      
 156 
     | 
    
         
            +
              
         
     | 
| 
      
 157 
     | 
    
         
            +
                  it "should set the reduce function to nil" do
         
     | 
| 
      
 158 
     | 
    
         
            +
                    do_generate
         
     | 
| 
      
 159 
     | 
    
         
            +
                    @view.reduce.should be_nil
         
     | 
| 
      
 160 
     | 
    
         
            +
                  end
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
      
 162 
     | 
    
         
            +
                end
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
              end
         
     | 
| 
      
 165 
     | 
    
         
            +
             
     | 
| 
      
 166 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/spec_helper.rb
    ADDED
    
    | 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 2 
     | 
    
         
            +
            gem 'rspec'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'spec'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), "..", "lib", "couch_model", "configuration"))
         
     | 
| 
      
 6 
     | 
    
         
            +
            require File.join(File.dirname(__FILE__), "fake_transport_helper")
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            CouchModel::Configuration.fake_transport = true
         
     | 
| 
      
 9 
     | 
    
         
            +
            Spec::Runner.configure do |configuration|
         
     | 
| 
      
 10 
     | 
    
         
            +
              configuration.before :each do
         
     | 
| 
      
 11 
     | 
    
         
            +
                CouchModel::Transport.fake! if CouchModel::Configuration.fake_transport
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            def use_real_transport!
         
     | 
| 
      
 16 
     | 
    
         
            +
              class_eval do
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                before :all do
         
     | 
| 
      
 19 
     | 
    
         
            +
                  CouchModel::Configuration.fake_transport = false
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                after :all do
         
     | 
| 
      
 23 
     | 
    
         
            +
                  CouchModel::Configuration.fake_transport = true
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,128 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: couchmodel
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              prerelease: true
         
     | 
| 
      
 5 
     | 
    
         
            +
              segments: 
         
     | 
| 
      
 6 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 7 
     | 
    
         
            +
              - 1
         
     | 
| 
      
 8 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 9 
     | 
    
         
            +
              - beta2
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 0.1.0.beta2
         
     | 
| 
      
 11 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 12 
     | 
    
         
            +
            authors: 
         
     | 
| 
      
 13 
     | 
    
         
            +
            - "Philipp Br\xC3\xBCll"
         
     | 
| 
      
 14 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 15 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 16 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            date: 2010-03-02 00:00:00 +01:00
         
     | 
| 
      
 19 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 20 
     | 
    
         
            +
            dependencies: []
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            description: CouchModel provides an interface to easly handle CouchDB documents. It also comes with a ActiveModel implementation to integrate into an Rails 3 application.
         
     | 
| 
      
 23 
     | 
    
         
            +
            email: b.phifty@gmail.com
         
     | 
| 
      
 24 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            extra_rdoc_files: 
         
     | 
| 
      
 29 
     | 
    
         
            +
            - README.rdoc
         
     | 
| 
      
 30 
     | 
    
         
            +
            files: 
         
     | 
| 
      
 31 
     | 
    
         
            +
            - README.rdoc
         
     | 
| 
      
 32 
     | 
    
         
            +
            - LICENSE
         
     | 
| 
      
 33 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 34 
     | 
    
         
            +
            - lib/couch_model/configuration.rb
         
     | 
| 
      
 35 
     | 
    
         
            +
            - lib/couch_model/base/setup.rb
         
     | 
| 
      
 36 
     | 
    
         
            +
            - lib/couch_model/base/accessor.rb
         
     | 
| 
      
 37 
     | 
    
         
            +
            - lib/couch_model/base/finder.rb
         
     | 
| 
      
 38 
     | 
    
         
            +
            - lib/couch_model/base/association.rb
         
     | 
| 
      
 39 
     | 
    
         
            +
            - lib/couch_model/active_model.rb
         
     | 
| 
      
 40 
     | 
    
         
            +
            - lib/couch_model/view.rb
         
     | 
| 
      
 41 
     | 
    
         
            +
            - lib/couch_model/collection.rb
         
     | 
| 
      
 42 
     | 
    
         
            +
            - lib/couch_model/server.rb
         
     | 
| 
      
 43 
     | 
    
         
            +
            - lib/couch_model/design.rb
         
     | 
| 
      
 44 
     | 
    
         
            +
            - lib/couch_model/transport.rb
         
     | 
| 
      
 45 
     | 
    
         
            +
            - lib/couch_model/base.rb
         
     | 
| 
      
 46 
     | 
    
         
            +
            - lib/couch_model/database.rb
         
     | 
| 
      
 47 
     | 
    
         
            +
            - lib/couch_model.rb
         
     | 
| 
      
 48 
     | 
    
         
            +
            - lib/core_extension/string.rb
         
     | 
| 
      
 49 
     | 
    
         
            +
            - lib/core_extension/array.rb
         
     | 
| 
      
 50 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     | 
| 
      
 51 
     | 
    
         
            +
            - spec/lib/couch_model/view_spec.rb
         
     | 
| 
      
 52 
     | 
    
         
            +
            - spec/lib/couch_model/server_spec.rb
         
     | 
| 
      
 53 
     | 
    
         
            +
            - spec/lib/couch_model/core/association_spec.rb
         
     | 
| 
      
 54 
     | 
    
         
            +
            - spec/lib/couch_model/core/finder_spec.rb
         
     | 
| 
      
 55 
     | 
    
         
            +
            - spec/lib/couch_model/core/accessor_spec.rb
         
     | 
| 
      
 56 
     | 
    
         
            +
            - spec/lib/couch_model/core/setup_spec.rb
         
     | 
| 
      
 57 
     | 
    
         
            +
            - spec/lib/couch_model/design_spec.rb
         
     | 
| 
      
 58 
     | 
    
         
            +
            - spec/lib/couch_model/transport_spec.rb
         
     | 
| 
      
 59 
     | 
    
         
            +
            - spec/lib/couch_model/active_model_spec.rb
         
     | 
| 
      
 60 
     | 
    
         
            +
            - spec/lib/couch_model/collection_spec.rb
         
     | 
| 
      
 61 
     | 
    
         
            +
            - spec/lib/couch_model/design/association_test_model_one.design
         
     | 
| 
      
 62 
     | 
    
         
            +
            - spec/lib/couch_model/design/base_test_model.design
         
     | 
| 
      
 63 
     | 
    
         
            +
            - spec/lib/couch_model/design/setup_test_model.design
         
     | 
| 
      
 64 
     | 
    
         
            +
            - spec/lib/couch_model/configuration_spec.rb
         
     | 
| 
      
 65 
     | 
    
         
            +
            - spec/lib/couch_model/database_spec.rb
         
     | 
| 
      
 66 
     | 
    
         
            +
            - spec/lib/couch_model/base_spec.rb
         
     | 
| 
      
 67 
     | 
    
         
            +
            - spec/lib/couch_model_spec.rb
         
     | 
| 
      
 68 
     | 
    
         
            +
            - spec/lib/core_extension/string_spec.rb
         
     | 
| 
      
 69 
     | 
    
         
            +
            - spec/lib/core_extension/array_spec.rb
         
     | 
| 
      
 70 
     | 
    
         
            +
            - spec/fake_transport_helper.rb
         
     | 
| 
      
 71 
     | 
    
         
            +
            - spec/integration/design/membership.design
         
     | 
| 
      
 72 
     | 
    
         
            +
            - spec/integration/design/user.design
         
     | 
| 
      
 73 
     | 
    
         
            +
            - spec/integration/basic_spec.rb
         
     | 
| 
      
 74 
     | 
    
         
            +
            - spec/fake_transport.yml
         
     | 
| 
      
 75 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
      
 76 
     | 
    
         
            +
            homepage: http://github.com/phifty/couchmodel
         
     | 
| 
      
 77 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 80 
     | 
    
         
            +
            rdoc_options: 
         
     | 
| 
      
 81 
     | 
    
         
            +
            - --line-numbers
         
     | 
| 
      
 82 
     | 
    
         
            +
            - --main
         
     | 
| 
      
 83 
     | 
    
         
            +
            - README.rdoc
         
     | 
| 
      
 84 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 85 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 86 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 87 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 88 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 89 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 90 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 91 
     | 
    
         
            +
                  - 1
         
     | 
| 
      
 92 
     | 
    
         
            +
                  - 9
         
     | 
| 
      
 93 
     | 
    
         
            +
                  - 1
         
     | 
| 
      
 94 
     | 
    
         
            +
                  version: 1.9.1
         
     | 
| 
      
 95 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 96 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 97 
     | 
    
         
            +
              - - ">"
         
     | 
| 
      
 98 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 99 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 100 
     | 
    
         
            +
                  - 1
         
     | 
| 
      
 101 
     | 
    
         
            +
                  - 3
         
     | 
| 
      
 102 
     | 
    
         
            +
                  - 1
         
     | 
| 
      
 103 
     | 
    
         
            +
                  version: 1.3.1
         
     | 
| 
      
 104 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 107 
     | 
    
         
            +
            rubygems_version: 1.3.6
         
     | 
| 
      
 108 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 109 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
      
 110 
     | 
    
         
            +
            summary: CouchModel provides an interface to easly handle CouchDB documents.
         
     | 
| 
      
 111 
     | 
    
         
            +
            test_files: 
         
     | 
| 
      
 112 
     | 
    
         
            +
            - spec/lib/couch_model/view_spec.rb
         
     | 
| 
      
 113 
     | 
    
         
            +
            - spec/lib/couch_model/server_spec.rb
         
     | 
| 
      
 114 
     | 
    
         
            +
            - spec/lib/couch_model/core/association_spec.rb
         
     | 
| 
      
 115 
     | 
    
         
            +
            - spec/lib/couch_model/core/finder_spec.rb
         
     | 
| 
      
 116 
     | 
    
         
            +
            - spec/lib/couch_model/core/accessor_spec.rb
         
     | 
| 
      
 117 
     | 
    
         
            +
            - spec/lib/couch_model/core/setup_spec.rb
         
     | 
| 
      
 118 
     | 
    
         
            +
            - spec/lib/couch_model/design_spec.rb
         
     | 
| 
      
 119 
     | 
    
         
            +
            - spec/lib/couch_model/transport_spec.rb
         
     | 
| 
      
 120 
     | 
    
         
            +
            - spec/lib/couch_model/active_model_spec.rb
         
     | 
| 
      
 121 
     | 
    
         
            +
            - spec/lib/couch_model/collection_spec.rb
         
     | 
| 
      
 122 
     | 
    
         
            +
            - spec/lib/couch_model/configuration_spec.rb
         
     | 
| 
      
 123 
     | 
    
         
            +
            - spec/lib/couch_model/database_spec.rb
         
     | 
| 
      
 124 
     | 
    
         
            +
            - spec/lib/couch_model/base_spec.rb
         
     | 
| 
      
 125 
     | 
    
         
            +
            - spec/lib/couch_model_spec.rb
         
     | 
| 
      
 126 
     | 
    
         
            +
            - spec/lib/core_extension/string_spec.rb
         
     | 
| 
      
 127 
     | 
    
         
            +
            - spec/lib/core_extension/array_spec.rb
         
     | 
| 
      
 128 
     | 
    
         
            +
            - spec/integration/basic_spec.rb
         
     |