diff --git a/rhodecode/tests/functional/test_admin_settings.py b/rhodecode/tests/functional/test_admin_settings.py
--- a/rhodecode/tests/functional/test_admin_settings.py
+++ b/rhodecode/tests/functional/test_admin_settings.py
@@ -1,10 +1,11 @@
# -*- coding: utf-8 -*-
from rhodecode.lib.auth import get_crypt_password, check_password
-from rhodecode.model.db import User, RhodeCodeSetting
+from rhodecode.model.db import User, RhodeCodeSetting, Repository
from rhodecode.tests import *
from rhodecode.lib import helpers as h
from rhodecode.model.user import UserModel
+from rhodecode.model.scm import ScmModel
class TestAdminSettingsController(TestController):
@@ -211,3 +212,55 @@ class TestAdminSettingsController(TestCo
old_data={})._messages['username_exists']
msg = h.html_escape(msg % {'username': 'test_admin'})
response.mustcontain(u"%s" % msg)
+
+ def test_set_repo_fork_has_no_self_id(self):
+ self.log_user()
+ repo = Repository.get_by_repo_name(HG_REPO)
+ response = self.app.get(url('edit_repo', repo_name=HG_REPO))
+ opt = """""" % repo.repo_id
+ assert opt not in response.body
+
+ def test_set_fork_of_repo(self):
+ self.log_user()
+ repo = Repository.get_by_repo_name(HG_REPO)
+ repo2 = Repository.get_by_repo_name(GIT_REPO)
+ response = self.app.put(url('repo_as_fork', repo_name=HG_REPO),
+ params=dict(
+ id_fork_of=repo2.repo_id
+ ))
+ repo = Repository.get_by_repo_name(HG_REPO)
+ repo2 = Repository.get_by_repo_name(GIT_REPO)
+ self.checkSessionFlash(response,
+ 'Marked repo %s as fork of %s' % (repo.repo_name, repo2.repo_name))
+
+ assert repo.fork == repo2
+ response = response.follow()
+ # check if given repo is selected
+
+ opt = """""" % (
+ repo2.repo_id, repo2.repo_name)
+ response.mustcontain(opt)
+
+ # clean session flash
+ #response = self.app.get(url('edit_repo', repo_name=HG_REPO))
+
+ ## mark it as None
+ response = self.app.put(url('repo_as_fork', repo_name=HG_REPO),
+ params=dict(
+ id_fork_of=None
+ ))
+ repo = Repository.get_by_repo_name(HG_REPO)
+ repo2 = Repository.get_by_repo_name(GIT_REPO)
+ self.checkSessionFlash(response,
+ 'Marked repo %s as fork of %s' % (repo.repo_name, "Nothing"))
+ assert repo.fork == None
+
+ def test_set_fork_of_same_repo(self):
+ self.log_user()
+ repo = Repository.get_by_repo_name(HG_REPO)
+ response = self.app.put(url('repo_as_fork', repo_name=HG_REPO),
+ params=dict(
+ id_fork_of=repo.repo_id
+ ))
+ self.checkSessionFlash(response,
+ 'An error occurred during this operation')
\ No newline at end of file