Source code for khoros.utils.tests.test_categories

# -*- coding: utf-8 -*-
"""
:Module:            khoros.utils.tests.test_categories
:Synopsis:          This module is used by pytest to verify that the ``categories`` module functions properly
:Created By:        Jeff Shurtliff
:Last Modified:     Jeff Shurtliff
:Modified Date:     30 Sep 2022
"""

import os
import sys

import requests

from . import resources

# Define a global variable to define when the package path has been set
package_path_defined = False


[docs] def set_package_path(): """This function adds the high-level khoros directory to the sys.path list. .. versionadded:: 5.1.0 """ global package_path_defined if not package_path_defined: sys.path.insert(0, os.path.abspath('../..')) package_path_defined = True
[docs] def test_get_category_id(): """This function tests the ability to get a category ID from a URL. .. versionchanged:: 5.1.1 This function has been updated to leverage the functions in the ``resources`` module. .. versionadded:: 5.1.0 """ # Get the control data and core object control_data, khoros_object = resources.get_control_data('categories'), resources.get_core_object() # Test retrieving the category ID from an example URL category_id = khoros_object.categories.get_category_id(control_data.get('url')) assert category_id == control_data.get('id')
[docs] def test_total_count(): """This function tests the ability to retrieve the total category count. .. versionchanged:: 5.1.1 This function has been updated to leverage the functions in the ``resources`` module. .. versionadded:: 5.1.0 """ # Instantiate the core object khoros_object = resources.get_core_object() # Test retrieving the total category count total_count = khoros_object.categories.get_total_count() assert isinstance(total_count, int) and total_count > 0
[docs] def test_if_category_exists(): """This function tests if the existence of categories can be successfully determined. .. versionchanged:: 5.1.1 This function has been updated to leverage the functions in the ``resources`` module. .. versionadded:: 5.1.0 """ # Get the control data and core object control_data, khoros_object = resources.get_control_data('categories'), resources.get_core_object() # Test both methods exists_by_id = khoros_object.categories.category_exists(category_id=control_data.get('id')) exists_by_url = khoros_object.categories.category_exists(category_url=control_data.get('url')) assert exists_by_id is True and exists_by_url is True
[docs] def test_category_details(): """This function tests the retrieval of various category details. .. versionchanged:: 5.1.3 Fixed an issue with testing the retrieval of views to ensure a successful assertion. .. versionchanged:: 5.1.1 This function has been updated to leverage the functions in the ``resources`` module. .. versionadded:: 5.1.0 """ # Get the control data and core object control_data, khoros_object = resources.get_control_data('categories'), resources.get_core_object() # Test retrieval of URL url = khoros_object.categories.get_url(control_data.get('id')) assert url == control_data.get('url') # Test retrieval of title title = khoros_object.categories.get_title(control_data.get('id')) assert title == control_data.get('title') # Test retrieval of description desc = khoros_object.categories.get_description(control_data.get('id')) assert desc == control_data.get('description') # Test retrieval of get_parent_type() parent_type = khoros_object.categories.get_parent_type(control_data.get('id')) assert parent_type == control_data.get('parent_type') # Test retrieval of get_parent_id() parent_id = khoros_object.categories.get_parent_id(control_data.get('id')) assert parent_id == control_data.get('parent_id') # Test retrieval of get_parent_url() parent_url = khoros_object.categories.get_parent_url(control_data.get('id')) assert parent_url == control_data.get('parent_url') # Test retrieval of get_root_type() root_type = khoros_object.categories.get_root_type(control_data.get('id')) assert root_type == control_data.get('root_type') # Test retrieval of get_root_id() root_id = khoros_object.categories.get_root_id(control_data.get('id')) assert root_id == control_data.get('root_id') # Test retrieval of get_root_url() root_url = khoros_object.categories.get_root_url(control_data.get('id')) assert root_url == control_data.get('root_url') # Test retrieval of language language = khoros_object.categories.get_language(control_data.get('id')) assert language == control_data.get('language') # Test retrieval of hidden setting hidden = khoros_object.categories.is_hidden(control_data.get('id')) assert hidden == control_data.get('hidden') # Test retrieval of views views = khoros_object.categories.get_views(control_data.get('id')) assert isinstance(views, int) and views >= 0 # Test retrieval of friendly date enabled setting friendly_date = khoros_object.categories.friendly_date_enabled(control_data.get('id')) assert friendly_date == control_data.get('friendly_date') # TODO: Test retrieval of friendly date max age # Test retrieval of active skin active_skin = khoros_object.categories.get_active_skin(control_data.get('id')) assert active_skin == control_data.get('active_skin') # Test retrieval of depth depth = khoros_object.categories.get_depth(control_data.get('id')) assert isinstance(depth, int) # Test retrieval of position position = khoros_object.categories.get_position(control_data.get('id')) assert isinstance(position, int) # Test retrieval of get_creation_date() creation_date = khoros_object.categories.get_creation_date(control_data.get('id')) assert creation_date == control_data.get('creation_date')
[docs] def test_create_category(monkeypatch): """This function tests the ability to create a category. .. versionadded:: 5.1.2 """ # Instantiate the core object khoros_object = resources.get_core_object() # Overwrite the requests.get functionality with the mock_post() function monkeypatch.setattr(requests, 'post', resources.mock_success_post) # Make the mock API call response = khoros_object.categories.create('test-category', 'Test Category') # Verify that the API call was a success assert response['status'] == 'success'