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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# Copyright 2011 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
"""Tests for lp.testing.fixture."""
__metaclass__ = type
from textwrap import dedent
from fixtures import EnvironmentVariableFixture
from zope.component import (
adapts,
queryAdapter,
)
from zope.interface import (
implements,
Interface,
)
from canonical.testing.layers import BaseLayer
from lp.testing import TestCase
from lp.testing.fixture import (
RabbitServer,
ZopeAdapterFixture,
)
class TestRabbitServer(TestCase):
layer = BaseLayer
def test_service_config(self):
# Rabbit needs to fully isolate itself: an existing per user
# .erlange.cookie has to be ignored, and ditto bogus HOME if other
# tests fail to cleanup.
self.useFixture(EnvironmentVariableFixture('HOME', '/nonsense/value'))
# RabbitServer pokes some .ini configuration into its config.
with RabbitServer() as fixture:
expected = dedent("""\
[rabbitmq]
host: localhost:%d
userid: guest
password: guest
virtual_host: /
""" % fixture.config.port)
self.assertEqual(expected, fixture.config.service_config)
class IFoo(Interface):
pass
class IBar(Interface):
pass
class Foo:
implements(IFoo)
class Bar:
implements(IBar)
class FooToBar:
adapts(IFoo)
implements(IBar)
def __init__(self, foo):
self.foo = foo
class TestZopeAdapterFixture(TestCase):
layer = BaseLayer
def test_register_and_unregister(self):
# Entering ZopeAdapterFixture's context registers the given adapter,
# and exiting the context unregisters the adapter again.
context = Foo()
# No adapter from Foo to Bar is registered.
self.assertIs(None, queryAdapter(context, IBar))
with ZopeAdapterFixture(FooToBar):
# Now there is an adapter from Foo to Bar.
adapter = queryAdapter(context, IBar)
self.assertIsNot(None, adapter)
self.assertIsInstance(adapter, FooToBar)
# The adapter is no longer registered.
self.assertIs(None, queryAdapter(context, IBar))
|