Mercurial > kallithea
diff rhodecode/tests/models/test_repos.py @ 3642:749dfd6b6e95 beta
added new fixture classes
and detaching/deleting forks
tests
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 31 Mar 2013 17:01:47 +0200 |
parents | |
children | 5067d6e826a5 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rhodecode/tests/models/test_repos.py Sun Mar 31 17:01:47 2013 +0200 @@ -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()