def test_append_new_labels(self): gbl = Globals() assert_equal(gbl.append_new_labels([], ['tag1']), ['tag1']) assert_equal( gbl.append_new_labels(['tag1', 'tag2'], ['tag2']), ['tag1', 'tag2']) assert_equal(gbl.append_new_labels( ['tag1', 'tag2'], ['tag3']), ['tag1', 'tag2', 'tag3']) assert_equal(gbl.append_new_labels( ['tag1', 'tag2', 'tag3'], ['tag2']), ['tag1', 'tag2', 'tag3'])
def test_update_bin_counts(self, mock_dt, mock_search, mock_bin): now = datetime.utcnow().replace(microsecond=0) mock_dt.utcnow.return_value = now gbl = Globals() gbl._bin_counts_invalidated = now - timedelta(minutes=1) mock_bin.query.find.return_value = [mock.Mock(summary="foo", terms="bar")] mock_search().hits = 5 assert_equal(gbl._bin_counts_data, []) # sanity pre-check gbl.update_bin_counts() assert mock_bin.query.find.called mock_search.assert_called_with(forgetracker.model.Ticket, "bar", rows=0, short_timeout=False) assert_equal(gbl._bin_counts_data, [{"summary": "foo", "hits": 5}]) assert_equal(gbl._bin_counts_expire, now + timedelta(minutes=60)) assert_equal(gbl._bin_counts_invalidated, None)
def test_update_bin_counts(self, mock_dt, mock_search, mock_bin): now = datetime.utcnow().replace(microsecond=0) mock_dt.utcnow.return_value = now gbl = Globals() gbl._bin_counts_invalidated = now - timedelta(minutes=1) mock_bin.query.find.return_value = [ mock.Mock(summary='foo', terms='bar') ] mock_search().hits = 5 assert_equal(gbl._bin_counts_data, []) # sanity pre-check gbl.update_bin_counts() assert mock_bin.query.find.called mock_search.assert_called_with(forgetracker.model.Ticket, 'bar', rows=0, short_timeout=False) assert_equal(gbl._bin_counts_data, [{'summary': 'foo', 'hits': 5}]) assert_equal(gbl._bin_counts_expire, now + timedelta(minutes=60)) assert_equal(gbl._bin_counts_invalidated, None)
def test_invalidate_bin_counts(self, mock_dt, mock_task): now = datetime.utcnow().replace(microsecond=0) mock_dt.utcnow.return_value = now gbl = Globals() # invalidated recently, don't dog-pile gbl._bin_counts_invalidated = now - timedelta(minutes=1) gbl.invalidate_bin_counts() assert not mock_task.post.called # invalidated too long ago, call again gbl._bin_counts_invalidated = now - timedelta(minutes=6) gbl.invalidate_bin_counts() assert mock_task.post.called assert_equal(gbl._bin_counts_invalidated, now) # never invalidated mock_task.reset_mock() gbl._bin_counts_invalidated = None gbl.invalidate_bin_counts() assert mock_task.post.called assert_equal(gbl._bin_counts_invalidated, now)
def test_append_new_labels(self): gbl = Globals() assert_equal(gbl.append_new_labels([], ['tag1']), ['tag1']) assert_equal(gbl.append_new_labels(['tag1', 'tag2'], ['tag2']), ['tag1', 'tag2']) assert_equal(gbl.append_new_labels(['tag1', 'tag2'], ['tag3']), ['tag1', 'tag2', 'tag3']) assert_equal(gbl.append_new_labels(['tag1', 'tag2', 'tag3'], ['tag2']), ['tag1', 'tag2', 'tag3'])
def test_bin_count(self, mock_dt): now = datetime.utcnow() mock_dt.utcnow.return_value = now gbl = Globals() gbl._bin_counts_data = [{'summary': 'foo', 'hits': 1}, {'summary': 'bar', 'hits': 2}] gbl.invalidate_bin_counts = mock.Mock() # not expired, finds bin gbl._bin_counts_expire = now + timedelta(minutes=5) bin = gbl.bin_count('bar') assert_equal(bin['hits'], 2) assert not gbl.invalidate_bin_counts.called # expired, returns value for missing bin gbl._bin_counts_expire = now - timedelta(minutes=5) bin = gbl.bin_count('qux') assert_equal(bin['hits'], 0) assert gbl.invalidate_bin_counts.called
def test_bin_count(self, mock_dt): now = datetime.utcnow() mock_dt.utcnow.return_value = now gbl = Globals() gbl._bin_counts_data = [{"summary": "foo", "hits": 1}, {"summary": "bar", "hits": 2}] gbl.invalidate_bin_counts = mock.Mock() # not expired, finds bin gbl._bin_counts_expire = now + timedelta(minutes=5) bin = gbl.bin_count("bar") assert_equal(bin["hits"], 2) assert not gbl.invalidate_bin_counts.called # expired, returns value for missing bin gbl._bin_counts_expire = now - timedelta(minutes=5) bin = gbl.bin_count("qux") assert_equal(bin["hits"], 0) assert gbl.invalidate_bin_counts.called
def test_bin_count(self, mock_dt): now = datetime.utcnow() mock_dt.utcnow.return_value = now gbl = Globals() gbl._bin_counts_data = [{ 'summary': 'foo', 'hits': 1 }, { 'summary': 'bar', 'hits': 2 }] gbl.invalidate_bin_counts = mock.Mock() # not expired, finds bin gbl._bin_counts_expire = now + timedelta(minutes=5) bin = gbl.bin_count('bar') assert_equal(bin['hits'], 2) assert not gbl.invalidate_bin_counts.called # expired, returns value for missing bin gbl._bin_counts_expire = now - timedelta(minutes=5) bin = gbl.bin_count('qux') assert_equal(bin['hits'], 0) assert gbl.invalidate_bin_counts.called
def test_bin_count(self, mock_dt): now = datetime.utcnow() mock_dt.utcnow.return_value = now gbl = Globals() gbl._bin_counts_data = [{ 'summary': 'foo', 'hits': 1 }, { 'summary': 'bar', 'hits': 2 }] gbl.invalidate_bin_counts = mock.Mock() # not expired, finds bin gbl.invalidate_bin_counts.reset_mock() gbl._bin_counts_expire = now + timedelta(minutes=5) bin = gbl.bin_count('bar') assert_equal(bin['hits'], 2) assert not gbl.invalidate_bin_counts.called # expired, returns value for missing bin gbl.invalidate_bin_counts.reset_mock() gbl._bin_counts_expire = now - timedelta(minutes=5) bin = gbl.bin_count('qux') assert_equal(bin['hits'], 0) assert gbl.invalidate_bin_counts.called # config set to no expiration gbl.invalidate_bin_counts.reset_mock() with mock.patch.dict('forgetracker.model.ticket.tg_config', **{'forgetracker.bin_cache_expire': 0}): gbl._bin_counts_expire = now - timedelta(minutes=5) bin = gbl.bin_count('qux') assert not gbl.invalidate_bin_counts.called # no expire value (e.g. from previously having config set to no expirations) gbl.invalidate_bin_counts.reset_mock() gbl._bin_counts_expire = None bin = gbl.bin_count('qux') assert_equal(bin['hits'], 0) assert gbl.invalidate_bin_counts.called
def test_next_ticket_number_increments(self): gl = Globals() assert_equal(gl.next_ticket_num(), 1) assert_equal(gl.next_ticket_num(), 2)
def test_append_new_labels(self): gbl = Globals() assert_equal(gbl.append_new_labels([], ["tag1"]), ["tag1"]) assert_equal(gbl.append_new_labels(["tag1", "tag2"], ["tag2"]), ["tag1", "tag2"]) assert_equal(gbl.append_new_labels(["tag1", "tag2"], ["tag3"]), ["tag1", "tag2", "tag3"]) assert_equal(gbl.append_new_labels(["tag1", "tag2", "tag3"], ["tag2"]), ["tag1", "tag2", "tag3"])
def test_next_ticket_number_increments(self): assert Globals.next_ticket_num() == 1 assert Globals.next_ticket_num() == 2
def test_ticket_numbers_are_independent(self): assert Globals.next_ticket_num() == 1 h.set_context('test', 'doc-bugs', neighborhood='Projects') assert Globals.next_ticket_num() == 1