示例#1
0
    def test_main_function(self, pymongo_mock, mock_log_info):
        """Basic usage."""
        client = mongomock.MongoClient('mongodb://test_url/test_db')
        pymongo_mock.MongoClient.return_value = client

        mongo_db = client.get_database('test_db')
        mongo_db.create_collection('missing-in-importers')
        mongo_db.create_collection('in-both')
        mongo_db.create_collection('in-both-with-meta')
        two_days_ago = datetime.datetime.now() - datetime.timedelta(days=2)
        mongo_db.meta.insert_one({
            '_id': 'in-both-with-meta',
            'updated_at': two_days_ago,
        })
        mongo_db.create_collection('in-both-not-needed')

        import_status.main('mongodb://test_url/test_db')
        mock_log_info.assert_any_call('%s collection%s without importers:',
                                      _AnyColorText('1'), ' is')
        mock_log_info.assert_any_call('%s collection%s not imported yet:',
                                      _AnyColorText('1'), ' is')
        mock_log_info.assert_any_call(
            'Status report on imported collections (%d):', 3)
        mock_log_info.assert_any_call(
            '\t%s - %s - %s', _AnyColorText('in-both-not-needed'),
            _AnyColorText('in both not needed'),
            termcolor.colored('No import needed', 'green'))
        mock_log_info.assert_any_call(
            '\t%s - %s - %s', _AnyColorText('in-both'),
            _AnyColorText('in both'),
            termcolor.colored('Metainformation missing', 'red'))
        mock_log_info.assert_any_call(
            '\t%s - %s - %s', _AnyColorText('in-both-with-meta'),
            _AnyColorText('in both with meta (JobGroup)'),
            _AnyColorText('last import: %s' % two_days_ago))
示例#2
0
    def test_display_command(self, pymongo_mock, mock_log_info):
        """Display the command to import a missing collection."""
        client = mongomock.MongoClient('mongodb://test_url/test_db')
        pymongo_mock.MongoClient.return_value = client

        import_status.main('mongodb://test_url/test_db')
        mock_log_info.assert_any_call('%s collection%s not imported yet:',
                                      _AnyColorText('1'), ' is')
        mock_log_info.assert_any_call(
            'To import "%s" in "%s", run:\n%s', 'Collection name',
            'collection_id', 'my-long-command \\\n'
            '            --mongo_url "mongodb://test_url/test_db" '
            '--mongo_collection "collection_id"\n')
示例#3
0
    def test_display_command(self, pymongo_mock, mock_log_info):
        """Display the command to import a missing collection."""
        import_status.IMPORTERS = {
            'collection_id': import_status.Importer(
                name="Collection name",
                command='my-long-command --mongo_url %(mongo_url)s',
                is_imported=True,
                proto_type=None, key=None),
        }

        client = mongomock.MongoClient('mongodb://test_url/test_db')
        pymongo_mock.MongoClient.return_value = client

        import_status.main('mongodb://test_url/test_db')
        mock_log_info.assert_any_call(
            '%s collection%s not imported yet:', _AnyColorText('1'), ' is')
        mock_log_info.assert_any_call(
            'To import %s, run:\n%s\n',
            'Collection name',
            'my-long-command --mongo_url mongodb://test_url/test_db')