示例#1
0
    def test_historylogs_without_filters(self):
        for document_type in ['article', 'journal']:
            historylogs = json.loads(
                open(
                    os.path.dirname(__file__) +
                    '/fixtures/historylogs_%s.json' % document_type).read())
            mocker = Mocker()
            databroker = mocker.mock()
            databroker['historychanges_%s' % document_type].find(ANY).count()
            mocker.result(historylogs['meta']['total'])
            databroker['historychanges_%s' % document_type].find(ANY).skip(
                ANY).limit(ANY).sort("date")
            mocker.result(historylogs['objects'])
            mocker.replay()

            db = DataBroker(databroker)
            result = db.historychanges(document_type)

            # assert date filters are correct in meta
            self.assertIn('meta', result.keys())
            self.assertIn('filter', result['meta'].keys())
            self.assertIn('date', result['meta']['filter'].keys())
            self.assertEqual(['$lte', '$gt'],
                             result['meta']['filter']['date'].keys())

            self.assertEqual(historylogs['meta']['total'],
                             result['meta']['total'])
            self.assertIn('objects', result.keys())
            self.assertEqual(historylogs['objects'], result['objects'])
            self.assertEqual(result['objects'][0].keys(),
                             ['date', 'code', 'event', 'collection'])
示例#2
0
    def test_log_changes_with_valid_params(self):
        mocker = Mocker()
        databroker = mocker.mock()
        document_types = ['article', 'journal']
        events = ['add', 'update', 'delete']

        # db "insert" must be called len(document_types) * len(events) times
        for document_type in document_types:
            for event in events:
                databroker['historychanges_%s' % document_type].insert(ANY)
                mocker.result(123457890)
        mocker.replay()

        db = DataBroker(databroker)

        for document_type in document_types:
            for event in events:
                log_data = {
                    'document_type': document_type,
                    'code': '123',
                    'collection': 'test_collection',
                    'event': event,
                    'date': datetime.now().isoformat(),
                }
                log_id = db._log_changes(**log_data)
                self.assertEqual(log_id, 123457890)
示例#3
0
    def test_check_journal_meta(self):

        db = DataBroker(None)

        expected = db._check_journal_meta(self._raw_json['title'])

        self.assertEqual(expected['code'], [u'0034-8910'])
        self.assertEqual(expected['collection'], u'scl')
示例#4
0
    def test_check_article_meta(self):

        db = DataBroker(None)

        expected = db._check_article_meta(self._raw_json)

        self.assertEqual(expected['code_issue'], u'0034-891020100004')
        self.assertEqual(expected['code_title'], [u'0034-8910'])
        self.assertEqual(expected['publication_year'], u'2010')
        self.assertEqual(expected['collection'], u'scl')
示例#5
0
    def __init__(self):
        config = utils.Configuration.from_env()
        settings = dict(config.items())

        db_dsn = os.environ.get('MONGODB_HOST', settings.get('mongo_uri', '127.0.0.1:27017'))

        self._admintoken = os.environ.get('ADMIN_TOKEN', None) or settings['app:main'].get('admintoken', uuid.uuid4().hex)

        db_client = get_dbconn(db_dsn)
        self._databroker = DataBroker(db_client)
示例#6
0
    def test_exists_article_False(self):

        mocker = Mocker()
        databroker = mocker.mock()
        databroker['articles'].find(ANY).count()
        mocker.result(None)
        mocker.replay()

        db = DataBroker(databroker)

        self.assertEqual(db.exists_article('xx'), False)