Skip to content
Snippets Groups Projects
test_matchers.py 2.36 KiB
Newer Older
  • Learn to ignore specific revisions
  • # Copyright 2019 PrivateStorage.io, LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    """
    
    Tests for ``_zkapauthorizer.tests.matchers``.
    
    from __future__ import (
        absolute_import,
    )
    
    
    from zope.interface import (
        Interface,
        implementer,
    )
    
    from testtools import (
        TestCase,
    )
    from testtools.matchers import (
        Not,
        Is,
    )
    
    from .matchers import (
        Provides,
        returns,
    )
    
    
    class IX(Interface):
        pass
    
    
    class IY(Interface):
        pass
    
    
    
    @implementer(IX, IY)
    
    @implementer(IY)
    class Y(object):
    
        pass
    
    
    class ProvidesTests(TestCase):
        """
        Tests for ``Provides``.
        """
        def test_match(self):
            """
    
            ``Provides.match`` returns ``None`` when the given object provides all of
    
            the configured interfaces.
            """
            self.assertThat(
                Provides([IX, IY]).match(X()),
                Is(None),
            )
    
        def test_mismatch(self):
            """
            ``Provides.match`` does not return ``None`` when the given object provides
            none of the configured interfaces.
            """
            self.assertThat(
    
                Provides([IX, IY]).match(Y()),
    
                Not(Is(None)),
            )
    
    
    class ReturnsTests(TestCase):
        """
        Tests for ``returns``.
        """
        def test_match(self):
            """
            ``returns(m)`` returns a matcher that matches when the given object
            returns a value matched by ``m``.
            """
            result = object()
            self.assertThat(
                returns(Is(result)).match(lambda: result),
                Is(None),
            )
    
        def test_mismatch(self):
            """
            ``returns(m)`` returns a matcher that does not match when the given object
            returns a value not matched by ``m``.
            """
            result = object()
            other = object()
            self.assertThat(
                returns(Is(result)).match(lambda: other),
                Not(Is(None)),
            )