aboutsummaryrefslogtreecommitdiff
path: root/rhodecode/tests
diff options
context:
space:
mode:
authorMarcin Kuzminski <marcin@python-works.com>2013-03-31 17:01:47 +0200
committerMarcin Kuzminski <marcin@python-works.com>2013-03-31 17:01:47 +0200
commitae8af0b062f22c499f8262a3aea27f3f10939ba7 (patch)
tree760e2642a91c786877140ad736bc45813789143f /rhodecode/tests
parentb2d6e3bf2321f4b3e4791bbbcc0cfcfdaa9318c3 (diff)
added new fixture classes
and detaching/deleting forks tests --HG-- branch : beta
Diffstat (limited to 'rhodecode/tests')
-rw-r--r--rhodecode/tests/fixture.py43
-rw-r--r--rhodecode/tests/models/test_repos.py79
2 files changed, 122 insertions, 0 deletions
diff --git a/rhodecode/tests/fixture.py b/rhodecode/tests/fixture.py
new file mode 100644
index 00000000..4b7d63e8
--- /dev/null
+++ b/rhodecode/tests/fixture.py
@@ -0,0 +1,43 @@
+"""
+Helpers for fixture generation
+"""
+import os
+import unittest
+from rhodecode.tests import *
+from rhodecode.model.db import Repository, User
+from rhodecode.model.meta import Session
+from rhodecode.model.repo import RepoModel
+
+
+class Fixture(object):
+
+ def __init__(self):
+ pass
+
+ def create_repo(self, name, **kwargs):
+ form_data = _get_repo_create_params(repo_name=name, **kwargs)
+ cur_user = User.get_by_username(TEST_USER_ADMIN_LOGIN)
+ RepoModel().create(form_data, cur_user)
+ return Repository.get_by_repo_name(name)
+
+ def create_fork(self, repo_to_fork, fork_name, **kwargs):
+ repo_to_fork = Repository.get_by_repo_name(repo_to_fork)
+ vcs_type = repo_to_fork.repo_type
+
+ form_data = dict(
+ repo_name=fork_name,
+ repo_name_full=fork_name,
+ repo_group=None,
+ repo_type=vcs_type,
+ description='',
+ private=False,
+ copy_permissions=False,
+ landing_rev='tip',
+ update_after_clone=False,
+ fork_parent_id=repo_to_fork,
+ )
+ cur_user = kwargs.get('cur_user', TEST_USER_ADMIN_LOGIN)
+ RepoModel().create_fork(form_data, cur_user=cur_user)
+
+ Session().commit()
+ return Repository.get_by_repo_name(fork_name)
diff --git a/rhodecode/tests/models/test_repos.py b/rhodecode/tests/models/test_repos.py
new file mode 100644
index 00000000..69ca6ceb
--- /dev/null
+++ b/rhodecode/tests/models/test_repos.py
@@ -0,0 +1,79 @@
+import os
+import unittest
+from rhodecode.tests import *
+
+from rhodecode.model.meta import Session
+from rhodecode.tests.fixture import Fixture
+from rhodecode.model.repo import RepoModel
+from rhodecode.model.db import Repository
+from rhodecode.lib.exceptions import AttachedForksError
+
+fixture = Fixture()
+
+
+class TestRepos(unittest.TestCase):
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ Session.remove()
+
+ def test_remove_repo(self):
+ repo = fixture.create_repo(name='test-repo-1')
+ Session().commit()
+
+ RepoModel().delete(repo=repo)
+ Session().commit()
+
+ self.assertEqual(None, Repository.get_by_repo_name(repo_name='test-repo-1'))
+
+ def test_remove_repo_repo_raises_exc_when_attached_forks(self):
+ repo = fixture.create_repo(name='test-repo-1')
+ Session().commit()
+
+ fixture.create_fork(repo.repo_name, 'test-repo-fork-1')
+ Session().commit()
+
+ self.assertRaises(AttachedForksError, lambda: RepoModel().delete(repo=repo))
+
+ def test_remove_repo_delete_forks(self):
+ repo = fixture.create_repo(name='test-repo-1')
+ Session().commit()
+
+ fork = fixture.create_fork(repo.repo_name, 'test-repo-fork-1')
+ Session().commit()
+
+ #fork of fork
+ fixture.create_fork(fork.repo_name, 'test-repo-fork-fork-1')
+ Session().commit()
+
+ RepoModel().delete(repo=repo, forks='delete')
+ Session().commit()
+
+ self.assertEqual(None, Repository.get_by_repo_name(repo_name='test-repo-1'))
+ self.assertEqual(None, Repository.get_by_repo_name(repo_name='test-repo-fork-1'))
+ self.assertEqual(None, Repository.get_by_repo_name(repo_name='test-repo-fork-fork-1'))
+
+ def test_remove_repo_detach_forks(self):
+ repo = fixture.create_repo(name='test-repo-1')
+ Session().commit()
+
+ fork = fixture.create_fork(repo.repo_name, 'test-repo-fork-1')
+ Session().commit()
+
+ #fork of fork
+ fixture.create_fork(fork.repo_name, 'test-repo-fork-fork-1')
+ Session().commit()
+
+ RepoModel().delete(repo=repo, forks='detach')
+ Session().commit()
+
+ try:
+ self.assertEqual(None, Repository.get_by_repo_name(repo_name='test-repo-1'))
+ self.assertNotEqual(None, Repository.get_by_repo_name(repo_name='test-repo-fork-1'))
+ self.assertNotEqual(None, Repository.get_by_repo_name(repo_name='test-repo-fork-fork-1'))
+ finally:
+ RepoModel().delete(repo='test-repo-fork-fork-1')
+ RepoModel().delete(repo='test-repo-fork-1')
+ Session().commit()