"""
Test fixtures
"""

LIST_TABLE_DATA = {
    "LastEvaluatedTableName": "Thread",
    "TableNames": ["Forum", "Reply", "Thread"]
}


SIMPLE_MODEL_TABLE_DATA = {
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "user_name",
                "AttributeType": "S"
            },
            {
                "AttributeName": "email",
                "AttributeType": "S"
            },
        ],
        "CreationDateTime": 1.363729002358E9,
        "ItemCount": 0,
        "KeySchema": [
            {
                "AttributeName": "user_name",
                "KeyType": "HASH"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 5,
            "WriteCapacityUnits": 5
        },
        "TableName": "SimpleModel",
        "TableSizeBytes": 0,
        "TableStatus": "ACTIVE"
    }
}


MODEL_TABLE_DATA = {
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "user_name",
                "AttributeType": "S"
            },
            {
                "AttributeName": "email",
                "AttributeType": "S"
            },
            {
                "AttributeName": "user_id",
                "AttributeType": "S"
            },
            {
                "AttributeName": "picture",
                "AttributeType": "B"
            },
            {
                "AttributeName": "zip_code",
                "AttributeType": "N"
            }
        ],
        "CreationDateTime": 1.363729002358E9,
        "ItemCount": 42,
        "KeySchema": [
            {
                "AttributeName": "user_name",
                "KeyType": "HASH"
            },
            {
                "AttributeName": "user_id",
                "KeyType": "RANGE"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 5,
            "WriteCapacityUnits": 5
        },
        "TableName": "Thread",
        "TableSizeBytes": 0,
        "TableStatus": "ACTIVE"
    }
}


INDEX_TABLE_DATA = {
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "user_name",
                "AttributeType": "S"
            },
            {
                "AttributeName": "email",
                "AttributeType": "S"
            },
            {
                "AttributeName": "numbers",
                "AttributeType": "NS"
            },
        ],
        "CreationDateTime": 1.363729002358E9,
        "ItemCount": 0,
        "KeySchema": [
            {
                "AttributeName": "user_name",
                "KeyType": "HASH"
            },
        ],
        "LocalSecondaryIndexes": [
            {
                "IndexName": "custom_idx_name",
                "IndexSizeBytes": 0,
                "ItemCount": 0,
                "KeySchema": [
                    {
                        "AttributeName": "email",
                        "KeyType": "HASH"
                    },
                    {
                        "AttributeName": "numbers",
                        "KeyType": "RANGE"
                    }
                ],
                "Projection": {
                    "ProjectionType": "KEYS_ONLY"
                }
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 5,
            "WriteCapacityUnits": 5
        },
        "TableName": "IndexedModel",
        "TableSizeBytes": 0,
        "TableStatus": "ACTIVE"
    }
}


CUSTOM_ATTR_NAME_ITEM_DATA = {
    'Item': {
        'user_name': {
            'S': 'foo'
        },
        'user_id': {
            'S': 'bar'
        },
        'foo_attr': {
            'S': '2014-01-21T22:02:36.265046+0000'
        }
    }
}

CUSTOM_ATTR_NAME_INDEX_TABLE_DATA = {
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "user_name",
                "AttributeType": "S"
            },
            {
                "AttributeName": "email",
                "AttributeType": "S"
            },
            {
                "AttributeName": "user_id",
                "AttributeType": "S"
            },
        ],
        "CreationDateTime": 1.363729002358E9,
        "ItemCount": 0,
        "KeySchema": [
            {
                "AttributeName": "user_name",
                "KeyType": "HASH"
            },
            {
                "AttributeName": "user_id",
                "KeyType": "RANGE"
            }
        ],
        "LocalSecondaryIndexes": [
            {
                "IndexName": "uid_index",
                "IndexSizeBytes": 0,
                "ItemCount": 0,
                "KeySchema": [
                    {
                        "AttributeName": "user_id",
                        "KeyType": "HASH"
                    },
                ],
                "Projection": {
                    "ProjectionType": "KEYS_ONLY"
                }
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 5,
            "WriteCapacityUnits": 5
        },
        "TableName": "CustomAttrModel",
        "TableSizeBytes": 0,
        "TableStatus": "ACTIVE"
    }
}


LOCAL_INDEX_TABLE_DATA = {
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "user_name",
                "AttributeType": "S"
            },
            {
                "AttributeName": "email",
                "AttributeType": "S"
            },
            {
                "AttributeName": "numbers",
                "AttributeType": "NS"
            },
        ],
        "CreationDateTime": 1.363729002358E9,
        "ItemCount": 0,
        "KeySchema": [
            {
                "AttributeName": "user_name",
                "KeyType": "HASH"
            },
        ],
        "LocalSecondaryIndexes": [
            {
                "IndexName": "email_index",
                "IndexSizeBytes": 0,
                "ItemCount": 0,
                "KeySchema": [
                    {
                        "AttributeName": "email",
                        "KeyType": "HASH"
                    },
                ],
                "Projection": {
                    "ProjectionType": "KEYS_ONLY"
                }
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 5,
            "WriteCapacityUnits": 5
        },
        "TableName": "LocalIndexedModel",
        "TableSizeBytes": 0,
        "TableStatus": "ACTIVE"
    }
}


DESCRIBE_TABLE_DATA = {
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "ForumName",
                "AttributeType": "S"
            },
            {
                "AttributeName": "LastPostDateTime",
                "AttributeType": "S"
            },
            {
                "AttributeName": "Subject",
                "AttributeType": "S"
            }
        ],
        "CreationDateTime": 1.363729002358E9,
        "ItemCount": 0,
        "KeySchema": [
            {
                "AttributeName": "ForumName",
                "KeyType": "HASH"
            },
            {
                "AttributeName": "Subject",
                "KeyType": "RANGE"
            }
        ],
        "GlobalSecondaryIndexes": [
            {
                "IndexName": "LastPostIndex",
                "IndexSizeBytes": 0,
                "ItemCount": 0,
                "KeySchema": [
                    {
                        "AttributeName": "ForumName",
                        "KeyType": "HASH"
                    },
                    {
                        "AttributeName": "LastPostDateTime",
                        "KeyType": "RANGE"
                    }
                ],
                "Projection": {
                    "ProjectionType": "KEYS_ONLY"
                }
            }
        ],
        "LocalSecondaryIndexes": [
            {
                "IndexName": "LastPostIndex",
                "IndexSizeBytes": 0,
                "ItemCount": 0,
                "KeySchema": [
                    {
                        "AttributeName": "ForumName",
                        "KeyType": "HASH"
                    },
                    {
                        "AttributeName": "LastPostDateTime",
                        "KeyType": "RANGE"
                    }
                ],
                "Projection": {
                    "ProjectionType": "KEYS_ONLY"
                }
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 5,
            "WriteCapacityUnits": 5
        },
        "TableName": "Thread",
        "TableSizeBytes": 0,
        "TableStatus": "ACTIVE"
    }
}

GET_MODEL_ITEM_DATA = {
    'Item': {
        'user_name': {
            'S': 'foo'
        },
        'user_id': {
            'S': 'bar'
        },
        'zip_code': {
            'N': '88030'
        },
        'epoch': {
            'S': '2014-01-21T22:02:36.265046+0000'
        }
    }
}

GET_OFFICE_EMPLOYEE_ITEM_DATA = {
    'Item': {
        'office_employee_id': {
            'N': '123'
        },
        'person': {
            'M': {
                'firstName': {
                    'S': 'Justin'
                },
                'lname': {
                    'S': 'Phillips'
                },
                'age': {
                    'N': '31'
                },
                'is_dude': {
                    'N': '1'
                }
            }
        },
        'office_location': {
            'M': {
                'latitude': {
                    'N': '37.77461'
                },
                'longitude': {
                    'N': '122.3957216'
                },
                'name': {
                    'S': 'Lyft HQ'
                }
            }
        }
    }
}

GET_OFFICE_EMPLOYEE_ITEM_DATA_WITH_NULL = {
    'Item': {
        'office_employee_id': {
            'N': '123'
        },
        'person': {
            'M': {
                'firstName': {
                    'S': 'Justin'
                },
                'lname': {
                    'S': 'Phillips'
                },
                'age': {
                    'NULL': True
                },
                'is_dude': {
                    'NULL': True
                }
            }
        },
        'office_location': {
            'M': {
                'latitude': {
                    'N': '37.77461'
                },
                'longitude': {
                    'N': '122.3957216'
                },
                'name': {
                    'S': 'Lyft HQ'
                }
            }
        }
    }
}

GET_GROCERY_LIST_ITEM_DATA = {
    'Item': {
        'store_name': {
            'S': 'Haight Street Market'
        },
        'groceries': {
            'L': [
                {'S': 'bread'}, {'N': '1'}, {'S': 'butter'}, {'N': '6'}, {'S': 'milk'}, {'N': '1'}
            ]
        }
    }
}

COMPLEX_MODEL_ITEM_DATA = {
    'Item': {
        'key': {
            'N': '123'
        },
        'weird_person': {
            'M': {
                'firstName': {
                    'S': 'Justin'
                },
                'lname': {
                    'S': 'Phillips'
                },
                'age': {
                    'N': '31'
                },
                'is_dude': {
                    'BOOL': True
                }
            }
        }
    }
}

FULL_CAR_MODEL_ITEM_DATA = {
    'Item': {
        'car_id': {
            'N': '123'
        },
        'car_info': {
            'M': {
                'make': {
                    'S': 'Volkswagen'
                },
                'model': {
                    'S': 'Beetle'
                }
            }
        }
    }
}

CAR_MODEL_WITH_NULL_ITEM_DATA = {
    'Item': {
        'car_id': {
            'N': '123'
        },
        'car_info': {
            'M': {
                'make': {
                    'S': 'Dodge'
                }
            }
        }
    }
}

INVALID_CAR_MODEL_WITH_NULL_ITEM_DATA = {
    'Item': {
        'car_id': {
            'N': '123'
        },
        'car_info': {
            'M': {
                'model': {
                    'S': 'Envoy'
                }
            }
        }
    }
}

GET_OFFICE_ITEM_DATA = {
    'Item': {
        'office_id': {
            'N': '6161'
        },
        'address': {
            'M': {
                'latitude': {
                    'N': '37.77461'
                },
                'longitude': {
                    'N': '122.3957216'
                },
                'name': {
                    'S': 'Lyft HQ'
                }
            }
        },
        'employees': {
            'L': [
                {
                    'M': {
                        'office_employee_id': {
                            'N': '123'
                        },
                        'person': {
                            'M': {
                                'firstName': {
                                    'S': 'Justin'
                                },
                                'lname': {
                                    'S': 'Phillips'
                                },
                                'age': {
                                    'N': '31'
                                },
                                'is_dude': {
                                    'N': '1'
                                }
                            }
                        },
                        'office_location': {
                            'M': {
                                'latitude': {
                                    'N': '37.77461'
                                },
                                'longitude': {
                                    'N': '122.3957216'
                                },
                                'name': {
                                    'S': 'Lyft HQ'
                                }
                            }
                        }
                    }
                },
                {
                    'M': {
                        'office_employee_id': {
                            'N': '456'
                        },
                        'person': {
                            'M': {
                                'firstName': {
                                    'S': 'Garrett'
                                },
                                'lname': {
                                    'S': 'Heel'
                                },
                                'age': {
                                    'N': '30'
                                },
                                'is_dude': {
                                    'N': '1'
                                }
                            }
                        },
                        'office_location': {
                            'M': {
                                'latitude': {
                                    'N': '37.77461'
                                },
                                'longitude': {
                                    'N': '122.3957216'
                                },
                                'name': {
                                    'S': 'Lyft HQ gh'
                                }
                            }
                        }
                    }
                },
                {
                    'M': {
                        'office_employee_id': {
                            'N': '789'
                        },
                        'person': {
                            'M': {
                                'firstName': {
                                    'S': 'Lei'
                                },
                                'lname': {
                                    'S': 'Ding'
                                },
                                'age': {
                                    'N': '32'
                                },
                                'is_dude': {
                                    'N': '1'
                                }
                            }
                        },
                        'office_location': {
                            'M': {
                                'latitude': {
                                    'N': '37.77461'
                                },
                                'longitude': {
                                    'N': '122.3957216'
                                },
                                'name': {
                                    'S': 'Lyft HQ ld'
                                }
                            }
                        }
                    }
                },
                {
                    'M': {
                        'office_employee_id': {
                            'N': '901'
                        },
                        'person': {
                            'M': {
                                'firstName': {
                                    'S': 'Tanya'
                                },
                                'lname': {
                                    'S': 'Ashkenazi'
                                },
                                'age': {
                                    'N': '30'
                                },
                                'is_dude': {
                                    'N': '0'
                                }
                            }
                        },
                        'office_location': {
                            'M': {
                                'latitude': {
                                    'N': '37.77461'
                                },
                                'longitude': {
                                    'N': '122.3957216'
                                },
                                'name': {
                                    'S': 'Lyft HQ ta'
                                }
                            }
                        }
                    }
                },
            ]
        }
    }
}

COMPLEX_ITEM_DATA = {
    "ConsumedCapacity": {
        "CapacityUnits": 1,
        "TableName": "Thread"
    },
    'Item': {
        'date_created': {
            'S': '2014-02-03T23:58:10.963333+0000'
        },
        'name': {
            'S': 'bar'
        }
    }
}


GET_ITEM_DATA = {
    "ConsumedCapacity": {
        "CapacityUnits": 1,
        "TableName": "Thread"
    },
    "Item": {
        "Tags": {
            "SS": ["Update", "Multiple Items", "HelpMe"]
        },
        "LastPostDateTime": {
            "S": "201303190436"
        },
        "Message": {
            "S": "I want to update multiple items in a single API call. What's the best way to do that?"
        }
    }
}


SIMPLE_BATCH_GET_ITEMS = {
    'UnprocessedKeys': {},
    'Responses': {
        'SimpleModel': [
            {'user_name': {'S': '9'}, 'epoch': {'S': '2014-01-22T15:06:48.151712+0000'}, 'user_id': {'S': 'hash-9'}},
            {'user_name': {'S': '4'}, 'epoch': {'S': '2014-01-22T15:06:48.150765+0000'}, 'user_id': {'S': 'hash-4'}},
            {'user_name': {'S': '3'}, 'epoch': {'S': '2014-01-22T15:06:48.150574+0000'}, 'user_id': {'S': 'hash-3'}},
            {'user_name': {'S': '2'}, 'epoch': {'S': '2014-01-22T15:06:48.150382+0000'}, 'user_id': {'S': 'hash-2'}},
            {'user_name': {'S': '1'}, 'epoch': {'S': '2014-01-22T15:06:48.150190+0000'}, 'user_id': {'S': 'hash-1'}},
            {'user_name': {'S': '8'}, 'epoch': {'S': '2014-01-22T15:06:48.151523+0000'}, 'user_id': {'S': 'hash-8'}},
            {'user_name': {'S': '7'}, 'epoch': {'S': '2014-01-22T15:06:48.151334+0000'}, 'user_id': {'S': 'hash-7'}},
            {'user_name': {'S': '6'}, 'epoch': {'S': '2014-01-22T15:06:48.151145+0000'}, 'user_id': {'S': 'hash-6'}},
            {'user_name': {'S': '5'}, 'epoch': {'S': '2014-01-22T15:06:48.150957+0000'}, 'user_id': {'S': 'hash-5'}},
            {'user_name': {'S': '0'}, 'epoch': {'S': '2014-01-22T15:06:48.149991+0000'}, 'user_id': {'S': 'hash-0'}}
        ]
    }
}


BATCH_GET_ITEMS = {
    'UnprocessedKeys': {},
    'Responses': {
        'UserModel': [
            {'user_name': {'S': '9'}, 'epoch': {'S': '2014-01-22T15:06:48.151712+0000'}, 'user_id': {'S': 'hash-9'}},
            {'user_name': {'S': '4'}, 'epoch': {'S': '2014-01-22T15:06:48.150765+0000'}, 'user_id': {'S': 'hash-4'}},
            {'user_name': {'S': '3'}, 'epoch': {'S': '2014-01-22T15:06:48.150574+0000'}, 'user_id': {'S': 'hash-3'}},
            {'user_name': {'S': '2'}, 'epoch': {'S': '2014-01-22T15:06:48.150382+0000'}, 'user_id': {'S': 'hash-2'}},
            {'user_name': {'S': '1'}, 'epoch': {'S': '2014-01-22T15:06:48.150190+0000'}, 'user_id': {'S': 'hash-1'}},
            {'user_name': {'S': '8'}, 'epoch': {'S': '2014-01-22T15:06:48.151523+0000'}, 'user_id': {'S': 'hash-8'}},
            {'user_name': {'S': '7'}, 'epoch': {'S': '2014-01-22T15:06:48.151334+0000'}, 'user_id': {'S': 'hash-7'}},
            {'user_name': {'S': '6'}, 'epoch': {'S': '2014-01-22T15:06:48.151145+0000'}, 'user_id': {'S': 'hash-6'}},
            {'user_name': {'S': '5'}, 'epoch': {'S': '2014-01-22T15:06:48.150957+0000'}, 'user_id': {'S': 'hash-5'}},
            {'user_name': {'S': '0'}, 'epoch': {'S': '2014-01-22T15:06:48.149991+0000'}, 'user_id': {'S': 'hash-0'}}
        ]
    }
}


COMPLEX_TABLE_DATA = {
    'Table': {
        'ItemCount': 0, 'TableName': 'ComplexKey',
        'ProvisionedThroughput': {
            'ReadCapacityUnits': 2,
            'WriteCapacityUnits': 2,
            'NumberOfDecreasesToday': 0
        },
        'CreationDateTime': 1391471876.86,
        'TableStatus': 'ACTIVE',
        'AttributeDefinitions': [
            {
                'AttributeName': 'date_created', 'AttributeType': 'S'
            },
            {
                'AttributeName': 'name', 'AttributeType': 'S'
            }
        ],
        'KeySchema': [
            {
                'AttributeName': 'name', 'KeyType': 'HASH'
            },
            {
                'AttributeName': 'date_created', 'KeyType': 'RANGE'
            }
        ],
        'TableSizeBytes': 0
    }
}

BINARY_ATTR_DATA = ' '

SERIALIZED_TABLE_DATA = [
    [
        "foo",
        {
            "range_key": "id-0",
            "attributes": {
                "callable_field": {"N": "42"},
                "email": {"S": "email-7980"},
                "picture": {
                    "B": "aGVsbG8sIHdvcmxk"
                },
                "zip_code": {"N": "88030"}
            }
        }
    ],
    [
        "foo",
        {
            "range_key": "id-1",
            "attributes": {
                "callable_field": {"N": "42"},
                "email": {"S": "email-19770"},
                "picture": {
                    "B": "aGVsbG8sIHdvcmxk"
                },
                "zip_code": {"N": "88030"}
            }
        }
    ]
]

COMPLEX_MODEL_SERIALIZED_TABLE_DATA = [
    [
        "123",
        {
            "attributes": {
                'weird_person': {
                    'M': {
                        'firstName': {
                            'S': 'Justin'
                        },
                        'lname': {
                            'S': 'Phillips'
                        },
                        'age': {
                            'N': '31'
                        },
                        'is_dude': {
                            'N': '1'
                        }
                    }

                }
            }
        }
    ]
]

OFFICE_EMPLOYEE_MODEL_TABLE_DATA = {
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "office_employee_id",
                "AttributeType": "N"
            },
            {
                "AttributeName": "person",
                "AttributeType": "M"
            },
            {
                "AttributeName": "office_location",
                "AttributeType": "M"
            }
        ],
        "CreationDateTime": 1.363729002358E9,
        "ItemCount": 0,
        "KeySchema": [
            {
                "AttributeName": "office_employee_id",
                "KeyType": "HASH"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 5,
            "WriteCapacityUnits": 5
        },
        "TableName": "OfficeEmployeeModel",
        "TableSizeBytes": 0,
        "TableStatus": "ACTIVE"
    }
}

CAR_MODEL_TABLE_DATA = {
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "car_id",
                "AttributeType": "N"
            },
            {
                "AttributeName": "car_info",
                "AttributeType": "M"
            }
        ],
        "CreationDateTime": 1.363729002358E9,
        "ItemCount": 0,
        "KeySchema": [
            {
                "AttributeName": "car_id",
                "KeyType": "HASH"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 5,
            "WriteCapacityUnits": 5
        },
        "TableName": "CarModel",
        "TableSizeBytes": 0,
        "TableStatus": "ACTIVE"
    }
}

GROCERY_LIST_MODEL_TABLE_DATA = {
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "groceries",
                "AttributeType": "L"
            },
            {
                "AttributeName": "store_name",
                "AttributeType": "S"
            }
        ],
        "CreationDateTime": 1.363729002358E9,
        "ItemCount": 0,
        "KeySchema": [
            {
                "AttributeName": "store_name",
                "KeyType": "HASH"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 5,
            "WriteCapacityUnits": 5
        },
        "TableName": "GroceryListModel",
        "TableSizeBytes": 0,
        "TableStatus": "ACTIVE"
    }
}

OFFICE_MODEL_TABLE_DATA = {
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "office_id",
                "AttributeType": "N"
            },
            {
                "AttributeName": "address",
                "AttributeType": "M"
            },
            {
                "AttributeName": "employees",
                "AttributeType": "L"
            }
        ],
        "CreationDateTime": 1.363729002358E9,
        "ItemCount": 0,
        "KeySchema": [
            {
                "AttributeName": "office_id",
                "KeyType": "HASH"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 5,
            "WriteCapacityUnits": 5
        },
        "TableName": "OfficeModel",
        "TableSizeBytes": 0,
        "TableStatus": "ACTIVE"
    }
}

COMPLEX_MODEL_TABLE_DATA = {
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "key",
                "AttributeType": "N"
            },
            {
                "AttributeName": "person",
                "AttributeType": "M"
            }
        ],
        "CreationDateTime": 1.363729002358E9,
        "ItemCount": 0,
        "KeySchema": [
            {
                "AttributeName": "key",
                "KeyType": "HASH"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 5,
            "WriteCapacityUnits": 5
        },
        "TableName": "ComplexModel",
        "TableSizeBytes": 0,
        "TableStatus": "ACTIVE"
     }
}

BOOLEAN_CONVERSION_MODEL_TABLE_DATA_OLD_STYLE = {
    'Table': {
        'ItemCount': 0, 'TableName': 'BooleanConversionTable',
        'ProvisionedThroughput': {
            'ReadCapacityUnits': 2,
            'WriteCapacityUnits': 2,
            'NumberOfDecreasesToday': 0
        },
        'CreationDateTime': 1391471876.86,
        'TableStatus': 'ACTIVE',
        'AttributeDefinitions': [
            {
                'AttributeName': 'user_name',
                'AttributeType': 'S'
            },
            {
                'AttributeName': 'is_human',
                'AttributeType': 'N'
            }
        ],
        'KeySchema': [
            {
                'AttributeName': 'user_name', 'KeyType': 'HASH'
            }
        ],
        'TableSizeBytes': 0
    }
}

BOOLEAN_CONVERSION_MODEL_TABLE_DATA = {
    'Table': {
        'ItemCount': 0, 'TableName': 'BooleanConversionTable',
        'ProvisionedThroughput': {
            'ReadCapacityUnits': 2,
            'WriteCapacityUnits': 2,
            'NumberOfDecreasesToday': 0
        },
        'CreationDateTime': 1391471876.86,
        'TableStatus': 'ACTIVE',
        'AttributeDefinitions': [
            {
                'AttributeName': 'user_name',
                'AttributeType': 'S'
            },
            {
                'AttributeName': 'is_human',
                'AttributeType': 'BOOL'
            }
        ],
        'KeySchema': [
            {
                'AttributeName': 'user_name', 'KeyType': 'HASH'
            }
        ],
        'TableSizeBytes': 0
    }
}

BOOLEAN_CONVERSION_MODEL_OLD_STYLE_TRUE_ITEM_DATA = {
    'Item': {
        'user_name': {
            'S': 'justin'
        },
        'is_human': {
            'N': '1'
        }
    }
}

BOOLEAN_CONVERSION_MODEL_OLD_STYLE_FALSE_ITEM_DATA = {
    'Item': {
        'user_name': {
            'S': 'alf'
        },
        'is_human': {
            'N': '0'
        }
    }
}

BOOLEAN_CONVERSION_MODEL_NEW_STYLE_TRUE_ITEM_DATA = {
    'Item': {
        'user_name': {
            'S': 'justin'
        },
        'is_human': {
            'BOOL': True
        }
    }
}

BOOLEAN_CONVERSION_MODEL_NEW_STYLE_FALSE_ITEM_DATA = {
    'Item': {
        'user_name': {
            'S': 'alf'
        },
        'is_human': {
            'BOOL': False
        }
    }
}

TREE_MODEL_TABLE_DATA = {
    'Table': {
        'ItemCount': 0, 'TableName': 'TreeModelTable',
        'ProvisionedThroughput': {
            'ReadCapacityUnits': 2,
            'WriteCapacityUnits': 2,
            'NumberOfDecreasesToday': 0
        },
        'CreationDateTime': 1391471876.86,
        'TableStatus': 'ACTIVE',
        'AttributeDefinitions': [
            {
                'AttributeName': 'tree_key',
                'AttributeType': 'S'
            },
            {
                'AttributeName': 'left',
                'AttributeType': 'M'
            },
            {
                'AttributeName': 'right',
                'AttributeType': 'M'
            }
        ],
        'KeySchema': [
            {
                'AttributeName': 'tree_key', 'KeyType': 'HASH'
            }
        ],
        'TableSizeBytes': 0
    }
}

TREE_MODEL_ITEM_DATA = {
    'Item': {
        'tree_key': {
            'S': '123'
        },
        'left': {
            'M': {
                'value': {
                    'N': '1'
                },
                'left': {
                    'M': {
                        'value': {
                            'N': '2'
                        },
                        'left': {
                            'M': {
                                'value': {
                                    'N': '3'
                                }
                            }
                        },
                        'right': {
                            'M': {
                                'value': {
                                    'N': '4'
                                }
                            }
                        }
                    }
                },
                'right': {
                    'M': {
                        'value': {
                            'N': '2'
                        },
                        'left': {
                            'M': {
                                'value': {
                                    'N': '3'
                                }
                            }
                        },
                        'right': {
                            'M': {
                                'value': {
                                    'N': '4'
                                }
                            }
                        }
                    }
                }
            }
        },
        'right': {
            'M': {
                'value': {
                    'N': '1'
                },
                'left': {
                    'M': {
                        'value': {
                            'N': '2'
                        },
                        'left': {
                            'M': {
                                'value': {
                                    'N': '3'
                                }
                            }
                        },
                        'right': {
                            'M': {
                                'value': {
                                    'N': '4'
                                }
                            }
                        }
                    }
                },
                'right': {
                    'M': {
                        'value': {
                            'N': '2'
                        },
                        'left': {
                            'M': {
                                'value': {
                                    'N': '3'
                                }
                            }
                        },
                        'right': {
                            'M': {
                                'value': {
                                    'N': '4'
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

EXPLICIT_RAW_MAP_MODEL_TABLE_DATA = {
    'Table': {
        'ItemCount': 0, 'TableName': 'ExplicitRawMapModel',
        'ProvisionedThroughput': {
            'ReadCapacityUnits': 2,
            'WriteCapacityUnits': 2,
            'NumberOfDecreasesToday': 0
        },
        'CreationDateTime': 1391471876.86,
        'TableStatus': 'ACTIVE',
        'AttributeDefinitions': [
            {
                'AttributeName': 'map_id',
                'AttributeType': 'N'
            },
            {
                'AttributeName': 'map_attr',
                'AttributeType': 'M'
            }
        ],
        'KeySchema': [
            {
                'AttributeName': 'map_id', 'KeyType': 'HASH'
            }
        ],
        'TableSizeBytes': 0
    }
}

EXPLICIT_RAW_MAP_MODEL_ITEM_DATA = {
    'Item': {
        'map_id': {
            'N': '123',
        },
        'map_attr': {'M': {
                'foo': {'S': 'bar'},
                'num': {'N': '1'},
                'bool_type': {'BOOL': True},
                'other_b_type': {'BOOL': False},
                'floaty': {'N': '1.2'},
                'listy': {'L': [{'N': '1'}, {'N': '2'}, {'N': '12345678909876543211234234324234'}]},
                'mapy': {'M': {'baz': {'S': 'bongo'}}}
            }
        }
    }
}

EXPLICIT_RAW_MAP_MODEL_AS_SUB_MAP_IN_TYPED_MAP_TABLE_DATA = {
    'Table': {
        'ItemCount': 0, 'TableName': 'ExplicitRawMapAsMemberOfSubClass',
        'ProvisionedThroughput': {
            'ReadCapacityUnits': 2,
            'WriteCapacityUnits': 2,
            'NumberOfDecreasesToday': 0
        },
        'CreationDateTime': 1391471876.86,
        'TableStatus': 'ACTIVE',
        'AttributeDefinitions': [
            {
                'AttributeName': 'map_id',
                'AttributeType': 'N'
            }
        ],
        'KeySchema': [
            {
                'AttributeName': 'map_id', 'KeyType': 'HASH'
            }
        ],
        'TableSizeBytes': 0
    }
}

EXPLICIT_RAW_MAP_MODEL_AS_SUB_MAP_IN_TYPED_MAP_ITEM_DATA = {
    'Item': {
        'map_id': {
            'N': '123'
        },
        'sub_attr': {
            'M': {
                'num_field': {'N': '37'},
                'str_field': {'S': 'hi'},
                'map_field': {
                        'M': {
                            'foo': {'S': 'bar'},
                            'num': {'N': '1'},
                            'bool_type': {'BOOL': True},
                            'other_b_type': {'BOOL': False},
                            'floaty': {'N': '1.2'},
                            'listy': {'L': [{'N': '1'}, {'N': '2'}, {'N': '3'}]},
                            'mapy': {'M': {'baz': {'S': 'bongo'}}}
                        }
                }
            }
        }
    }
}

DOG_TABLE_DATA = {
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "name",
                "AttributeType": "S"
            }
        ],
        "CreationDateTime": 1.363729002358E9,
        "ItemCount": 42,
        "KeySchema": [
            {
                "AttributeName": "name",
                "KeyType": "HASH"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 5,
            "WriteCapacityUnits": 5
        },
        "TableName": "Dog",
        "TableSizeBytes": 0,
        "TableStatus": "ACTIVE"
    }
}
