def test_attr_multiple(self): class T2: bar = 'baz' class T: foo = T2() m = Mock() def job1(): m.job1() return T() def job2(obj): m.job2(obj) runner = Runner() runner.add(job1) runner.add(job2, requires(attr(T, 'foo', 'bar'))) runner() compare([ call.job1(), call.job2('baz'), ], m.mock_calls)
def test_call_requires_attr(self): def foo(x): return x m = Mock() context = Context() context.add(m, 'foo') result = context.call(foo, requires(attr('foo', 'bar'))) compare(result, m.bar)
def test_call_requires_item_attr(self): def foo(x): return x m = Mock() m.bar= dict(baz='bob') context = Context() context.add(m, 'foo') result = context.call(foo, requires(item(attr('foo', 'bar'), 'baz'))) compare(result, 'bob')
def test_call_requires_attr(self): def foo(x): return x m = Mock() context = Context() context.add(m, 'foo') result = context.call(foo, requires(attr('foo', 'bar')), result_type) compare(result, m.bar)
def test_call_requires_item_attr(self): def foo(x): return x m = Mock() m.bar= dict(baz='bob') context = Context() context.add(m, 'foo') result = context.call(foo, requires(item(attr('foo', 'bar'), 'baz')), result_type) compare(result, 'bob')
def test_nested(self): class T(object): foo = dict(baz='bar') m = Mock() def job1(): m.job1() return T() def job2(obj): m.job2(obj) runner = Runner() runner.add(job1) runner.add(job2, requires(item(attr(T, 'foo'), 'baz'))) runner() compare([ call.job1(), call.job2('bar'), ], m.mock_calls)
def test_passed_missing(self): h = attr(Type1, 'foo', 'bar') compare(h.process(missing), missing)
def test_missing(self): h = attr(Type1, 'foo', 'bar') compare(h.process(object()), missing)
def test_multiple(self): h = attr(Type1, 'foo', 'bar') compare(repr(h), "Type1.foo.bar") m = Mock() compare(h.process(m), m.foo.bar)
def test_single(self): h = attr(Type1, 'foo') compare(repr(h), "Type1.foo") m = Mock() compare(h.process(m), m.foo)