File size: 1,773 Bytes
4ee7c6a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import unittest
from unittest.mock import patch

import app
import usage


class UsageTests(unittest.TestCase):
    def test_failed_audit_counts_start_and_failure_without_input(self):
        with patch('app.track') as track, patch('app.quick_grade', side_effect=ValueError('limit')):
            app.run('private/example')
        self.assertEqual([c.args for c in track.call_args_list], [('hf_audit_started',), ('hf_audit_failed',)])

    def test_success_counts_only_after_result_is_rendered(self):
        with patch('app.track') as track, patch('app.quick_grade', return_value={}), \
             patch('app.card_payload', return_value={'markdown': 'private card'}), patch('app.render', return_value='result'):
            app.run('org/example')
        self.assertEqual([c.args for c in track.call_args_list], [('hf_audit_started',), ('hf_audit_completed',)])

    def test_invalid_syntax_does_not_count_as_an_audit(self):
        with patch('app.track') as track:
            app.run('')
        track.assert_not_called()

    def test_transport_sends_event_only_and_failure_is_harmless(self):
        with patch('usage.requests.post', side_effect=RuntimeError('offline')) as post:
            usage._send('hf_audit_completed')
        self.assertEqual(post.call_args.kwargs['json'], {'event': 'hf_audit_completed'})
        self.assertEqual(post.call_args.kwargs['timeout'], 2)

    def test_local_and_unknown_events_are_not_sent(self):
        with patch('usage.ENABLED', False), patch('usage._pending.put_nowait') as send:
            usage.track('hf_audit_started')
        send.assert_not_called()
        with patch('usage.ENABLED', True), patch('usage._pending.put_nowait') as send:
            usage.track('report_ingested')
        send.assert_not_called()