Files @ 60335b702a00
Branch filter:

Location: kallithea/rhodecode/tests/models/test_repos.py

Mads Kiilerich
invalidation: don't create CacheInvalidation records on startup

Creating the records early gave an advantage before lightweight was introduced.
With lightweight it is no longer necessary.

The records will be created on demand anyway and there is no reason to create and
maintain them before they are used.
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()