def test_export_resources_to_directory(self): """Test exporting learning resources to directory.""" resources = LearningResource.objects.all() tempdir, collision = export_resources_to_directory(resources) try: self.assertTrue(collision) assert_resource_directory(self, resources, tempdir) finally: rmtree(tempdir)
def test_duplicate(self): """ Test that exporting resources with same file path is reported and handled correctly. """ with TemporaryFile() as temp1: with TemporaryFile() as temp2: temp1.write(b"first") temp2.write(b"second") # Create two static assets with the same name but different # paths so no renaming is done on storage side. static_filename = "iamafile.txt" static_path1 = os.path.join( STATIC_ASSET_BASEPATH.format( org=self.resource.course.org, course_number=self.resource.course.course_number, run=self.resource.course.run, ), static_filename ) file1 = File(temp1, name=static_filename) file2 = File(temp2, name=static_filename) default_storage.delete(static_path1) asset1 = create_static_asset(self.resource.course.id, file1) self.resource.static_assets.add(asset1) course2 = create_course( "org2", self.repo.id, self.resource.course.course_number, self.resource.course.run, self.user.id ) resource2 = create_resource( course=course2, parent=None, resource_type=self.resource.learning_resource_type.name, title=self.resource.title, dpath="", mpath="", content_xml="", url_name=self.resource.url_name ) static_path2 = os.path.join( STATIC_ASSET_BASEPATH.format( org=course2.org, course_number=course2.course_number, run=course2.run, ), static_filename ) default_storage.delete(static_path2) asset2 = create_static_asset(resource2.course.id, file2) resource2.static_assets.add(asset2) # Export the resources. The second static asset should have # the number _1 attached to it. try: resources = [self.resource, resource2] tempdir, collision = export_resources_to_directory( resources) try: self.assertTrue(collision) assert_resource_directory(self, resources, tempdir) finally: rmtree(tempdir) finally: default_storage.delete(asset1.asset.name) default_storage.delete(asset2.asset.name)
def test_duplicate(self): """ Test that exporting resources with same file path is reported and handled correctly. """ with TemporaryFile() as temp1: with TemporaryFile() as temp2: temp1.write(b"first") temp2.write(b"second") # Create two static assets with the same name but different # paths so no renaming is done on storage side. static_filename = "iamafile.txt" static_path1 = os.path.join( STATIC_ASSET_BASEPATH.format( org=self.resource.course.org, course_number=self.resource.course.course_number, run=self.resource.course.run, ), static_filename) file1 = File(temp1, name=static_filename) file2 = File(temp2, name=static_filename) default_storage.delete(static_path1) asset1 = create_static_asset(self.resource.course.id, file1) self.resource.static_assets.add(asset1) course2 = create_course("org2", self.repo.id, self.resource.course.course_number, self.resource.course.run, self.user.id) resource2 = create_resource( course=course2, parent=None, resource_type=self.resource.learning_resource_type.name, title=self.resource.title, dpath="", mpath="", content_xml="", url_name=self.resource.url_name) static_path2 = os.path.join( STATIC_ASSET_BASEPATH.format( org=course2.org, course_number=course2.course_number, run=course2.run, ), static_filename) default_storage.delete(static_path2) asset2 = create_static_asset(resource2.course.id, file2) resource2.static_assets.add(asset2) # Export the resources. The second static asset should have # the number _1 attached to it. try: resources = [self.resource, resource2] tempdir, collision = export_resources_to_directory( resources) try: self.assertTrue(collision) assert_resource_directory(self, resources, tempdir) finally: rmtree(tempdir) finally: default_storage.delete(asset1.asset.name) default_storage.delete(asset2.asset.name)