def test_no_item_record(self): # can we get location from holdings record when no item exists? a = get_availability('12967951') self.assertEqual(a['offers'][0]['availability'], 'http://schema.org/InStock') self.assertEqual(a['offers'][0]['availabilityAtOrFrom'], 'Lib Special Collections')
def availability(request): """ API call for getting the availability for a particular bibid. """ bibid = request.GET.get('bibid') if not bibid: raise Http404 return HttpResponse( json.dumps(db.get_availability(bibid), indent=2), content_type='application/json' )
def test_availability_georgetown(self): a = get_availability('b10086948') self.assertEqual(a['wrlc'], '4218864') self.assertEqual(a['summon'], 'b10086948') self.assertEqual(len(a['offers']), 1) o = a['offers'][0] self.assertEqual(o['@type'], 'Offer') self.assertEqual(o['seller'], 'Georgetown') self.assertEqual(o['sku'], 'PR6019.O9 F45 1959') self.assertTrue(o['availability'] in availability)
def test_availability_georgemason(self): a = get_availability('m55883') self.assertEqual(a['wrlc'], '1560207') self.assertEqual(a['summon'], 'm55883') self.assertEqual(len(a['offers']), 1) o = a['offers'][0] self.assertEqual(o['@type'], 'Offer') self.assertEqual(o['seller'], 'George Mason') self.assertEqual(o['sku'], 'PR6019.O9 F5') self.assertTrue(o['availability'] in availability)
def test_availability(self): a = get_availability('5769326') self.assertEqual(a['wrlc'], '5769326') self.assertEqual(len(a['offers']), 1) o = a['offers'][0] self.assertEqual(o['@type'], 'Offer') self.assertEqual(o['seller'], 'George Washington') self.assertEqual(o['availabilityAtOrFrom'].lower(), 'gelman stacks') self.assertEqual(o['sku'], 'PR6019.O9 F5 1999') self.assertTrue(o['availability'] in availability) self.assertEqual(o['serialNumber'], '3927007') self.assertTrue(o['description'])
def test_temp_location(self): # get a bib_id for something that's in temp location to make sure # that availabilityAtOrFrom uses that instead of the permanent location q = """ SELECT bib_id, item.item_id FROM bib_mfhd, mfhd_item, item WHERE ROWNUM = 1 AND item.temp_location = 682 AND item.item_id = mfhd_item.item_id AND mfhd_item.mfhd_id = bib_mfhd.mfhd_id """ bib_id, item_id = _fetch_one(q) a = get_availability(str(bib_id)) for o in a['offers']: if 'serialNumber' in o and o['serialNumber'] == str(item_id): self.assertEqual(o['availabilityAtOrFrom'].lower(), 'wrlc shared collections facility')
def test_temp_location(self): # get a bib_id for something that's in temp location to make sure # that availabilityAtOrFrom uses that instead of the permanent location q = """ SELECT bib_id, item.item_id FROM bib_mfhd, mfhd_item, item WHERE ROWNUM = 1 AND item.temp_location = 682 AND item.item_id = mfhd_item.item_id AND mfhd_item.mfhd_id = bib_mfhd.mfhd_id """ bib_id, item_id = _fetch_one(q) a = get_availability(str(bib_id)) for o in a['offers']: if 'serialNumber' in o and o['serialNumber'] == str(item_id): self.assertEqual( o['availabilityAtOrFrom'].lower(), 'wrlc shared collections facility' )
def test_checked_out(self): # get a bib_id for something that's checked out # 2382-12-31 due dates are indicators that the item # is in offsite storage q = """ SELECT bib_id, circ_transactions.circ_transaction_id FROM bib_mfhd, mfhd_item, item, circ_transactions WHERE ROWNUM = 1 AND circ_transactions.charge_due_date IS NOT NULL AND circ_transactions.charge_due_date < TO_DATE('2382-12-31', 'YYYY-MM-DD') AND circ_transactions.item_id = item.item_id AND item.item_id = mfhd_item.item_id AND mfhd_item.mfhd_id = bib_mfhd.mfhd_id """ bib_id, circ_id = _fetch_one(q) a = get_availability(str(bib_id)) found = False for offer in a['offers']: if 'availabilityStarts' in offer: found = True self.assertTrue(found)
def test_availability_no_bib_record(self): # this bibid is a legit georgetown id but we have no bib record a = get_availability('b29950983') self.assertEqual(a['offers'][0]['seller'], 'Georgetown')
def handle(self, *args, **options): if len(args) >= 1: bibid = args[0] print json.dumps(db.get_availability(bibid), indent=2)