def test_flatten_register(self): cli = mock.Mock() flatten = FlattenArguments('my-service', FLATTEN_CONFIG) flatten.register(cli) cli.register.assert_called_with(\ 'building-argument-table.my-service.command-name', flatten.flatten_args)
def test_flatten_modify_args(self): # Mock operation, arguments, and members for a service operation = mock.Mock(spec=Operation) operation.cli_name = 'command-name' argument_model1 = mock.Mock() argument_model1.required_members = [] member_foo = mock.Mock() member_foo.name = 'ArgumentFoo' member_foo.documentation = 'Original docs' member_foo.required_members = [] member_bar = mock.Mock() member_bar.name = 'ArgumentBar' member_bar.documentation = 'More docs' member_bar.required_members = [] argument_model1.members = { 'ArgumentFoo': member_foo, 'ArgumentBar': member_bar } argument_model2 = mock.Mock() argument_model2.required_members = [] member_baz = mock.Mock() member_baz.name = 'ArgumentBaz' member_baz.documentation = '' member_baz.required_members = [] member_some_value = mock.Mock() member_some_value.name = 'SomeValue' member_some_value.documenation = '' member_some_value.required_members = [] member_baz.members = {'SomeValue': member_some_value} argument_model2.members = {'ArgumentBaz': member_baz} cli_argument1 = mock.Mock(spec=CLIArgument) cli_argument1.argument_model = argument_model1 cli_argument2 = mock.Mock(spec=CLIArgument) cli_argument2.argument_model = argument_model2 argument_table = { 'original-argument': cli_argument1, 'another-original-argument': cli_argument2 } # Create the flattened argument table cli = mock.Mock() flatten = FlattenArguments('my-service', FLATTEN_CONFIG) flatten.flatten_args(operation, argument_table) # Make sure new arguments and any with keep=True are there self.assertIn('foo', argument_table) self.assertIn('bar', argument_table) self.assertNotIn('original-argument', argument_table) self.assertIn('baz', argument_table) self.assertIn('another-original-argument', argument_table) # Make sure the new arguments are the class we expect self.assertIsInstance(argument_table['foo'], FlattenedArgument) self.assertIsInstance(argument_table['bar'], FlattenedArgument) self.assertIsInstance(argument_table['baz'], FlattenedArgument) self.assertNotIsInstance(argument_table['another-original-argument'], FlattenedArgument) # Make sure original required trait can be overridden self.assertEqual(False, argument_table['foo'].required) self.assertEqual(True, argument_table['bar'].required) # Make sure docs can be overriden and get the defaults self.assertEqual('Original docs', argument_table['foo'].documentation) self.assertEqual('Some help text', argument_table['bar'].documentation)
def initialize(cli): """ The entry point for CloudSearch customizations. """ flattened = FlattenArguments('cloudsearch', FLATTEN_CONFIG) flattened.register(cli)