Limnoria/plugins/Todo/test.py
Valentin Lorentz 63eb6672ea Revert generic 'The Limnoria Contributors' in copyright notices
This commit reverts db7ef3f025
(though it keeps the year updates)

After discussion with several people, it seems better to mention
copyright owners explicitly. eg. https://reuse.software/faq/#vcs-copyright
explains the issue of using VCSs to track copyright.

As db7ef3f025 only replaced mentions
of my name with 'The Limnoria Contributors', this commit only needs
to undo that + add one person who contributed to setup.py.
2021-10-17 09:57:55 +02:00

148 lines
6.5 KiB
Python

###
# Copyright (c) 2003-2005, Daniel DiPaolo
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions, and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions, and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the author of this software nor the name of
# contributors to this software may be used to endorse or promote products
# derived from this software without specific prior written consent.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
###
from supybot.test import *
class TodoTestCase(PluginTestCase):
plugins = ('Todo', 'User', 'Config')
_user1 = 'foo!bar@baz'
_user2 = 'bar!foo@baz'
def setUp(self):
PluginTestCase.setUp(self)
# Create a valid user to use
self.prefix = self._user2
self.assertNotError('register testy oom')
self.prefix = self._user1
self.assertNotError('register tester moo')
def testTodo(self):
# Should not error, but no tasks yet.
self.assertNotError('todo')
self.assertRegexp('todo', 'You have no tasks')
# Add a task
self.assertNotError('todo add wash my car')
self.assertRegexp('todo', '#1: wash my car')
# Check that task
self.assertRegexp('todo 1',
r'Todo for tester: wash my car \(Added .*?\)')
# Check that it lists all my tasks when given my name
self.assertResponse('todo tester',
'Todo for tester: #1: wash my car')
# Check pluralization
self.assertNotError('todo add moo')
self.assertRegexp('todo tester',
'Todos for tester: #1: wash my car and #2: moo')
# Check error
self.assertError('todo asfas')
self.assertRegexp('todo asfas',
'Error: \'asfas\' is not a valid task')
# Check priority sorting
self.assertNotError('todo setpriority 1 100')
self.assertNotError('todo setpriority 2 10')
self.assertRegexp('todo', '#2: moo and #1: wash my car')
# Check permissions
self.prefix = self._user2
self.assertError('todo tester')
self.assertNotRegexp('todo tester', 'task id')
self.prefix = self._user1
self.assertNotError('todo tester')
self.assertNotError('config plugins.Todo.allowThirdpartyReader True')
self.prefix = self._user2
self.assertNotError('todo tester')
self.prefix = self._user1
self.assertNotError('todo tester')
def testAddtodo(self):
self.assertNotError('todo add code a new plugin')
self.assertNotError('todo add --priority=1000 fix all bugs')
def testRemovetodo(self):
self.nick = 'testy'
self.prefix = self._user2
self.assertNotError('todo add do something')
self.assertNotError('todo add do something else')
self.assertNotError('todo add do something again')
self.assertNotError('todo remove 1')
self.assertNotError('todo 1')
self.nick = 'tester'
self.prefix = self._user1
self.assertNotError('todo add make something')
self.assertNotError('todo add make something else')
self.assertNotError('todo add make something again')
self.assertNotError('todo remove 1 3')
self.assertRegexp('todo 1', r'Inactive')
self.assertRegexp('todo 3', r'Inactive')
self.assertNotError('todo')
def testSearchtodo(self):
self.assertNotError('todo add task number one')
self.assertRegexp('todo search task*', '#1: task number one')
self.assertRegexp('todo search number', '#1: task number one')
self.assertNotError('todo add task number two is much longer than'
' task number one')
self.assertRegexp('todo search task*',
'#1: task number one and #2: task number two is '
'much longer than task number...')
self.assertError('todo search --regexp s/bustedregex')
self.assertRegexp('todo search --regexp m/task/',
'#1: task number one and #2: task number two is '
'much longer than task number...')
def testSetPriority(self):
self.assertNotError('todo add --priority=1 moo')
self.assertRegexp('todo 1',
r'moo, priority: 1 \(Added at .*?\)')
self.assertNotError('setpriority 1 50')
self.assertRegexp('todo 1',
r'moo, priority: 50 \(Added at .*?\)')
self.assertNotError('setpriority 1 0')
self.assertRegexp('todo 1', r'moo \(Added at .*?\)')
def testChangeTodo(self):
self.assertNotError('todo add moo')
self.assertError('todo change 1 asdfas')
self.assertError('todo change 1 m/asdfaf//')
self.assertNotError('todo change 1 s/moo/foo/')
self.assertRegexp('todo 1', r'Todo for tester: foo \(Added .*?\)')
def testActiveInactiveTodo(self):
self.assertNotError('todo add foo')
self.assertNotError('todo add bar')
self.assertRegexp('todo 1', 'Active')
self.assertRegexp('todo 2', 'Active')
self.assertNotError('todo remove 1')
self.assertRegexp('todo 1', 'Inactive')
self.assertRegexp('todo 2', 'Active')
self.assertNotError('todo remove 2')
self.assertRegexp('todo 2', 'Inactive')
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: