| OLD | NEW | 
|    1 # This file is part of the Adblock Plus web scripts, |    1 # This file is part of the Adblock Plus web scripts, | 
|    2 # Copyright (C) 2006-2016 Eyeo GmbH |    2 # Copyright (C) 2006-2016 Eyeo GmbH | 
|    3 # |    3 # | 
|    4 # Adblock Plus is free software: you can redistribute it and/or modify |    4 # Adblock Plus is free software: you can redistribute it and/or modify | 
|    5 # it under the terms of the GNU General Public License version 3 as |    5 # it under the terms of the GNU General Public License version 3 as | 
|    6 # published by the Free Software Foundation. |    6 # published by the Free Software Foundation. | 
|    7 # |    7 # | 
|    8 # Adblock Plus is distributed in the hope that it will be useful, |    8 # Adblock Plus is distributed in the hope that it will be useful, | 
|    9 # but WITHOUT ANY WARRANTY; without even the implied warranty of |    9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|   10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |   10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
|   21 import mock |   21 import mock | 
|   22  |   22  | 
|   23 import sitescripts.notifications.parser as parser |   23 import sitescripts.notifications.parser as parser | 
|   24  |   24  | 
|   25  |   25  | 
|   26 def _create_notification_archive(name, text): |   26 def _create_notification_archive(name, text): | 
|   27     archive_stream = StringIO.StringIO() |   27     archive_stream = StringIO.StringIO() | 
|   28     file_stream = StringIO.StringIO(text) |   28     file_stream = StringIO.StringIO(text) | 
|   29     tar_info = tarfile.TarInfo(name) |   29     tar_info = tarfile.TarInfo(name) | 
|   30     tar_info.size = len(file_stream.buf) |   30     tar_info.size = len(file_stream.buf) | 
|   31     with tarfile.open(mode="w", fileobj=archive_stream) as archive: |   31     with tarfile.open(mode='w', fileobj=archive_stream) as archive: | 
|   32         archive.addfile(tar_info, file_stream) |   32         archive.addfile(tar_info, file_stream) | 
|   33     return archive_stream.getvalue() |   33     return archive_stream.getvalue() | 
|   34  |   34  | 
|   35  |   35  | 
|   36 def _format_time(time): |   36 def _format_time(time): | 
|   37     return datetime.datetime.strftime(time, "%Y-%m-%dT%H:%M") |   37     return datetime.datetime.strftime(time, '%Y-%m-%dT%H:%M') | 
|   38  |   38  | 
|   39  |   39  | 
|   40 class TestParser(unittest.TestCase): |   40 class TestParser(unittest.TestCase): | 
|   41     def setUp(self): |   41     def setUp(self): | 
|   42         self.call_patcher = mock.patch("subprocess.call") |   42         self.call_patcher = mock.patch('subprocess.call') | 
|   43         self.call_patcher.start() |   43         self.call_patcher.start() | 
|   44         self.check_output_patcher = mock.patch("subprocess.check_output") |   44         self.check_output_patcher = mock.patch('subprocess.check_output') | 
|   45         check_output_mock = self.check_output_patcher.start() |   45         check_output_mock = self.check_output_patcher.start() | 
|   46  |   46  | 
|   47         def check_output_side_effect(command): |   47         def check_output_side_effect(command): | 
|   48             if "hg" in command and "archive" in command: |   48             if 'hg' in command and 'archive' in command: | 
|   49                 return _create_notification_archive(*self.notification_to_load) |   49                 return _create_notification_archive(*self.notification_to_load) | 
|   50         check_output_mock.side_effect = check_output_side_effect |   50         check_output_mock.side_effect = check_output_side_effect | 
|   51  |   51  | 
|   52     def tearDown(self): |   52     def tearDown(self): | 
|   53         self.call_patcher.stop() |   53         self.call_patcher.stop() | 
|   54         self.check_output_patcher.stop() |   54         self.check_output_patcher.stop() | 
|   55  |   55  | 
|   56     def test_typical(self): |   56     def test_typical(self): | 
|   57         self.notification_to_load = ("1", """ |   57         self.notification_to_load = ('1', ''' | 
|   58 severity = information |   58 severity = information | 
|   59 title.en-US = The title |   59 title.en-US = The title | 
|   60 message.en-US = The message |   60 message.en-US = The message | 
|   61 """) |   61 ''') | 
|   62         notifications = parser.load_notifications() |   62         notifications = parser.load_notifications() | 
|   63         self.assertEqual(len(notifications), 1) |   63         self.assertEqual(len(notifications), 1) | 
|   64         self.assertEqual(notifications[0]["id"], "1") |   64         self.assertEqual(notifications[0]['id'], '1') | 
|   65         self.assertEqual(notifications[0]["severity"], "information") |   65         self.assertEqual(notifications[0]['severity'], 'information') | 
|   66         self.assertEqual(notifications[0]["title"]["en-US"], "The title") |   66         self.assertEqual(notifications[0]['title']['en-US'], 'The title') | 
|   67         self.assertEqual(notifications[0]["message"]["en-US"], "The message") |   67         self.assertEqual(notifications[0]['message']['en-US'], 'The message') | 
|   68         self.assertNotIn("inactive", notifications[0]) |   68         self.assertNotIn('inactive', notifications[0]) | 
|   69  |   69  | 
|   70     def test_inactive(self): |   70     def test_inactive(self): | 
|   71         self.notification_to_load = ("1", """ |   71         self.notification_to_load = ('1', ''' | 
|   72 inactive = Yes |   72 inactive = Yes | 
|   73 """) |   73 ''') | 
|   74         notifications = parser.load_notifications() |   74         notifications = parser.load_notifications() | 
|   75         self.assertEqual(len(notifications), 1) |   75         self.assertEqual(len(notifications), 1) | 
|   76         self.assertTrue(notifications[0]["inactive"]) |   76         self.assertTrue(notifications[0]['inactive']) | 
|   77         self.notification_to_load = ("1", """ |   77         self.notification_to_load = ('1', ''' | 
|   78 inactive = No |   78 inactive = No | 
|   79 """) |   79 ''') | 
|   80         notifications = parser.load_notifications() |   80         notifications = parser.load_notifications() | 
|   81         self.assertEqual(len(notifications), 1) |   81         self.assertEqual(len(notifications), 1) | 
|   82         self.assertFalse(notifications[0]["inactive"]) |   82         self.assertFalse(notifications[0]['inactive']) | 
|   83  |   83  | 
|   84     def test_in_range(self): |   84     def test_in_range(self): | 
|   85         current_time = datetime.datetime.now() |   85         current_time = datetime.datetime.now() | 
|   86         hour_delta = datetime.timedelta(hours=1) |   86         hour_delta = datetime.timedelta(hours=1) | 
|   87         start_time = current_time - hour_delta |   87         start_time = current_time - hour_delta | 
|   88         end_time = current_time + hour_delta |   88         end_time = current_time + hour_delta | 
|   89         self.notification_to_load = ("1", """ |   89         self.notification_to_load = ('1', ''' | 
|   90 start = %s |   90 start = %s | 
|   91 end = %s |   91 end = %s | 
|   92 """ % (_format_time(start_time), _format_time(end_time))) |   92 ''' % (_format_time(start_time), _format_time(end_time))) | 
|   93         notifications = parser.load_notifications() |   93         notifications = parser.load_notifications() | 
|   94         self.assertEqual(len(notifications), 1) |   94         self.assertEqual(len(notifications), 1) | 
|   95         self.assertEqual(notifications[0]["id"], "1") |   95         self.assertEqual(notifications[0]['id'], '1') | 
|   96         self.assertNotIn("inactive", notifications[0]) |   96         self.assertNotIn('inactive', notifications[0]) | 
|   97  |   97  | 
|   98     def test_after_range(self): |   98     def test_after_range(self): | 
|   99         current_time = datetime.datetime.now() |   99         current_time = datetime.datetime.now() | 
|  100         start_time = current_time - datetime.timedelta(hours=2) |  100         start_time = current_time - datetime.timedelta(hours=2) | 
|  101         end_time = current_time - datetime.timedelta(hours=1) |  101         end_time = current_time - datetime.timedelta(hours=1) | 
|  102         self.notification_to_load = ("1", """ |  102         self.notification_to_load = ('1', ''' | 
|  103 start = %s |  103 start = %s | 
|  104 end = %s |  104 end = %s | 
|  105 """ % (_format_time(start_time), _format_time(end_time))) |  105 ''' % (_format_time(start_time), _format_time(end_time))) | 
|  106         notifications = parser.load_notifications() |  106         notifications = parser.load_notifications() | 
|  107         self.assertEqual(len(notifications), 1) |  107         self.assertEqual(len(notifications), 1) | 
|  108         self.assertTrue(notifications[0]["inactive"]) |  108         self.assertTrue(notifications[0]['inactive']) | 
|  109  |  109  | 
|  110     def test_before_range(self): |  110     def test_before_range(self): | 
|  111         current_time = datetime.datetime.now() |  111         current_time = datetime.datetime.now() | 
|  112         start_time = current_time + datetime.timedelta(hours=1) |  112         start_time = current_time + datetime.timedelta(hours=1) | 
|  113         end_time = current_time + datetime.timedelta(hours=2) |  113         end_time = current_time + datetime.timedelta(hours=2) | 
|  114         self.notification_to_load = ("1", """ |  114         self.notification_to_load = ('1', ''' | 
|  115 start = %s |  115 start = %s | 
|  116 end = %s |  116 end = %s | 
|  117 """ % (_format_time(start_time), _format_time(end_time))) |  117 ''' % (_format_time(start_time), _format_time(end_time))) | 
|  118         notifications = parser.load_notifications() |  118         notifications = parser.load_notifications() | 
|  119         self.assertEqual(len(notifications), 1) |  119         self.assertEqual(len(notifications), 1) | 
|  120         self.assertTrue(notifications[0]["inactive"]) |  120         self.assertTrue(notifications[0]['inactive']) | 
|  121  |  121  | 
|  122     def test_start_and_end_not_present(self): |  122     def test_start_and_end_not_present(self): | 
|  123         current_time = datetime.datetime.now() |  123         current_time = datetime.datetime.now() | 
|  124         hour_delta = datetime.timedelta(hours=1) |  124         hour_delta = datetime.timedelta(hours=1) | 
|  125         start_time = current_time - hour_delta |  125         start_time = current_time - hour_delta | 
|  126         end_time = current_time + hour_delta |  126         end_time = current_time + hour_delta | 
|  127         self.notification_to_load = ("1", """ |  127         self.notification_to_load = ('1', ''' | 
|  128 start = %s |  128 start = %s | 
|  129 end = %s |  129 end = %s | 
|  130 """ % (_format_time(start_time), _format_time(end_time))) |  130 ''' % (_format_time(start_time), _format_time(end_time))) | 
|  131         notifications = parser.load_notifications() |  131         notifications = parser.load_notifications() | 
|  132         self.assertEqual(len(notifications), 1) |  132         self.assertEqual(len(notifications), 1) | 
|  133         self.assertNotIn("inactive", notifications[0]) |  133         self.assertNotIn('inactive', notifications[0]) | 
|  134         self.assertNotIn("start", notifications[0]) |  134         self.assertNotIn('start', notifications[0]) | 
|  135         self.assertNotIn("end", notifications[0]) |  135         self.assertNotIn('end', notifications[0]) | 
|  136  |  136  | 
|  137 if __name__ == "__main__": |  137 if __name__ == '__main__': | 
|  138     unittest.main() |  138     unittest.main() | 
| OLD | NEW |