def test_item_query(self): class Mock(SubjectSweepMonitor): SERVICE_NAME = "Mock" s1, ignore = Subject.lookup(self._db, Subject.DDC, "100", None) s2, ignore = Subject.lookup(self._db, Subject.TAG, None, "100 Years of Solitude") # By default, SubjectSweepMonitor handles every Subject # in the database. everything = Mock(self._db) eq_([s1, s2], everything.item_query().all()) # But you can tell SubjectSweepMonitor to handle only Subjects # of a certain type. dewey_monitor = Mock(self._db, subject_type=Subject.DDC) eq_([s1], dewey_monitor.item_query().all()) # You can also SubjectSweepMonitor to handle only Subjects # whose names or identifiers match a certain string. one_hundred_monitor = Mock(self._db, filter_string="100") eq_([s1, s2], one_hundred_monitor.item_query().all()) specific_tag_monitor = Mock(self._db, subject_type=Subject.TAG, filter_string="Years") eq_([s2], specific_tag_monitor.item_query().all())
def test_subject_query(self): s1, ignore = Subject.lookup(self._db, Subject.DDC, "100", None) s2, ignore = Subject.lookup(self._db, Subject.TAG, None, "100 Years of Solitude") dewey_monitor = SubjectSweepMonitor(self._db, "Test Monitor", Subject.DDC) eq_([s1], dewey_monitor.subject_query().all()) one_hundred_monitor = SubjectSweepMonitor(self._db, "Test Monitor", None, "100") eq_([s1, s2], one_hundred_monitor.subject_query().all()) specific_tag_monitor = SubjectSweepMonitor(self._db, "Test Monitor", Subject.TAG, "Years") eq_([s2], specific_tag_monitor.subject_query().all())
def __init__(self, _db=None, cmd_args=None): _db = _db or self._db args = self.parse_command_line(_db, cmd_args=cmd_args) self.identifier_type = args.identifier_type self.identifiers = args.identifiers subject_type = args.subject_type subject_identifier = args.subject_identifier subject_name = args.subject_name if not subject_name and not subject_identifier: raise ValueError( "Either subject-name or subject-identifier must be provided.") self.data_source = DataSource.lookup(_db, args.data_source) self.weight = args.weight self.subject, ignore = Subject.lookup(_db, subject_type, subject_identifier, subject_name, autocreate=args.create_subject)