blob: 281582804be423ff6b05bda4283cd925e1d204fd [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
from alluratest.tools import assert_raises
from tg import tmpl_context as c
from bson import ObjectId
from allura.lib.helpers import set_context
from allura.lib.exceptions import NoSuchProjectError, NoSuchNeighborhoodError
from allura.tests.unit import WithDatabase
from allura.tests.unit import patches
from allura.tests.unit.factories import (create_project,
create_app_config,
create_neighborhood)
@with_nose_compatibility
class TestWhenProjectIsFoundAndAppIsNot(WithDatabase):
def setUp(self):
super().setup_method(method)
self.myproject = create_project('myproject')
set_context('myproject', neighborhood=self.myproject.neighborhood)
def test_that_it_sets_the_project(self):
assert c.project is self.myproject
def test_that_it_sets_the_app_to_none(self):
assert c.app is None, c.app
@with_nose_compatibility
class TestWhenProjectIsFoundInNeighborhood(WithDatabase):
def setUp(self):
super().setup_method(method)
self.myproject = create_project('myproject')
set_context('myproject', neighborhood=self.myproject.neighborhood)
def test_that_it_sets_the_project(self):
assert c.project is self.myproject
def test_that_it_sets_the_app_to_none(self):
assert c.app is None
@with_nose_compatibility
class TestWhenAppIsFoundByID(WithDatabase):
patches = [patches.project_app_loading_patch]
def setUp(self):
super().setup_method(method)
self.myproject = create_project('myproject')
self.app_config = create_app_config(self.myproject, 'my_mounted_app')
set_context('myproject', app_config_id=self.app_config._id,
neighborhood=self.myproject.neighborhood)
def test_that_it_sets_the_app(self):
assert c.app is self.fake_app
def test_that_it_gets_the_app_by_its_app_config(self):
self.project_app_instance_function.assert_called_with(self.app_config)
@with_nose_compatibility
class TestWhenAppIsFoundByMountPoint(WithDatabase):
patches = [patches.project_app_loading_patch]
def setUp(self):
super().setup_method(method)
self.myproject = create_project('myproject')
self.app_config = create_app_config(self.myproject, 'my_mounted_app')
set_context('myproject', mount_point='my_mounted_app',
neighborhood=self.myproject.neighborhood)
def test_that_it_sets_the_app(self):
assert c.app is self.fake_app
def test_that_it_gets_the_app_by_its_mount_point(self):
self.project_app_instance_function.assert_called_with(
'my_mounted_app')
@with_nose_compatibility
class TestWhenProjectIsNotFound(WithDatabase):
def test_that_it_raises_an_exception(self):
nbhd = create_neighborhood()
assert_raises(NoSuchProjectError,
set_context,
'myproject',
neighborhood=nbhd)
def test_proper_exception_when_id_lookup(self):
create_neighborhood()
assert_raises(NoSuchProjectError,
set_context,
ObjectId(),
neighborhood=None)
@with_nose_compatibility
class TestWhenNeighborhoodIsNotFound(WithDatabase):
def test_that_it_raises_an_exception(self):
assert_raises(NoSuchNeighborhoodError,
set_context,
'myproject',
neighborhood='myneighborhood')