dynamoid 0.4.1 → 0.5.0
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/Dynamoid.gemspec +18 -8
 - data/Gemfile +3 -1
 - data/Gemfile.lock +48 -24
 - data/README.markdown +6 -3
 - data/VERSION +1 -1
 - data/lib/dynamoid.rb +4 -0
 - data/lib/dynamoid/adapter.rb +3 -3
 - data/lib/dynamoid/adapter/aws_sdk.rb +19 -13
 - data/lib/dynamoid/components.rb +5 -4
 - data/lib/dynamoid/config.rb +7 -4
 - data/lib/dynamoid/criteria/chain.rb +22 -13
 - data/lib/dynamoid/dirty.rb +41 -0
 - data/lib/dynamoid/document.rb +55 -26
 - data/lib/dynamoid/errors.rb +5 -0
 - data/lib/dynamoid/fields.rb +0 -5
 - data/lib/dynamoid/finders.rb +60 -12
 - data/lib/dynamoid/identity_map.rb +96 -0
 - data/lib/dynamoid/indexes/index.rb +1 -1
 - data/lib/dynamoid/middleware/identity_map.rb +16 -0
 - data/lib/dynamoid/persistence.rb +45 -6
 - data/spec/app/models/message.rb +9 -0
 - data/spec/app/models/tweet.rb +3 -0
 - data/spec/dynamoid/adapter/aws_sdk_spec.rb +34 -34
 - data/spec/dynamoid/criteria/chain_spec.rb +17 -9
 - data/spec/dynamoid/criteria_spec.rb +8 -2
 - data/spec/dynamoid/dirty_spec.rb +49 -0
 - data/spec/dynamoid/document_spec.rb +5 -1
 - data/spec/dynamoid/fields_spec.rb +47 -17
 - data/spec/dynamoid/finders_spec.rb +27 -11
 - data/spec/dynamoid/identity_map_spec.rb +45 -0
 - data/spec/dynamoid/indexes/index_spec.rb +0 -2
 - data/spec/dynamoid/persistence_spec.rb +65 -29
 - data/spec/dynamoid_spec.rb +4 -0
 - data/spec/spec_helper.rb +21 -25
 - metadata +54 -18
 - data/lib/dynamoid/adapter/local.rb +0 -196
 - data/spec/dynamoid/adapter/local_spec.rb +0 -242
 
| 
         @@ -1,242 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'dynamoid/adapter/local'
         
     | 
| 
       2 
     | 
    
         
            -
            require File.expand_path(File.dirname(__FILE__) + '../../../spec_helper')
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            describe Dynamoid::Adapter::Local do
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              unless ENV['ACCESS_KEY'] && ENV['SECRET_KEY']
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                # BatchGetItem
         
     | 
| 
       9 
     | 
    
         
            -
                it 'performs BatchGetItem with singular keys' do
         
     | 
| 
       10 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('table1', :id)
         
     | 
| 
       11 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('table1', {:id => '1', :name => 'Josh'})
         
     | 
| 
       12 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('table2', :id)
         
     | 
| 
       13 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('table2', {:id => '1', :name => 'Justin'})
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                  results = Dynamoid::Adapter.batch_get_item('table1' => '1', 'table2' => '1')
         
     | 
| 
       16 
     | 
    
         
            -
                  results.size.should == 2
         
     | 
| 
       17 
     | 
    
         
            -
                  results['table1'].should include({:name => 'Josh', :id => '1'})
         
     | 
| 
       18 
     | 
    
         
            -
                  results['table2'].should include({:name => 'Justin', :id => '1'})
         
     | 
| 
       19 
     | 
    
         
            -
                end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                it 'performs BatchGetItem with multiple keys' do
         
     | 
| 
       22 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('table1', :id)
         
     | 
| 
       23 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('table1', {:id => '1', :name => 'Josh'})
         
     | 
| 
       24 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('table1', {:id => '2', :name => 'Justin'})
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                  results = Dynamoid::Adapter.batch_get_item('table1' => ['1', '2'])
         
     | 
| 
       27 
     | 
    
         
            -
                  results.size.should == 1
         
     | 
| 
       28 
     | 
    
         
            -
                  results['table1'].should include({:name => 'Josh', :id => '1'})
         
     | 
| 
       29 
     | 
    
         
            -
                  results['table1'].should include({:name => 'Justin', :id => '2'})
         
     | 
| 
       30 
     | 
    
         
            -
                end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                it 'performs BatchGetItem with range keys' do
         
     | 
| 
       33 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('table1', :id, :range_key => { :range => :string })
         
     | 
| 
       34 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('table1', {:id => '1', :range => 1.0})
         
     | 
| 
       35 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('table1', {:id => '2', :range => 2.0})
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                  results = Dynamoid::Adapter.batch_get_item('table1' => [['1', 1.0], ['2', 2.0]])
         
     | 
| 
       38 
     | 
    
         
            -
                  results.size.should == 1
         
     | 
| 
       39 
     | 
    
         
            -
                  results['table1'].should include({:id => '1', :range => 1.0})
         
     | 
| 
       40 
     | 
    
         
            -
                  results['table1'].should include({:id => '2', :range => 2.0})
         
     | 
| 
       41 
     | 
    
         
            -
                end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                it 'performs BatchGetItem with range keys on one primary key' do
         
     | 
| 
       44 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('table1', :id, :range_key => { :range => :string })
         
     | 
| 
       45 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('table1', {:id => '1', :range => 1.0})
         
     | 
| 
       46 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('table1', {:id => '1', :range => 2.0})
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                  results = Dynamoid::Adapter.batch_get_item('table1' => [['1', 1.0], ['1', 2.0]])
         
     | 
| 
       49 
     | 
    
         
            -
                  results.size.should == 1
         
     | 
| 
       50 
     | 
    
         
            -
                  results['table1'].should include({:id => '1', :range => 1.0})
         
     | 
| 
       51 
     | 
    
         
            -
                  results['table1'].should include({:id => '1', :range => 2.0})
         
     | 
| 
       52 
     | 
    
         
            -
                end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                # CreateTable
         
     | 
| 
       55 
     | 
    
         
            -
                it 'performs CreateTable' do
         
     | 
| 
       56 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Test Table', :id)
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                  Dynamoid::Adapter.list_tables.should include 'Test Table'
         
     | 
| 
       59 
     | 
    
         
            -
                end
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
                # DeleteItem
         
     | 
| 
       62 
     | 
    
         
            -
                it 'performs DeleteItem' do
         
     | 
| 
       63 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('table1', :id)
         
     | 
| 
       64 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('table1', {:id => '1', :name => 'Josh'})
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
                  Dynamoid::Adapter.delete_item('table1', '1')
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                  Dynamoid::Adapter.data['table1'][:data].should be_empty
         
     | 
| 
       69 
     | 
    
         
            -
                end
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
                it 'performs DeleteItem for an item that does not exist' do
         
     | 
| 
       72 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('table1', :id)
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                  Dynamoid::Adapter.delete_item('table1', '1')
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
                  Dynamoid::Adapter.data['table1'][:data].should be_empty
         
     | 
| 
       77 
     | 
    
         
            -
                end
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
                # DeleteTable
         
     | 
| 
       80 
     | 
    
         
            -
                it 'performs DeleteTable' do
         
     | 
| 
       81 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('table1', :id)
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
                  Dynamoid::Adapter.delete_table('table1')
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
                  Dynamoid::Adapter.data['table1'].should be_nil
         
     | 
| 
       86 
     | 
    
         
            -
                end
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
                # DescribeTable
         
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
                # GetItem
         
     | 
| 
       91 
     | 
    
         
            -
                it "performs GetItem for an item that does not exist" do
         
     | 
| 
       92 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Test Table', :id)
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
                  Dynamoid::Adapter.get_item('Test Table', '1').should be_nil
         
     | 
| 
       95 
     | 
    
         
            -
                end
         
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
                it "performs GetItem for an item that does exist" do
         
     | 
| 
       98 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Test Table', :id)
         
     | 
| 
       99 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :name => 'Josh'})
         
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
                  Dynamoid::Adapter.get_item('Test Table', '1').should == {:id => '1', :name => 'Josh'}
         
     | 
| 
       102 
     | 
    
         
            -
                end
         
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
                it "performs GetItem for an item with a range key" do
         
     | 
| 
       105 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Test Table', :id, :range_key =>  { :range => :number })
         
     | 
| 
       106 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :range => 1.0})
         
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
                  Dynamoid::Adapter.get_item('Test Table', '1').should be_nil
         
     | 
| 
       109 
     | 
    
         
            -
                  Dynamoid::Adapter.get_item('Test Table', '1', :range_key => 1.0).should == {:id => '1', :range => 1.0}
         
     | 
| 
       110 
     | 
    
         
            -
                end
         
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
                # ListTables
         
     | 
| 
       113 
     | 
    
         
            -
                it 'performs ListTables' do
         
     | 
| 
       114 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Table1', :id)
         
     | 
| 
       115 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Table2', :id)
         
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
     | 
    
         
            -
                  Dynamoid::Adapter.list_tables.should include 'Table1'
         
     | 
| 
       118 
     | 
    
         
            -
                  Dynamoid::Adapter.list_tables.should include 'Table2'
         
     | 
| 
       119 
     | 
    
         
            -
                end
         
     | 
| 
       120 
     | 
    
         
            -
             
     | 
| 
       121 
     | 
    
         
            -
                # PutItem
         
     | 
| 
       122 
     | 
    
         
            -
                it 'performs PutItem for an item that does not exist' do
         
     | 
| 
       123 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Test Table', :id)
         
     | 
| 
       124 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :name => 'Josh'})
         
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
                  Dynamoid::Adapter.data['Test Table'].should == {:hash_key=>:id, :range_key=>nil, :data=>{"1."=>{:id=>"1", :name=>"Josh"}}}
         
     | 
| 
       127 
     | 
    
         
            -
                end
         
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
     | 
    
         
            -
                it 'puts an item twice and overwrites an existing item' do
         
     | 
| 
       130 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Test Table', :id)
         
     | 
| 
       131 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :name => 'Josh'})
         
     | 
| 
       132 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :name => 'Justin'})
         
     | 
| 
       133 
     | 
    
         
            -
             
     | 
| 
       134 
     | 
    
         
            -
                  Dynamoid::Adapter.data['Test Table'].should == {:hash_key=>:id, :range_key=>nil, :data=>{"1."=>{:id=>"1", :name=>"Justin"}}}
         
     | 
| 
       135 
     | 
    
         
            -
                end
         
     | 
| 
       136 
     | 
    
         
            -
             
     | 
| 
       137 
     | 
    
         
            -
                it 'puts an item twice and does not overwrite an existing item if the range key is not the same' do
         
     | 
| 
       138 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Test Table', :id, :range_key =>  { :range => :number })
         
     | 
| 
       139 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :name => 'Justin', :range => 1.0})
         
     | 
| 
       140 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :name => 'Justin', :range => 2.0})
         
     | 
| 
       141 
     | 
    
         
            -
             
     | 
| 
       142 
     | 
    
         
            -
                  Dynamoid::Adapter.data['Test Table'].should == {:hash_key=>:id, :range_key=>:range, :data=>{"1.1.0"=>{:id=>"1", :name=>"Justin", :range => 1.0}, "1.2.0" => {:id=>"1", :name=>"Justin", :range => 2.0}}}
         
     | 
| 
       143 
     | 
    
         
            -
                end
         
     | 
| 
       144 
     | 
    
         
            -
             
     | 
| 
       145 
     | 
    
         
            -
                it 'puts an item twice and does overwrite an existing item if the range key is the same' do
         
     | 
| 
       146 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Test Table', :id, :range_key => { :range => :number })
         
     | 
| 
       147 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :name => 'Josh', :range => 1.0})
         
     | 
| 
       148 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :name => 'Justin', :range => 1.0})
         
     | 
| 
       149 
     | 
    
         
            -
             
     | 
| 
       150 
     | 
    
         
            -
                  Dynamoid::Adapter.data['Test Table'].should == {:hash_key=>:id, :range_key=>:range, :data=>{"1.1.0"=>{:id=>"1", :name=>"Justin", :range => 1.0}}}
         
     | 
| 
       151 
     | 
    
         
            -
                end
         
     | 
| 
       152 
     | 
    
         
            -
             
     | 
| 
       153 
     | 
    
         
            -
             
     | 
| 
       154 
     | 
    
         
            -
                # Query
         
     | 
| 
       155 
     | 
    
         
            -
                it 'performs query on a table and returns items' do
         
     | 
| 
       156 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Test Table', :id)
         
     | 
| 
       157 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :name => 'Josh'})
         
     | 
| 
       158 
     | 
    
         
            -
             
     | 
| 
       159 
     | 
    
         
            -
                  Dynamoid::Adapter.query('Test Table', :hash_value => '1').should == [{ :id=> '1', :name=>"Josh" }]
         
     | 
| 
       160 
     | 
    
         
            -
                end
         
     | 
| 
       161 
     | 
    
         
            -
             
     | 
| 
       162 
     | 
    
         
            -
                it 'performs query on a table and returns items if there are multiple items' do
         
     | 
| 
       163 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Test Table', :id)
         
     | 
| 
       164 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :name => 'Josh'})
         
     | 
| 
       165 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '2', :name => 'Justin'})
         
     | 
| 
       166 
     | 
    
         
            -
             
     | 
| 
       167 
     | 
    
         
            -
                  Dynamoid::Adapter.query('Test Table', :hash_value => '1').should == [{ :id=> '1', :name=>"Josh" }]
         
     | 
| 
       168 
     | 
    
         
            -
                end
         
     | 
| 
       169 
     | 
    
         
            -
             
     | 
| 
       170 
     | 
    
         
            -
                context 'range queries' do
         
     | 
| 
       171 
     | 
    
         
            -
                  before do
         
     | 
| 
       172 
     | 
    
         
            -
                    Dynamoid::Adapter.create_table('Test Table', :id, :range_key => { :range => :number })
         
     | 
| 
       173 
     | 
    
         
            -
                    Dynamoid::Adapter.put_item('Test Table', {:id => '1', :range => 1.0})
         
     | 
| 
       174 
     | 
    
         
            -
                    Dynamoid::Adapter.put_item('Test Table', {:id => '1', :range => 2.0})
         
     | 
| 
       175 
     | 
    
         
            -
                  end
         
     | 
| 
       176 
     | 
    
         
            -
             
     | 
| 
       177 
     | 
    
         
            -
                  it 'performs query on a table with a range and selects items in a range' do
         
     | 
| 
       178 
     | 
    
         
            -
                    Dynamoid::Adapter.query('Test Table', :hash_value => '1', :range_value => 0.0..3.0).should =~ [{:id => '1', :range => 1.0}, {:id => '1', :range => 2.0}]
         
     | 
| 
       179 
     | 
    
         
            -
                  end
         
     | 
| 
       180 
     | 
    
         
            -
             
     | 
| 
       181 
     | 
    
         
            -
                  it 'performs query on a table with a range and selects items greater than' do
         
     | 
| 
       182 
     | 
    
         
            -
                    Dynamoid::Adapter.query('Test Table', :hash_value => '1', :range_greater_than => 1.0).should =~ [{:id => '1', :range => 2.0}]
         
     | 
| 
       183 
     | 
    
         
            -
                  end
         
     | 
| 
       184 
     | 
    
         
            -
             
     | 
| 
       185 
     | 
    
         
            -
                  it 'performs query on a table with a range and selects items less than' do
         
     | 
| 
       186 
     | 
    
         
            -
                    Dynamoid::Adapter.query('Test Table', :hash_value => '1', :range_less_than => 2.0).should =~ [{:id => '1', :range => 1.0}]
         
     | 
| 
       187 
     | 
    
         
            -
                  end
         
     | 
| 
       188 
     | 
    
         
            -
             
     | 
| 
       189 
     | 
    
         
            -
                  it 'performs query on a table with a range and selects items gte' do
         
     | 
| 
       190 
     | 
    
         
            -
                    Dynamoid::Adapter.query('Test Table', :hash_value => '1', :range_gte => 1.0).should =~ [{:id => '1', :range => 1.0}, {:id => '1', :range => 2.0}]
         
     | 
| 
       191 
     | 
    
         
            -
                  end
         
     | 
| 
       192 
     | 
    
         
            -
             
     | 
| 
       193 
     | 
    
         
            -
                  it 'performs query on a table with a range and selects items lte' do
         
     | 
| 
       194 
     | 
    
         
            -
                    Dynamoid::Adapter.query('Test Table', :hash_value => '1', :range_lte => 2.0).should =~ [{:id => '1', :range => 1.0}, {:id => '1', :range => 2.0}]
         
     | 
| 
       195 
     | 
    
         
            -
                  end
         
     | 
| 
       196 
     | 
    
         
            -
             
     | 
| 
       197 
     | 
    
         
            -
                end
         
     | 
| 
       198 
     | 
    
         
            -
             
     | 
| 
       199 
     | 
    
         
            -
                # Scan
         
     | 
| 
       200 
     | 
    
         
            -
                it 'performs scan on a table and returns items' do
         
     | 
| 
       201 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Test Table', :id)
         
     | 
| 
       202 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :name => 'Josh'})
         
     | 
| 
       203 
     | 
    
         
            -
             
     | 
| 
       204 
     | 
    
         
            -
                  Dynamoid::Adapter.scan('Test Table', :name => 'Josh').should == [{ :id=> '1', :name=>"Josh" }]
         
     | 
| 
       205 
     | 
    
         
            -
                end
         
     | 
| 
       206 
     | 
    
         
            -
             
     | 
| 
       207 
     | 
    
         
            -
                it 'performs scan on a table and returns items if there are multiple items but only one match' do
         
     | 
| 
       208 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Test Table', :id)
         
     | 
| 
       209 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :name => 'Josh'})
         
     | 
| 
       210 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '2', :name => 'Justin'})
         
     | 
| 
       211 
     | 
    
         
            -
             
     | 
| 
       212 
     | 
    
         
            -
                  Dynamoid::Adapter.scan('Test Table', :name => 'Josh').should == [{ :id=> '1', :name=>"Josh" }]
         
     | 
| 
       213 
     | 
    
         
            -
                end
         
     | 
| 
       214 
     | 
    
         
            -
             
     | 
| 
       215 
     | 
    
         
            -
                it 'performs scan on a table and returns multiple items if there are multiple matches' do
         
     | 
| 
       216 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Test Table', :id)
         
     | 
| 
       217 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :name => 'Josh'})
         
     | 
| 
       218 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '2', :name => 'Josh'})
         
     | 
| 
       219 
     | 
    
         
            -
             
     | 
| 
       220 
     | 
    
         
            -
                  Dynamoid::Adapter.scan('Test Table', :name => 'Josh').should == [{ :id=> '1', :name=>"Josh" }, { :id=> '2', :name=>"Josh" }]
         
     | 
| 
       221 
     | 
    
         
            -
                end
         
     | 
| 
       222 
     | 
    
         
            -
             
     | 
| 
       223 
     | 
    
         
            -
                it 'performs scan on a table and returns all items if no criteria are specified' do
         
     | 
| 
       224 
     | 
    
         
            -
                  Dynamoid::Adapter.create_table('Test Table', :id)
         
     | 
| 
       225 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '1', :name => 'Josh'})
         
     | 
| 
       226 
     | 
    
         
            -
                  Dynamoid::Adapter.put_item('Test Table', {:id => '2', :name => 'Josh'})
         
     | 
| 
       227 
     | 
    
         
            -
             
     | 
| 
       228 
     | 
    
         
            -
                  Dynamoid::Adapter.scan('Test Table', {}).should == [{ :id=> '1', :name=>"Josh" }, { :id=> '2', :name=>"Josh" }]
         
     | 
| 
       229 
     | 
    
         
            -
                end
         
     | 
| 
       230 
     | 
    
         
            -
             
     | 
| 
       231 
     | 
    
         
            -
                # UpdateItem
         
     | 
| 
       232 
     | 
    
         
            -
             
     | 
| 
       233 
     | 
    
         
            -
                # UpdateTable
         
     | 
| 
       234 
     | 
    
         
            -
             
     | 
| 
       235 
     | 
    
         
            -
                protected
         
     | 
| 
       236 
     | 
    
         
            -
             
     | 
| 
       237 
     | 
    
         
            -
                def setup_value(table, key, value)
         
     | 
| 
       238 
     | 
    
         
            -
                  Dynamoid::Adapter.data[table][key] = value
         
     | 
| 
       239 
     | 
    
         
            -
                end
         
     | 
| 
       240 
     | 
    
         
            -
             
     | 
| 
       241 
     | 
    
         
            -
              end
         
     | 
| 
       242 
     | 
    
         
            -
            end
         
     |