# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

import tempfile
import posixpath

from dmunit import DeviceManagerTestCase


class FileExistsTestCase(DeviceManagerTestCase):
    """This tests the "fileExists" command.
    """

    def testOnRoot(self):
        self.assertTrue(self.dm.fileExists('/'))

    def testOnNonexistent(self):
        self.assertFalse(self.dm.fileExists('/doesNotExist'))

    def testOnRegularFile(self):
        remote_path = posixpath.join(self.dm.deviceRoot, 'testFile')
        self.assertFalse(self.dm.fileExists(remote_path))
        with tempfile.NamedTemporaryFile() as f:
            self.dm.pushFile(f.name, remote_path)
        self.assertTrue(self.dm.fileExists(remote_path))
        self.dm.removeFile(remote_path)

    def testOnDirectory(self):
        remote_path = posixpath.join(self.dm.deviceRoot, 'testDir')
        remote_path_file = posixpath.join(remote_path, 'testFile')
        self.assertFalse(self.dm.fileExists(remote_path))
        with tempfile.NamedTemporaryFile() as f:
            self.dm.pushFile(f.name, remote_path_file)
        self.assertTrue(self.dm.fileExists(remote_path))
        self.dm.removeFile(remote_path_file)
        self.dm.removeDir(remote_path)