You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by jo...@apache.org on 2012/10/02 21:33:32 UTC
[7/8] git commit: [#4785] ticket:163 add test for migrate-urls command
[#4785] ticket:163 add test for migrate-urls command
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/c1734727
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/c1734727
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/c1734727
Branch: refs/heads/master
Commit: c1734727edc0ebf2ec05dbeeeab2813826043b7f
Parents: aead33f
Author: Igor Bondarenko <je...@gmail.com>
Authored: Fri Sep 7 16:26:37 2012 +0300
Committer: Cory Johns <jo...@geek.net>
Committed: Tue Oct 2 15:12:31 2012 +0000
----------------------------------------------------------------------
ForgeShortUrl/forgeshorturl/tests/test_commands.py | 80 +++++++++++++++
1 files changed, 80 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c1734727/ForgeShortUrl/forgeshorturl/tests/test_commands.py
----------------------------------------------------------------------
diff --git a/ForgeShortUrl/forgeshorturl/tests/test_commands.py b/ForgeShortUrl/forgeshorturl/tests/test_commands.py
new file mode 100644
index 0000000..fe1313d
--- /dev/null
+++ b/ForgeShortUrl/forgeshorturl/tests/test_commands.py
@@ -0,0 +1,80 @@
+from alluratest.controller import setup_basic_test, setup_global_objects
+from forgeshorturl.command import migrate_urls
+from forgeshorturl.model import ShortUrl
+from allura import model as M
+from mock import patch, MagicMock, Mock
+import datetime
+import time
+
+test_config = 'test.ini#main'
+fmt = '%Y-%m-%d %H:%M'
+
+
+def setUp(self):
+ """Method called by nose before running each test"""
+ setup_basic_test()
+ setup_global_objects()
+
+
+class TableMock(MagicMock):
+
+ def _make_timestamp(self, date):
+ d = datetime.datetime.strptime(date, fmt)
+ return time.mktime(d.timetuple())
+
+ def select(self):
+ m = Mock()
+ m.execute = self.execute
+ return m
+
+ def execute(self):
+ test_urls = [
+ {
+ 'short_id': 'g',
+ 'url': 'http://google.com',
+ 'description': 'Two\nlines',
+ 'private': 'N',
+ 'create_time': self._make_timestamp('2012-09-01 10:00'),
+ 'edit_time': self._make_timestamp('2012-09-01 12:30'),
+ 'create_user': 1
+ },
+ {
+ 'short_id': 'y',
+ 'url': 'http://yahoo.com',
+ 'description': 'One line',
+ 'private': 'Y',
+ 'create_time': self._make_timestamp('2012-09-02 10:00'),
+ 'edit_time': self._make_timestamp('2012-09-02 12:30'),
+ 'create_user': 1
+ }
+ ]
+ for url in test_urls:
+ yield url
+
+
+@patch('sqlalchemy.Table', TableMock)
+def test_migrate_urls():
+ p = M.Project.query.find().first()
+ assert ShortUrl.query.find({'project_id': p._id}).count() == 0
+
+ cmd = migrate_urls.MigrateUrls('migrate-urls')
+ cmd.run([test_config, 'db_name', str(p._id)])
+ assert ShortUrl.query.find({'project_id': p._id}).count() == 2
+
+ u = ShortUrl.query.get(short_name='g')
+ assert u.url == 'http://google.com'
+ assert u.description == 'Two\nlines'
+ assert not u.private
+ assert u.created == datetime.datetime.strptime('2012-09-01 10:00', fmt)
+ assert u.last_updated == (datetime.datetime
+ .strptime('2012-09-01 12:30', fmt))
+ assert u.create_user == M.User.anonymous()._id
+
+ u = ShortUrl.query.get(short_name='y')
+ assert u.url == 'http://yahoo.com'
+ assert u.description == 'One line'
+ assert u.private
+ assert u.created == datetime.datetime.strptime('2012-09-02 10:00', fmt)
+ assert u.last_updated == (datetime.datetime
+ .strptime('2012-09-02 12:30', fmt))
+ assert u.create_user == M.User.anonymous()._id