コード例 #1
0
ファイル: test_tag_batch.py プロジェクト: ErinCall/catsnap
    def test_get_tags(self, BatchList, Client):
        mock_client = Mock()
        table = Mock()
        table.name = 'the-name-of-the-table'
        mock_client.table.return_value = table
        dynamo = Mock()
        dynamo.batch_get_item.return_value = {
                'UnprocessedKeys': {},
                'Responses': {
                    'the-name-of-the-table': {
                        'Items': [
                            {
                                HASH_KEY: 'cats',
                                'filenames': '["deadbeef", "badcafe", "defec8"]'},
                            {
                                HASH_KEY: 'dogs',
                                'filenames': '["5ca1ab1e", "deadbeef"]'}],
                        'ConsumedCapacityUnits': 10.0}}}
        mock_client.get_dynamodb.return_value = dynamo
        Client.return_value = mock_client
        batch_list = Mock()
        BatchList.return_value = batch_list

        tags = list(get_tags(['a', 'b']))
        BatchList.assert_called_once_with(dynamo)
        batch_list.add_batch.assert_called_once_with(
                table, ['a', 'b'], attributes_to_get=['filenames', HASH_KEY])
        dynamo.batch_get_item.assert_called_with(batch_list)
        eq_(tags, [
            {
                'tag': 'cats',
                'filenames': [ 'deadbeef', 'badcafe', 'defec8']},
            {
                'tag': 'dogs',
                'filenames': [ '5ca1ab1e', 'deadbeef']}])
コード例 #2
0
ファイル: test_tag_batch.py プロジェクト: ErinCall/catsnap
    def test_get_tag_items__uniquifies_tags(self, BatchList, Client):
        client = Mock()
        client.get_dynamodb = MagicMock()
        Client.return_value = client

        batch_list = Mock()
        BatchList.return_value = batch_list
        table = client.table()

        #since get_tag_items is a generator, we need to force evaluation
        list(get_tags(['roadrunner', 'roadrunner']))
        batch_list.add_batch.assert_called_once_with(
                table, ['roadrunner'],
                attributes_to_get=['filenames', HASH_KEY])
コード例 #3
0
ファイル: test_tag_batch.py プロジェクト: ErinCall/catsnap
    def test_get_tags__checks_back_on_unprocessed_keys(self,
            BatchList, Client):
        mock_client = Mock()
        table = Mock()
        table.name = 'thetablename'
        mock_client.table.return_value = table
        dynamo = Mock()
        first_getitem = {
                'UnprocessedKeys': {
                    'thetablename': {
                        'Keys': [ {'HashKeyElement': 'dogs'}],
                        'AttributesToGet': ['tags', HASH_KEY]}},
                'Responses': {
                    'thetablename': {
                        'Items': [
                            {
                                HASH_KEY: 'cats',
                                'filenames': '["deadbeef", "badcafe", "defec8"]'}],
                        'ConsumedCapacityUnits': 10.0}}}
        second_getitem = {
                'UnprocessedKeys': {},
                'Responses': {
                    'thetablename': {
                        'Items': [
                            {
                                HASH_KEY: 'dogs',
                                'filenames': '["5ca1ab1e", "deadbeef"]'}],
                        'ConsumedCapacityUnits': 10.0}}}
        dynamo.batch_get_item.side_effect = [first_getitem, second_getitem]
        mock_client.get_dynamodb.return_value = dynamo
        Client.return_value = mock_client
        batch_list = Mock()
        BatchList.return_value = batch_list

        tags = list(get_tags(['whatever']))
        eq_(tags, [
            {
                'tag': 'cats',
                'filenames': [ 'deadbeef', 'badcafe', 'defec8']},
            {
                'tag': 'dogs',
                'filenames': [ '5ca1ab1e', 'deadbeef']}])
コード例 #4
0
ファイル: test_tag_batch.py プロジェクト: ErinCall/catsnap
 def test_get_tags__degenerate_case(self):
     eq_(list(get_tags([])), [])