mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-05 06:01:46 -04:00
74 lines
3.3 KiB
Python
74 lines
3.3 KiB
Python
import pytest
|
|
import sqlalchemy
|
|
|
|
from app.main.dao import services_dao
|
|
from tests.app.main import create_test_user
|
|
|
|
|
|
def test_can_insert_and_retrieve_new_service(notifications_admin, notifications_admin_db, notify_db_session):
|
|
user = create_test_user('active')
|
|
id = services_dao.insert_new_service('testing service', user)
|
|
saved_service = services_dao.get_service_by_id(id)
|
|
assert id == saved_service.id
|
|
assert saved_service.users == [user]
|
|
assert saved_service.name == 'testing service'
|
|
|
|
|
|
def test_unrestrict_service_updates_the_service(notifications_admin, notifications_admin_db, notify_db_session):
|
|
user = create_test_user('active')
|
|
id = services_dao.insert_new_service('unrestricted service', user)
|
|
saved_service = services_dao.get_service_by_id(id)
|
|
assert saved_service.restricted is True
|
|
services_dao.unrestrict_service(id)
|
|
unrestricted_service = services_dao.get_service_by_id(id)
|
|
assert unrestricted_service.restricted is False
|
|
|
|
|
|
def test_activate_service_update_service(notifications_admin, notifications_admin_db, notify_db_session):
|
|
user = create_test_user('active')
|
|
id = services_dao.insert_new_service('activated service', user)
|
|
service = services_dao.get_service_by_id(id)
|
|
assert service.active is False
|
|
services_dao.activate_service(id)
|
|
activated_service = services_dao.get_service_by_id(id)
|
|
assert activated_service.active is True
|
|
|
|
|
|
def test_get_service_returns_none_if_service_does_not_exist(notifications_admin,
|
|
notifications_admin_db,
|
|
notify_db_session):
|
|
service = services_dao.get_service_by_id(1)
|
|
assert service is None
|
|
|
|
|
|
def test_find_by_service_name_returns_right_service(notifications_admin,
|
|
notifications_admin_db,
|
|
notify_db_session):
|
|
user = create_test_user('active')
|
|
id = services_dao.insert_new_service('testing service', user)
|
|
another = services_dao.insert_new_service('Testing the Service', user)
|
|
found = services_dao.find_service_by_service_name('testing service')
|
|
assert found.id == id
|
|
assert found.name == 'testing service'
|
|
found_another = services_dao.find_service_by_service_name('Testing the Service')
|
|
assert found_another == services_dao.get_service_by_id(another)
|
|
|
|
|
|
def test_should_not_allow_two_services_of_the_same_name(notifications_admin, notifications_admin_db, notify_db_session):
|
|
user = create_test_user('active')
|
|
services_dao.insert_new_service('duplicate service', user)
|
|
with pytest.raises(sqlalchemy.exc.IntegrityError) as error:
|
|
services_dao.insert_new_service('duplicate service', user)
|
|
assert 'duplicate key value violates unique constraint "services_name_key' in error.value
|
|
|
|
|
|
def test_should_return_list_of_service_names(notifications_admin, notifications_admin_db, notify_db_session):
|
|
user = create_test_user('active')
|
|
services_dao.insert_new_service('first service', user)
|
|
services_dao.insert_new_service('second service', user)
|
|
services_dao.insert_new_service('third service', user)
|
|
expected = ['first service', 'second service', 'third service']
|
|
|
|
actual = services_dao.find_all_service_names()
|
|
assert actual == expected
|