def _test(self, args, expect): """Test the command line args and compare the prefix of the output.""" with self.assertRaises(SystemExit): with mock_stdout() as stdout: cli.parse_args(args) text = stdout.getvalue() self.assertTrue(text.startswith(expect))
def _with_contact_table(args, **kwargs): args = cli.parse_args(args) options = '\n'.join('{}={}'.format(key, kwargs[key]) for key in kwargs) conf = config.Config( io.StringIO('[addressbooks]\n[[test]]\npath=.\n' '[contact table]\n' + options)) return cli.merge_args_into_config(args, conf)
def test_add_email_multiple_headers_separate_args_takes_last(self): args, _config = cli.parse_args( ["add-email", "-H", "OtHer", "-H", "myfield"]) actual = args.fields self.assertEqual(["myfield"], actual)
def test_add_email_another_field(self): args, _config = cli.parse_args(["add-email", "-H", "OtHer"]) actual = args.fields self.assertEqual(["other"], actual)
def test_add_email_from_field(self): args, _config = cli.parse_args(["add-email", "-H", "from"]) actual = args.fields self.assertEqual(["from"], actual)
def test_add_email_defaults_to_from_lowercase(self): args, _config = cli.parse_args(["add-email"]) actual = args.fields self.assertEqual(["from"], actual)
def test_no_target_specification_results_in_an_any_query(self): expected = query.AnyQuery() args, _config = cli.parse_args(['merge']) actual = args.target_contact self.assertEqual(expected, actual)
def test_normal_search_terms_create_term_queries(self): expected = self.foo args, _config = cli.parse_args(['list', 'foo']) actual = args.search_terms self.assertEqual(expected, actual)
def test_uid_option_is_combined_with_search_terms_for_merge_command(self): args, _config = cli.parse_args(['merge', '--uid=foo', '--target=bar']) self.assertEqual(self.uid, args.source_search_terms) self.assertEqual(self.bar, args.target_contact)
def test_target_uid_option_creates_uid_queries(self): args, _config = cli.parse_args(['merge', '--target-uid=foo', 'bar']) self.assertEqual(self.uid, args.target_contact) self.assertEqual(self.bar, args.source_search_terms)
def test_second_target_search_term_overrides_first(self): args, _config = cli.parse_args( ['merge', '--target=foo', '--target=bar', 'baz']) self.assertEqual(self.bar, args.target_contact) self.assertEqual(self.baz, args.source_search_terms)
def test_target_search_terms_are_typed(self): args, _config = cli.parse_args(['merge', '--target=foo', 'bar']) self.assertEqual(self.foo, args.target_contact) self.assertEqual(self.bar, args.source_search_terms)
def test_no_search_terms_create_an_any_query(self): expected = query.AnyQuery() args, _config = cli.parse_args(['list']) actual = args.search_terms self.assertEqual(expected, actual)
def test_multible_search_terms_generate_and_queries(self): expected = query.AndQuery(self.foo, self.bar) args, _config = cli.parse_args(['list', 'foo', 'bar']) actual = args.search_terms self.assertEqual(expected, actual)
def test_uid_options_create_uid_queries(self): expected = self.uid args, _config = cli.parse_args(['list', '--uid=foo']) actual = args.search_terms self.assertEqual(expected, actual)
def test_target_uid_and_free_target_search_terms_produce_a_conflict(self): with self.assertRaises(SystemExit): with mock_stream("stderr"): # just silence stderr cli.parse_args(['merge', '--target-uid=foo', '--target=bar'])
def _merge(args): args, _conf = cli.parse_args(args) # This config file just loads all defaults from the config.spec. conf = config.Config(io.StringIO('[addressbooks]\n[[test]]\npath=.')) return cli.merge_args_into_config(args, conf)
def test_add_email_multiple_headers_comma_separated(self): args, _config = cli.parse_args( ["add-email", "-H", "OtHer,myfield,from"]) actual = args.fields self.assertEqual(["other", "myfield", "from"], actual)