"""
Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
SPDX-License-Identifier: MIT-0
"""
from unittest import TestCase
import cfnlint.decode.cfn_yaml


class BaseTestCase(TestCase):
    """
    All test cases should inherit from this class as any common
    functionality that is added here will then be available to all
    subclasses. This facilitates the ability to update in one spot
    and allow all tests to get the update for easy maintenance.
    """

    def load_template(self, filename):
        """Return template"""
        return cfnlint.decode.cfn_yaml.load(filename)

    def assertEqualListOfDicts(self, a, b):
        """Compare two lists of dicts"""
        assert isinstance(a, list)
        assert isinstance(b, list)

        def key_func(d):
            """ sort dict based on keys """
            items = ((k, v if v is not None else '') for k, v in d.items())
            return sorted(items)

        self.assertEqual(sorted(a, key=key_func), sorted(b, key=key_func))
