# coding: utf-8

"""
    Test Template

     ## Overview  Test templates allow you create a set of tests, alert rules, dashboards, and labels from a single template configuration file.    The following applies to test templates:  * You can create tests for monitoring common services and applications such as Microsoft 365, Webex, and others using a predefined set of certified templates.  * Test templates reduce the time and complexity of creating tests for common SaaS or other services by providing a set of templates for creating tests, alert rules, and other assets within the ThousandEyes platform.  * Templates created with an account group in a particular organization are visible to all account groups in that organization, provided they have the `View Test Templates` permission.  * Credentials (usernames, passwords, tokens, etc.) can be included in a test template only as placeholders whose value is provided by user input when the template is deployed. Creating or updating a test template that contains a credentials field in plain text will result in a bad request (HTTP 400).  * The schemas to use for `labels`, `tests`, `alertRules` and `dashboards` are defined at https://developer.thousandeyes.com/v7/.  * To support referencing an asset from another asset of a different type (for example, defining the `testId` field of an `alertRule` by referencing the ID of a test defined in the template itself), the deployment of assets is done in a specific order:      1. Labels     2. Tests     3. Alert rules     4. Dashboards      For a given asset type, you can reference any asset type with a higher order. (For example, labels cannot reference other assets in the template; tests can only reference labels; alert rules can reference tests and labels, etc.)

    The version of the OpenAPI document: 7.0.1
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


import unittest
import datetime

from test_templates_api.models.test_template_upsert import TestTemplateUpsert

class TestTestTemplateUpsert(unittest.TestCase):
    """TestTemplateUpsert unit test stubs"""

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def make_instance(self, include_optional) -> TestTemplateUpsert:
        """Test TestTemplateUpsert
            include_option is a boolean, when False only required
            params are included, when True both required and
            optional params are included """
        # uncomment below to create an instance of `TestTemplateUpsert`
        """
        model = TestTemplateUpsert()
        if include_optional:
            return TestTemplateUpsert(
                name = 'OneDrive Template',
                description = 'OneDrive Template',
                icon = 'oneDrive.svg',
                is_built_in = False,
                user_inputs = {
                    'key' : {"tenantName":{"title":"Tenant Name","description":"Name of OneDrive tenant; will be used in OneDrive URL","type":"string"},"agents":{"name":"Agent List","type":"any"}}
                    },
                labels = {"templateLabel":{"name":"OneDrive Template"}},
                tests = {"pageLoadTest":{"name":"OneDrive PageLoad Test","type":"page-load","target":"https://{{tenantName}}-my.sharepoint.com","agents":"{{userInputs.agents}}"},"dnsServerTest":{"name":"OneDrive Dns Server Test","type":"dns-server","domain":"{{tenantName}}-my.sharepoint.com CNAME","agents":"{{userInputs.agents}}"}},
                alert_rules = {"httpAlert":{"alertType":"HTTP Serverr","ruleName":"An Http alert rule","expression":"((totalTime >= 500 ms) && (responseTime >= 500 ms))","roundsViolatingRequired":1,"roundsViolatingOutOf":1,"testIds":["{{tests.pageLoadTest.testId}}"]}},
                dashboards = {"myDashboard":{"title":"Test Dashboard 12","widgets":[{"filters":{"Test Labels":"[{{labels.templateLabel.groupId}}]"},"type":"Bar Chart: Stacked","title":"A Bar Chart: Stacked widget","metricGroup":"Web - HTTP Server","measure":{"type":"Median"},"metric":"Response Time","axisGroupBy":"Continents","dataSource":"Cloud & Enterprise Agents"}]}},
                deployment_strategy = {"pageLoadTest":"Create Always","httpAlert":"Ignore on Change"}
            )
        else:
            return TestTemplateUpsert(
                name = 'OneDrive Template',
        )
        """

    def testTestTemplateUpsert(self):
        """Test TestTemplateUpsert"""
        # inst_req_only = self.make_instance(include_optional=False)
        # inst_req_and_optional = self.make_instance(include_optional=True)

if __name__ == '__main__':
    unittest.main()
