File: test_sleep.py

package info (click to toggle)
mwclient 0.11.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 452 kB
  • sloc: python: 2,816; makefile: 148; sh: 5
file content (57 lines) | stat: -rw-r--r-- 1,538 bytes parent folder | download
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import unittest
import time
import pytest
from mwclient.sleep import Sleepers
from mwclient.sleep import Sleeper
from mwclient.errors import MaximumRetriesExceeded

import unittest.mock as mock

if __name__ == "__main__":
    print()
    print("Note: Running in stand-alone mode. Consult the README")
    print("      (section 'Contributing') for advice on running tests.")
    print()


class TestSleepers(unittest.TestCase):

    def setUp(self):
        self.sleep = mock.patch('time.sleep').start()
        self.max_retries = 10
        self.sleepers = Sleepers(self.max_retries, 30)

    def tearDown(self):
        mock.patch.stopall()

    def test_make(self):
        sleeper = self.sleepers.make()
        assert type(sleeper) == Sleeper
        assert sleeper.retries == 0

    def test_sleep(self):
        sleeper = self.sleepers.make()
        sleeper.sleep()
        sleeper.sleep()
        self.sleep.assert_has_calls([mock.call(0), mock.call(30)])

    def test_min_time(self):
        sleeper = self.sleepers.make()
        sleeper.sleep(5)
        self.sleep.assert_has_calls([mock.call(5)])

    def test_retries_count(self):
        sleeper = self.sleepers.make()
        sleeper.sleep()
        sleeper.sleep()
        assert sleeper.retries == 2

    def test_max_retries(self):
        sleeper = self.sleepers.make()
        for x in range(self.max_retries):
            sleeper.sleep()
        with pytest.raises(MaximumRetriesExceeded):
            sleeper.sleep()

if __name__ == '__main__':
    unittest.main()