# Copyright (C) 2012 Anaconda, Inc
# SPDX-License-Identifier: BSD-3-Clause
import random
import unittest
from unittest import mock

from conda_env import env
from conda_env.specs.yaml_file import YamlFileSpec


class TestYAMLFile(unittest.TestCase):
    def test_no_environment_file(self):
        spec = YamlFileSpec(name=None, filename="not-a-file")
        self.assertEqual(spec.can_handle(), False)

    def test_environment_file_exist(self):
        with mock.patch.object(env, "from_file", return_value={}):
            spec = YamlFileSpec(name=None, filename="environment.yaml")
            self.assertTrue(spec.can_handle())

    def test_get_environment(self):
        r = random.randint(100, 200)
        with mock.patch.object(env, "from_file", return_value=r):
            spec = YamlFileSpec(name=None, filename="environment.yaml")
            self.assertEqual(spec.environment, r)

    def test_filename(self):
        filename = f"filename_{random.randint(100, 200)}"
        with mock.patch.object(env, "from_file") as from_file:
            spec = YamlFileSpec(filename=filename)
            spec.environment
        from_file.assert_called_with(filename)
