diff options
author | Gildardo Adrian Maravilla Jacome <gilmrjc@gmail.com> | 2021-01-04 20:28:01 -0600 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-05-31 11:09:48 +0200 |
commit | 91e21836f667c784a8a63ab1f18d81f553e679cb (patch) | |
tree | cb781866791924e0003bf2151eb9dc7a04c89096 /tests/staticfiles_tests | |
parent | 781b44240a06f0c868254f40f36ce46c927f56d1 (diff) | |
download | django-91e21836f667c784a8a63ab1f18d81f553e679cb.tar.gz |
Fixed #32319 -- Added ES module support to ManifestStaticFilesStorage.
Diffstat (limited to 'tests/staticfiles_tests')
5 files changed, 76 insertions, 0 deletions
diff --git a/tests/staticfiles_tests/project/documents/absolute_root.js b/tests/staticfiles_tests/project/documents/absolute_root.js new file mode 100644 index 0000000000..4561b0389b --- /dev/null +++ b/tests/staticfiles_tests/project/documents/absolute_root.js @@ -0,0 +1,2 @@ +const rootConst = "root"; +export default rootConst; diff --git a/tests/staticfiles_tests/project/documents/cached/module.js b/tests/staticfiles_tests/project/documents/cached/module.js new file mode 100644 index 0000000000..7380ad7856 --- /dev/null +++ b/tests/staticfiles_tests/project/documents/cached/module.js @@ -0,0 +1,22 @@ +// Static imports. +import rootConst from "/static/absolute_root.js"; +import testConst from "./module_test.js"; +import * as NewModule from "./module_test.js"; +import { testConst as alias } from "./module_test.js"; +import { firstConst, secondConst } from "./module_test.js"; +import { + firstVar as firstVarAlias, + secondVar as secondVarAlias +} from "./module_test.js"; +import relativeModule from "../nested/js/nested.js"; + +// Dynamic imports. +const dynamicModule = import("./module_test.js"); + +// Modules exports to aggregate modules. +export * from "./module_test.js"; +export { testConst } from "./module_test.js"; +export { + firstVar as firstVarAlias, + secondVar as secondVarAlias +} from "./module_test.js"; diff --git a/tests/staticfiles_tests/project/documents/cached/module_test.js b/tests/staticfiles_tests/project/documents/cached/module_test.js new file mode 100644 index 0000000000..b832b4e8a7 --- /dev/null +++ b/tests/staticfiles_tests/project/documents/cached/module_test.js @@ -0,0 +1,5 @@ +export const testConst = "test"; +export const firstConst = "first"; +export const secondConst = "second"; +export var firstVar = "test_1"; +export var SecondVar = "test_2"; diff --git a/tests/staticfiles_tests/project/documents/nested/js/nested.js b/tests/staticfiles_tests/project/documents/nested/js/nested.js new file mode 100644 index 0000000000..7646bbd17d --- /dev/null +++ b/tests/staticfiles_tests/project/documents/nested/js/nested.js @@ -0,0 +1 @@ +export default null; diff --git a/tests/staticfiles_tests/test_storage.py b/tests/staticfiles_tests/test_storage.py index 6c877a271a..db655f2453 100644 --- a/tests/staticfiles_tests/test_storage.py +++ b/tests/staticfiles_tests/test_storage.py @@ -159,6 +159,52 @@ class TestHashedFiles: self.assertIn(b"https://", relfile.read()) self.assertPostCondition() + def test_module_import(self): + relpath = self.hashed_file_path('cached/module.js') + self.assertEqual(relpath, 'cached/module.91b9cf9935da.js') + tests = [ + # Relative imports. + b'import testConst from "./module_test.d489af3cf882.js";', + b'import relativeModule from "../nested/js/nested.866475c46bb4.js";', + b'import { firstConst, secondConst } from "./module_test.d489af3cf882.js";', + # Absolute import. + b'import rootConst from "/static/absolute_root.5586327fe78c.js";', + # Dynamic import. + b'const dynamicModule = import("./module_test.d489af3cf882.js");', + # Creating a module object. + b'import * as NewModule from "./module_test.d489af3cf882.js";', + # Aliases. + b'import { testConst as alias } from "./module_test.d489af3cf882.js";', + b'import {\n' + b' firstVar as firstVarAlias,\n' + b' secondVar as secondVarAlias\n' + b'} from "./module_test.d489af3cf882.js";', + ] + with storage.staticfiles_storage.open(relpath) as relfile: + content = relfile.read() + for module_import in tests: + with self.subTest(module_import=module_import): + self.assertIn(module_import, content) + self.assertPostCondition() + + def test_aggregating_modules(self): + relpath = self.hashed_file_path('cached/module.js') + self.assertEqual(relpath, 'cached/module.91b9cf9935da.js') + tests = [ + b'export * from "./module_test.d489af3cf882.js";', + b'export { testConst } from "./module_test.d489af3cf882.js";', + b'export {\n' + b' firstVar as firstVarAlias,\n' + b' secondVar as secondVarAlias\n' + b'} from "./module_test.d489af3cf882.js";', + ] + with storage.staticfiles_storage.open(relpath) as relfile: + content = relfile.read() + for module_import in tests: + with self.subTest(module_import=module_import): + self.assertIn(module_import, content) + self.assertPostCondition() + @override_settings( STATICFILES_DIRS=[os.path.join(TEST_ROOT, 'project', 'loop')], STATICFILES_FINDERS=['django.contrib.staticfiles.finders.FileSystemFinder'], |