Example #1
0
def list_journals_by_subject(request):

    journals = mongomodels.list_journals_by_study_areas()

    return render_to_response('catalog/subject.html', {
                              'journals': journals},
                              context_instance=RequestContext(request))
    def test_list_journals_by_study_areas_returns_valid_journals(self):
        from catalog.mongomodels import list_journals_by_study_areas, Journal

        mock_mongomanager = self.mocker.mock()

        mock_mongomanager(mongo_collection='journals')
        self.mocker.result(mock_mongomanager)
        self.mocker.count(4)

        mock_mongomanager.distinct('study_areas')
        self.mocker.result(['Zap', 'Zaz', 'Spam'])

        mock_mongomanager.find({'study_areas': 'Zap'})
        self.mocker.result(mock_mongomanager)

        mock_mongomanager.find({'study_areas': 'Zaz'})
        self.mocker.result(mock_mongomanager)

        mock_mongomanager.find({'study_areas': 'Spam'})
        self.mocker.result(mock_mongomanager)

        mock_mongomanager.sort('_normalized_title', direction=pymongo.ASCENDING)
        self.mocker.result([{'title': 'Micronucleated lymphocytes in parents of lalala children'}])
        self.mocker.count(3)

        self.mocker.replay()

        areas = list_journals_by_study_areas(mongomanager_lib=mock_mongomanager)
        for area in areas:
            for j in area['journals']:
                self.assertTrue(isinstance(j, Journal))
    def test_list_journals_by_study_areas_returns_the_right_areas(self):
        from catalog.mongomodels import list_journals_by_study_areas

        mock_mongomanager = self.mocker.mock()

        mock_mongomanager(mongo_collection='journals')
        self.mocker.result(mock_mongomanager)

        mock_mongomanager.distinct('study_areas')
        self.mocker.result(['Zap', 'Zaz', 'Spam'])

        self.mocker.replay()

        journals = list_journals_by_study_areas(mongomanager_lib=mock_mongomanager)
        self.assertEqual([j['area'] for j in journals], ['Zap', 'Zaz', 'Spam'])
    def test_non_string_study_areas_are_ignored_on_list_journals_by_study_areas(self):
        from catalog.mongomodels import list_journals_by_study_areas

        mock_mongomanager = self.mocker.mock()

        mock_mongomanager(mongo_collection='journals')
        self.mocker.result(mock_mongomanager)
        self.mocker.count(1)

        mock_mongomanager.distinct('study_areas')
        self.mocker.result([None, 'Zaz', 'Spam'])

        self.mocker.replay()

        areas = list_journals_by_study_areas(mongomanager_lib=mock_mongomanager)

        for area in areas:
            self.assertIn(area['area'], ['Zaz', 'Spam'])