Skip to content

Commit

Permalink
add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
gromdimon committed Apr 25, 2024
1 parent 6a063b4 commit 3a97c54
Show file tree
Hide file tree
Showing 2 changed files with 262 additions and 1 deletion.
261 changes: 261 additions & 0 deletions projectroles/tests/test_views_ajax.py
Original file line number Diff line number Diff line change
Expand Up @@ -461,6 +461,267 @@ def test_project_star(self):
self.assertEqual(star, False)


class TestSidebarContentAjaxView(
ProjectMixin, RoleAssignmentMixin, ViewTestBase
):
"""Tests for SidebarContentAjaxView"""

def setUp(self):
super().setUp()
self.category = self.make_project(
'TestCategory', PROJECT_TYPE_CATEGORY, None
)
self.owner_as_cat = self.make_assignment(
self.category, self.user, self.role_owner
)
self.project = self.make_project(
'TestProject', PROJECT_TYPE_PROJECT, self.category
)
self.owner_as = self.make_assignment(
self.project, self.user, self.role_owner
)

def test_get(self):
"""Test sidebar content retrieval"""
with self.login(self.user):
response = self.client.get(
reverse(
'projectroles:ajax_sidebar',
kwargs={'project': self.project.sodar_uuid},
)
)
self.assertEqual(response.status_code, 200)
expected = {
'links': [
{
'name': 'project-detail',
'url': f'/project/{self.project.sodar_uuid}',
'label': 'Project Overview',
'icon': 'mdi:cube',
'active': False,
},
{
'name': 'app-plugin-bgjobs',
'url': f'/bgjobs/list/{self.project.sodar_uuid}',
'label': 'Background Jobs',
'icon': 'mdi:server',
'active': False,
},
{
'name': 'app-plugin-example_project_app',
'url': f'/examples/project/{self.project.sodar_uuid}',
'label': 'Example Project App',
'icon': 'mdi:rocket-launch',
'active': False,
},
{
'name': 'app-plugin-filesfolders',
'url': f'/files/{self.project.sodar_uuid}',
'label': 'Files',
'icon': 'mdi:file',
'active': False,
},
{
'name': 'app-plugin-timeline',
'url': f'/timeline/{self.project.sodar_uuid}',
'label': 'Timeline',
'icon': 'mdi:clock-time-eight',
'active': False,
},
{
'name': 'project-roles',
'url': f'/project/members/{self.project.sodar_uuid}',
'label': 'Members',
'icon': 'mdi:account-multiple',
'active': False,
},
{
'name': 'project-update',
'url': f'/project/project/update/{self.project.sodar_uuid}',
'label': 'Update Project',
'icon': 'mdi:lead-pencil',
'active': False,
},
],
}
self.assertEqual(response.json(), expected)

def test_get_no_access(self):
"""Test sidebar content retrieval with no access"""
new_user = self.make_user('new_user')
with self.login(new_user):
response = self.client.get(
reverse(
'projectroles:ajax_sidebar',
kwargs={'project': self.project.sodar_uuid},
)
)
self.assertEqual(response.status_code, 403)


class TestUserDropdownContentAjaxView(ViewTestBase):
"""Tests for UserDropdownContentAjaxView"""

def setUp(self):
super().setUp()
self.user = self.make_user('user')
self.user.is_superuser = True
self.user.save()
self.reg_user = self.make_user('reg_user')

def test_regular_user(self):
"""Test UserDropdownContentAjaxView with regular user"""
with self.login(self.reg_user):
response = self.client.get(
reverse('projectroles:ajax_user_dropdown')
)
self.assertEqual(response.status_code, 200)
expected = {
'links': [
{
'name': 'appalerts',
'url': '/alerts/app/list',
'label': 'App Alerts',
'icon': 'mdi:alert-octagram',
'active': False,
},
{
'name': 'example_site_app',
'url': '/examples/site/example',
'label': 'Example Site App',
'icon': 'mdi:rocket-launch-outline',
'active': False,
},
{
'name': 'timeline_site',
'url': '/timeline/site',
'label': 'Site-Wide Events',
'icon': 'mdi:clock-time-eight-outline',
'active': False,
},
{
'name': 'tokens',
'url': '/tokens/',
'label': 'API Tokens',
'icon': 'mdi:key-chain-variant',
'active': False,
},
{
'name': 'userprofile',
'url': '/user/profile',
'label': 'User Profile',
'icon': 'mdi:account-details',
'active': False,
},
{
'name': 'sign-out',
'url': '/logout/',
'label': 'Logout',
'icon': 'mdi:logout-variant',
'active': False,
},
]
}
self.assertEqual(response.json(), expected)

def test_superuser(self):
"""Test UserDropdownContentAjaxView with superuser"""
with self.login(self.user):
response = self.client.get(
reverse('projectroles:ajax_user_dropdown')
)
self.assertEqual(response.status_code, 200)
expected = {
'links': [
{
'name': 'adminalerts',
'url': '/alerts/adm/list',
'label': 'Admin Alerts',
'icon': 'mdi:alert',
'active': False,
},
{
'name': 'appalerts',
'url': '/alerts/app/list',
'label': 'App Alerts',
'icon': 'mdi:alert-octagram',
'active': False,
},
{
'name': 'bgjobs_site',
'url': '/bgjobs/list',
'label': 'Site Background Jobs',
'icon': 'mdi:server',
'active': False,
},
{
'name': 'example_site_app',
'url': '/examples/site/example',
'label': 'Example Site App',
'icon': 'mdi:rocket-launch-outline',
'active': False,
},
{
'name': 'remotesites',
'url': '/project/remote/sites',
'label': 'Remote Site Access',
'icon': 'mdi:cloud-sync',
'active': False,
},
{
'name': 'siteinfo',
'url': '/siteinfo/info',
'label': 'Site Info',
'icon': 'mdi:bar-chart',
'active': False,
},
{
'name': 'timeline_site',
'url': '/timeline/site',
'label': 'Site-Wide Events',
'icon': 'mdi:clock-time-eight-outline',
'active': False,
},
{
'name': 'timeline_site_admin',
'url': '/timeline/site/all',
'label': 'All Timeline Events',
'icon': 'mdi:web-clock',
'active': False,
},
{
'name': 'tokens',
'url': '/tokens/',
'label': 'API Tokens',
'icon': 'mdi:key-chain-variant',
'active': False,
},
{
'name': 'userprofile',
'url': '/user/profile',
'label': 'User Profile',
'icon': 'mdi:account-details',
'active': False,
},
{
'name': 'admin',
'url': '/admin/',
'label': 'Django Admin',
'icon': 'mdi:cogs',
'active': False,
},
{
'name': 'sign-out',
'url': '/logout/',
'label': 'Logout',
'icon': 'mdi:logout-variant',
'active': False,
},
]
}
self.assertEqual(response.json(), expected)


class TestCurrentUserRetrieveAjaxView(SerializedObjectMixin, TestCase):
"""Tests for CurrentUserRetrieveAjaxView"""

Expand Down
2 changes: 1 addition & 1 deletion projectroles/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@
name='ajax_sidebar',
),
path(
route='ajax/dropdown/<uuid:project>',
route='ajax/dropdown',
view=views_ajax.UserDropdownContentAjaxView.as_view(),
name='ajax_user_dropdown',
),
Expand Down

0 comments on commit 3a97c54

Please sign in to comment.