Exemplo n.º 1
0
    def test_last_update_order_facet(self):
        facets = CrawlableFacets.default(self._default_library)

        w1 = self._work(with_license_pool=True)
        w2 = self._work(with_license_pool=True)
        now = datetime.datetime.utcnow()
        w1.last_update_time = now - datetime.timedelta(days=4)
        w2.last_update_time = now - datetime.timedelta(days=3)
        self.add_to_materialized_view([w1, w2])

        from core.model import MaterializedWorkWithGenre as work_model
        qu = self._db.query(work_model)
        qu = facets.apply(self._db, qu)
        # w2 is first because it was updated more recently.
        eq_([w2.id, w1.id], [mw.works_id for mw in qu])

        list, ignore = self._customlist(num_entries=0)
        e2, ignore = list.add_entry(w2)
        e1, ignore = list.add_entry(w1)
        self._db.flush()
        SessionManager.refresh_materialized_views(self._db)
        qu = self._db.query(work_model)
        qu = facets.apply(self._db, qu)
        # w1 is first because it was added to the list more recently.
        eq_([w1.id, w2.id], [mw.works_id for mw in qu])
Exemplo n.º 2
0
    def test_last_update_order_facet(self):
        facets = CrawlableFacets.default(self._default_library)

        w1 = self._work(with_license_pool=True)
        w2 = self._work(with_license_pool=True)
        now = datetime.datetime.utcnow()
        w1.last_update_time = now - datetime.timedelta(days=4)
        w2.last_update_time = now - datetime.timedelta(days=3)
        self.add_to_materialized_view([w1, w2])

        from core.model import MaterializedWorkWithGenre as work_model
        qu = self._db.query(work_model)
        qu = facets.apply(self._db, qu)
        # w2 is first because it was updated more recently.
        eq_([w2.id, w1.id], [mw.works_id for mw in qu])

        list, ignore = self._customlist(num_entries=0)
        e2, ignore = list.add_entry(w2)
        e1, ignore = list.add_entry(w1)
        self._db.flush()
        SessionManager.refresh_materialized_views(self._db)
        qu = self._db.query(work_model)
        qu = facets.apply(self._db, qu)
        # w1 is first because it was added to the list more recently.
        eq_([w1.id, w2.id], [mw.works_id for mw in qu])
Exemplo n.º 3
0
    def test_default(self):
        facets = CrawlableFacets.default(self._default_library)
        assert CrawlableFacets.COLLECTION_FULL == facets.collection
        assert CrawlableFacets.AVAILABLE_ALL == facets.availability
        assert CrawlableFacets.ORDER_LAST_UPDATE == facets.order
        assert False == facets.order_ascending

        # There's only one enabled value for each facet group.
        for group in facets.enabled_facets:
            assert 1 == len(group)
Exemplo n.º 4
0
 def test_default(self):
     facets = CrawlableFacets.default(self._default_library)
     eq_(CrawlableFacets.COLLECTION_FULL, facets.collection)
     eq_(CrawlableFacets.AVAILABLE_ALL, facets.availability)
     eq_(CrawlableFacets.ORDER_LAST_UPDATE, facets.order)
     eq_(False, facets.order_ascending)
     enabled_facets = facets.facets_enabled_at_init
     # There's only one enabled facets for each facet group.
     for group in enabled_facets.itervalues():
         eq_(1, len(group))
Exemplo n.º 5
0
 def test_default(self):
     facets = CrawlableFacets.default(self._default_library)
     eq_(CrawlableFacets.COLLECTION_FULL, facets.collection)
     eq_(CrawlableFacets.AVAILABLE_ALL, facets.availability)
     eq_(CrawlableFacets.ORDER_LAST_UPDATE, facets.order)
     eq_(False, facets.order_ascending)
     enabled_facets = facets.facets_enabled_at_init
     # There's only one enabled facets for each facet group.
     for group in enabled_facets.itervalues():
         eq_(1, len(group))
Exemplo n.º 6
0
    def test_order_by(self):
        """Crawlable feeds are always ordered by time updated and then by
        collection ID and work ID.
        """
        from core.model import MaterializedWorkWithGenre as mw
        order_by, distinct = CrawlableFacets.order_by()

        updated, collection_id, works_id = distinct
        expect_func = 'greatest(mv_works_for_lanes.availability_time, mv_works_for_lanes.first_appearance, mv_works_for_lanes.last_update_time)'
        eq_(expect_func, str(updated))
        eq_(mw.collection_id, collection_id)
        eq_(mw.works_id, works_id)

        updated_desc, collection_id, works_id = order_by
        eq_(expect_func + ' DESC', str(updated_desc))
        eq_(mw.collection_id, collection_id)
        eq_(mw.works_id, works_id)
Exemplo n.º 7
0
    def test_order_by(self):
        """Crawlable feeds are always ordered by time updated and then by
        collection ID and work ID.
        """
        from core.model import MaterializedWorkWithGenre as mw
        order_by, distinct = CrawlableFacets.order_by()

        updated, collection_id, works_id = distinct
        expect_func = 'greatest(mv_works_for_lanes.availability_time, mv_works_for_lanes.first_appearance, mv_works_for_lanes.last_update_time)'
        eq_(expect_func, str(updated))
        eq_(mw.collection_id, collection_id)
        eq_(mw.works_id, works_id)

        updated_desc, collection_id, works_id = order_by
        eq_(expect_func + ' DESC', str(updated_desc))
        eq_(mw.collection_id, collection_id)
        eq_(mw.works_id, works_id)