Class: Dynamini::TestClient

Inherits:
Object
  • Object
show all
Defined in:
lib/dynamini/test_client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash_key) ⇒ TestClient

Returns a new instance of TestClient.



8
9
10
11
# File 'lib/dynamini/test_client.rb', line 8

def initialize(hash_key)
  @data = {}
  @hash_key = hash_key
end

Instance Attribute Details

#hash_keyObject (readonly)

Returns the value of attribute hash_key.



6
7
8
# File 'lib/dynamini/test_client.rb', line 6

def hash_key
  @hash_key
end

Instance Method Details

#batch_get_item(args = {}) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/dynamini/test_client.rb', line 32

def batch_get_item(args = {})
  responses = {}

  args[:request_items].each do |k, v|
    responses[k] = []
    v[:keys].each do |key_hash|
      item = @data[k][key_hash.values.first]
      responses[k] << item
    end
  end

  OpenStruct.new(responses: responses)
end

#batch_write_item(request_options) ⇒ Object



46
47
48
49
50
51
52
53
54
55
# File 'lib/dynamini/test_client.rb', line 46

def batch_write_item(request_options)
  request_options[:request_items].each do |k, v|
    @data[k] ||= {}
    v.each do |request_hash|
      item = request_hash[:put_request][:item]
      key = item[hash_key]
      @data[k][key] = item
    end
  end
end

#delete_item(args = {}) ⇒ Object



57
58
59
# File 'lib/dynamini/test_client.rb', line 57

def delete_item(args = {})
  @data[args[:table_name]].delete(args[:key][hash_key])
end

#get_item(args = {}) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/dynamini/test_client.rb', line 24

def get_item(args = {})
  table = args[:table_name]
  @data[table] ||= {}
  attributes_hash = @data[table ][args[:key][hash_key]]
  item = attributes_hash.nil? ? nil : attributes_hash
  OpenStruct.new(item: item)
end

#resetObject



61
62
63
# File 'lib/dynamini/test_client.rb', line 61

def reset
  @data = {}
end

#update_item(args = {}) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'lib/dynamini/test_client.rb', line 13

def update_item(args = {})
  table = args[:table_name]
  updates = flatten_attribute_updates(args[:attribute_updates]).merge({hash_key => args[:key][hash_key]})
  @data[table] ||= {}
  if @data[table][args[:key][hash_key]].present?
    @data[table][args[:key][hash_key]].merge!(updates)
  else
    @data[table][args[:key][hash_key]] = updates
  end
end