class FileSystemStorageTest(TestCase):
    def setUp(self):
        self.temp_dir = tempfile.mkdtemp()
        self.storage = FileSystemStorage(location=self.temp_dir)

    def tearDown(self):
        shutil.rmtree(self.temp_dir)

    def test_delete_file(self):
        file_path = os.path.join(self.temp_dir, 'foo')
        open(file_path, 'w').close()
        self.storage.delete_file('foo')
        self.assertFalse(os.listdir(self.temp_dir))

    def test_list_directory(self):
        file_path1 = os.path.join(self.temp_dir, 'foo')
        file_path2 = os.path.join(self.temp_dir, 'bar')
        self.assertEqual(0, len(os.listdir(self.temp_dir)))
        open(file_path1, 'w').close()
        self.assertEqual(1, len(os.listdir(self.temp_dir)))
        open(file_path2, 'w').close()
        self.assertEqual(2, len(os.listdir(self.temp_dir)))

    def test_write_file(self):
        file_path = os.path.join(self.temp_dir, 'foo')
        self.storage.write_file(BytesIO(b'bar'), 'foo')
        self.assertTrue(os.path.exists(file_path))
        self.assertEqual(open(file_path).read(), 'bar')

    def test_read_file(self):
        file_path = os.path.join(self.temp_dir, 'foo')
        with open(file_path, 'w') as fd:
            fd.write('bar')
        read_file = self.storage.read_file('foo')
        self.assertEqual(read_file.read(), b'bar')
 def setUp(self):
     self.temp_dir = tempfile.mkdtemp()
     self.storage = FileSystemStorage(location=self.temp_dir)