| 12 | | @inject_dependency('load_configs', wanderer, {'__call__' : {}}) |
|---|
| 13 | | @inject_dependency('init_seed', wanderer) |
|---|
| 14 | | def test_main(): |
|---|
| | 15 | def should_call_with_param(mock, call, param_idx, assertor, message): |
|---|
| | 16 | assert str(mock.__class__) == 'mock.Mock', \ |
|---|
| | 17 | 'Wrong mock type: ' + str(mock.__class__) |
|---|
| | 18 | should_call(mock, call, "Haven't called %s: %%s" % call) |
|---|
| | 19 | param = mock.getNamedCalls(call)[0].params[param_idx] |
|---|
| | 20 | assert assertor(param), message % param |
|---|
| | 21 | |
|---|
| | 22 | |
|---|
| | 23 | class TestMain(object): |
|---|
| 16 | | wanderer.main() |
|---|
| 17 | | should_call(wanderer.load_configs, '__call__', "Haven't load configs: %s") |
|---|
| 18 | | should_call(wanderer.init_seed, '__call__', "Haven't initialized seed: %s") |
|---|
| 19 | | call = wanderer.init_seed.getNamedCalls('__call__')[0] |
|---|
| 20 | | assert len(call.params) == 1, call.params |
|---|
| 21 | | assert type(call.params[0]) == type({}), call.params[0] |
|---|
| | 25 | @inject_dependency('load_configs', wanderer, {'__call__' : { |
|---|
| | 26 | 'starturl' : 'http://some.server/page' |
|---|
| | 27 | }}) |
|---|
| | 28 | @inject_dependency('init_seed', wanderer) |
|---|
| | 29 | @inject_dependency('load_page', wanderer) |
|---|
| | 30 | def test_main(self): |
|---|
| | 31 | 'test main' |
|---|
| | 32 | wanderer.main() |
|---|
| | 33 | should_call(wanderer.load_configs, '__call__', |
|---|
| | 34 | "Haven't load configs: %s") |
|---|
| | 35 | should_call(wanderer.init_seed, '__call__', |
|---|
| | 36 | "Haven't initialized seed: %s") |
|---|
| | 37 | call = wanderer.init_seed.getNamedCalls('__call__')[0] |
|---|
| | 38 | assert len(call.params) == 1, call.params |
|---|
| | 39 | assert type(call.params[0]) == type({}), call.params[0] |
|---|
| | 40 | should_call(wanderer.load_page, '__call__', |
|---|
| | 41 | "Haven't called load_page: %s") |
|---|
| | 42 | |
|---|
| 48 | | should_call(wanderer.sys.stderr, 'write', 'Failed to log: %s') |
|---|
| 49 | | stderr_calls = wanderer.sys.stderr.getNamedCalls('write') |
|---|
| 50 | | assert stderr_calls[0].params[0].startswith( |
|---|
| 51 | | 'Failed to load config'), stderr_calls[0].params[0] |
|---|
| 52 | | should_call(wanderer.sys.exit, '__call__', 'Failed to exit: %s') |
|---|
| 53 | | exit_calls = wanderer.sys.exit.getNamedCalls('__call__') |
|---|
| 54 | | assert exit_calls[0].params[0] == 1, \ |
|---|
| 55 | | 'Wrong exit code: %s' % exit_calls[0].params |
|---|
| | 69 | should_call_with_param( |
|---|
| | 70 | wanderer.sys.stderr, 'write', 0, |
|---|
| | 71 | lambda p: p.startswith('Failed to load config'), |
|---|
| | 72 | 'Wrong error message: %s' |
|---|
| | 73 | ) |
|---|
| | 74 | should_call_with_param(wanderer.sys.exit, '__call__', 0, |
|---|
| | 75 | lambda p: p == 1, 'Wrong exit code: %s') |
|---|
| | 77 | class TestInitSeed(object): |
|---|
| | 78 | 'init_seed test' |
|---|
| | 79 | |
|---|
| | 80 | @inject_dependency('random', wanderer) |
|---|
| | 81 | def test_no_seed(self): |
|---|
| | 82 | 'no seed specified, init from current datetime' |
|---|
| | 83 | options = {} |
|---|
| | 84 | wanderer.init_seed(options) |
|---|
| | 85 | should_call_with_param(wanderer.random, 'seed', 0, |
|---|
| | 86 | lambda p: (time.time() - p) < 5, |
|---|
| | 87 | 'Wrong seed: %s') |
|---|
| | 88 | |
|---|
| | 89 | @inject_dependency('random', wanderer) |
|---|
| | 90 | def test_with_seed(self): |
|---|
| | 91 | 'seed specified' |
|---|
| | 92 | options = {'seed' : 0} |
|---|
| | 93 | wanderer.init_seed(options) |
|---|
| | 94 | should_call_with_param(wanderer.random, 'seed', 0, |
|---|
| | 95 | lambda p: p == options['seed'], |
|---|
| | 96 | 'Wrong seed: %s') |
|---|
| | 97 | |
|---|
| | 98 | |
|---|
| | 99 | class TestLoadPage(object): |
|---|
| | 100 | 'load_page tests' |
|---|
| | 101 | |
|---|
| | 102 | @inject_dependency('urllib2', wanderer) |
|---|
| | 103 | def test_connection_timeout(self): |
|---|
| | 104 | 'connection timeout' |
|---|
| | 105 | url = 'http://some.server/page' |
|---|
| | 106 | wanderer.load_page(url) |
|---|
| | 107 | should_call_with_param(wanderer.urllib2, 'urlopen', 0, |
|---|
| | 108 | lambda p: p == url, 'Wrong url opened: %s') |
|---|
| | 109 | assert 0, 'todo' |
|---|
| | 110 | |
|---|
| | 111 | |
|---|
| | 112 | |
|---|
| | 113 | |
|---|
| | 114 | |
|---|