Author: jure Date: Mon Feb 18 15:14:09 2013 New Revision: 1447303 URL: http://svn.apache.org/r1447303 Log: #355, test cases for ticket notifications, patch t355_r1444754_trac_test_ticket_notification.diff applied (from Olemis)
Added: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/ticket/notification.py Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/env.py Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/env.py URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/env.py?rev=1447303&r1=1447302&r2=1447303&view=diff ============================================================================== --- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/env.py (original) +++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/env.py Mon Feb 18 15:14:09 2013 @@ -45,6 +45,13 @@ from multiproduct.api import MultiProduc from multiproduct.env import ProductEnvironment from multiproduct.model import Product +class ProductEnvironmentStub(ProductEnvironment): + r"""A product environment slightly tweaked for testing purposes + """ + def get_known_users(self, cnx=None): + return self.known_users + + # FIXME: Subclass TestCase explictly ? class MultiproductTestCase(unittest.TestCase): r"""Mixin providing access to multi-product testing extensions. Added: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/ticket/notification.py URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/ticket/notification.py?rev=1447303&view=auto ============================================================================== --- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/ticket/notification.py (added) +++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/ticket/notification.py Mon Feb 18 15:14:09 2013 @@ -0,0 +1,69 @@ + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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 Apache(TM) Bloodhound's tickets notifications +in product environments""" + +import unittest + +from trac.tests.notification import SMTPThreadedServer +from trac.ticket.tests import notification + +from tests.env import ProductEnvironmentStub as ProductEnvironment +from tests.env import MultiproductTestCase + +class ProductNotificationTestCase(notification.NotificationTestCase, + MultiproductTestCase): + + @property + def env(self): + env = getattr(self, '_env', None) + if env is None: + self.global_env = self._setup_test_env() + self._upgrade_mp(self.global_env) + self._setup_test_log(self.global_env) + self._load_product_from_data(self.global_env, self.default_product) + self._env = env = ProductEnvironment( + self.global_env, self.default_product) + self._load_default_data(self._env) + return env + + @env.setter + def env(self, value): + pass + + def tearDown(self): + notification.notifysuite.tear_down() + self.global_env.reset_db() + +class ProductNotificationTestSuite(notification.NotificationTestSuite): + def __init__(self): + """Start the local SMTP test server""" + notification.NotificationTestSuite.__init__(self) + self._tests = [] + self.addTest(unittest.makeSuite(ProductNotificationTestCase, 'test')) + + +def test_suite(): + if not notification.notifysuite: + notification.notifysuite = ProductNotificationTestSuite() + return notification.notifysuite + +if __name__ == '__main__': + unittest.TextTestRunner(verbosity=2).run(test_suite()) +