Exemplo n.º 1
0
    def test_reference_beats_collection(self):
        model = ResourceModel(
            'test',
            {
                'has': {
                    'Foo': {
                        'resource': {
                            'type':
                            'Frob',
                            'identifiers': [{
                                'target': 'Id',
                                'source': 'data',
                                'path': 'FrobId',
                            }],
                        }
                    }
                },
                'hasMany': {
                    'Foo': {
                        'resource': {
                            'type': 'Frob'
                        }
                    }
                },
            },
            {'Frob': {}},
        )

        model.load_rename_map()

        assert model.references[0].name == 'foo'
        assert model.collections[0].name == 'foo_collection'
Exemplo n.º 2
0
    def test_action_beats_reference(self):
        model = ResourceModel(
            'test',
            {
                'actions': {
                    'Foo': {
                        'request': {
                            'operation': 'GetFoo'
                        }
                    }
                },
                'has': {
                    'Foo': {
                        'resource': {
                            'type':
                            'Frob',
                            'identifiers': [{
                                'target': 'Id',
                                'source': 'data',
                                'path': 'FrobId',
                            }],
                        }
                    }
                },
            },
            {'Frob': {}},
        )

        model.load_rename_map()

        assert model.actions[0].name == 'foo'
        assert model.references[0].name == 'foo_reference'
Exemplo n.º 3
0
    def test_multiple(self):
        # This tests a bunch of different renames working together
        model = ResourceModel(
            'test',
            {
                'identifiers': [{
                    'name': 'Foo'
                }],
                'actions': {
                    'Foo': {}
                },
                'has': {
                    'Foo': {
                        'resource': {
                            'type':
                            'Frob',
                            'identifiers': [{
                                'target': 'Id',
                                'source': 'data',
                                'path': 'FrobId',
                            }],
                        }
                    }
                },
                'hasMany': {
                    'Foo': {}
                },
                'waiters': {
                    'Foo': {}
                },
            },
            {'Frob': {}},
        )

        shape = (DenormalizedStructureBuilder().with_members({
            'Foo': {
                'type': 'string',
            },
            'Bar': {
                'type': 'string'
            },
        }).build_model())

        model.load_rename_map(shape)

        assert model.identifiers[0].name == 'foo'
        assert model.actions[0].name == 'foo_action'
        assert model.references[0].name == 'foo_reference'
        assert model.collections[0].name == 'foo_collection'
        assert model.waiters[0].name == 'wait_until_foo'

        # If an identifier and an attribute share the same name, then
        # the attribute is essentially hidden.
        assert 'foo_attribute' not in model.get_attributes(shape)

        # Other attributes need to be there, though
        assert 'bar' in model.get_attributes(shape)
Exemplo n.º 4
0
    def test_waiter_beats_attribute(self):
        model = ResourceModel('test', {'waiters': {'Foo': {}}}, {'Frob': {}})

        shape = (DenormalizedStructureBuilder().with_members({
            'WaitUntilFoo': {
                'type': 'string',
            }
        }).build_model())

        model.load_rename_map(shape)

        assert model.waiters[0].name == 'wait_until_foo'
        assert 'wait_until_foo_attribute' in model.get_attributes(shape)
Exemplo n.º 5
0
    def test_load_beats_identifier(self):
        model = ResourceModel(
            'test', {
                'identifiers': [{
                    'name': 'Load'
                }],
                'load': {
                    'request': {
                        'operation': 'GetFrobs'
                    }
                }
            }, {})

        model.load_rename_map()

        self.assertTrue(model.load)
        self.assertEqual(model.identifiers[0].name, 'load_identifier')
Exemplo n.º 6
0
    def test_collection_beats_waiter(self):
        model = ResourceModel(
            'test', {
                'hasMany': {
                    'WaitUntilFoo': {
                        'resource': {
                            'type': 'Frob'
                        }
                    }
                },
                'waiters': {
                    'Foo': {}
                }
            }, {'Frob': {}})

        model.load_rename_map()

        self.assertEqual(model.collections[0].name, 'wait_until_foo')
        self.assertEqual(model.waiters[0].name, 'wait_until_foo_waiter')
Exemplo n.º 7
0
    def test_identifier_beats_action(self):
        model = ResourceModel(
            'test', {
                'identifiers': [{
                    'name': 'foo'
                }],
                'actions': {
                    'Foo': {
                        'request': {
                            'operation': 'GetFoo'
                        }
                    }
                }
            }, {})

        model.load_rename_map()

        self.assertEqual(model.identifiers[0].name, 'foo')
        self.assertEqual(model.actions[0].name, 'foo_action')
Exemplo n.º 8
0
    def test_load_beats_identifier(self):
        model = ResourceModel(
            'test',
            {
                'identifiers': [{
                    'name': 'Load'
                }],
                'load': {
                    'request': {
                        'operation': 'GetFrobs'
                    }
                },
            },
            {},
        )

        model.load_rename_map()

        assert model.load
        assert model.identifiers[0].name == 'load_identifier'
Exemplo n.º 9
0
    def test_meta_beats_identifier(self):
        model = ResourceModel('test', {'identifiers': [{'name': 'Meta'}]}, {})

        model.load_rename_map()

        assert model.identifiers[0].name == 'meta_identifier'