def test_conjure_response(self):
        knave = Knave('Foo')

        # Use the SmartMock
        knave.conjure_response = SmartMock(return_value=None)

        knave.query('foo')
        knave.conjure_response.assert_called_once()

        knave.query('foo')
        knave.conjure_response.assert_times_called(2)

        knave.query('foo')
        knave.conjure_response.assert_times_called_with(3, 'foo')
        knave.conjure_response.assert_times_called(3)
    def test_conjure_response_with_patch(self, conjure_response):
        conjure_response.return_value = None

        knave = Knave('Foo')
        knave.query('foo')

        conjure_response.assert_called_once()

        knave.query('foo')
        conjure_response.assert_times_called(2)

        knave.query('foo')
        conjure_response.assert_times_called_with(3, 'foo')
        conjure_response.assert_times_called(3)
    def test_conjure_response_never_called(self):
        knave = Knave('Foo')
        knave.conjure_response = SmartMock(return_value=None)

        knave.conjure_response.assert_never_called()
        knave.conjure_response.assert_times_called(0)
 def test_knaves_always_lie(self):
     knave = Knave('Foo')
     self.assertEqual(False, knave.tell_truth())
    def test_knave_response(self):
        knave = Knave('Foo')
        r = knave.query('foo')

        self.assertEqual(r, u'We are of different kinds.')