# Licensed 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.

"""
test_data
------------

Tests for `os_service_types.data` module.

"""

import json

from os_service_types import data
from os_service_types.tests import base


class TestData(base.TestCase, base.TemporaryFileMixin):
    def setUp(self):
        super().setUp()

    def test_load(self):
        json_data = {'some_key': 'some_value'}
        filename = self.create_json(json_data)
        actual_data = data.read_data(filename)
        self.assertEqual(json_data, actual_data)

    def test_load_service_types(self):
        json_data = data.read_data('service-types.json')
        for key in [
            "all_types_by_service_type",
            "forward",
            "primary_service_by_project",
            "reverse",
        ]:
            self.assertIn(key, json_data)

    def test_load_non_existing(self):
        self.assertRaises(
            FileNotFoundError, data.read_data, '/non-existing-file'
        )

    def create_json(self, json_data):
        fd, name = self.create_temp_file(suffix='.json')
        with fd:
            json.dump(json_data, fd)
        return name
