summaryrefslogtreecommitdiff
path: root/tests/staticfiles_tests
diff options
context:
space:
mode:
authorGildardo Adrian Maravilla Jacome <gilmrjc@gmail.com>2021-01-04 20:28:01 -0600
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-05-31 11:09:48 +0200
commit91e21836f667c784a8a63ab1f18d81f553e679cb (patch)
treecb781866791924e0003bf2151eb9dc7a04c89096 /tests/staticfiles_tests
parent781b44240a06f0c868254f40f36ce46c927f56d1 (diff)
downloaddjango-91e21836f667c784a8a63ab1f18d81f553e679cb.tar.gz
Fixed #32319 -- Added ES module support to ManifestStaticFilesStorage.
Diffstat (limited to 'tests/staticfiles_tests')
-rw-r--r--tests/staticfiles_tests/project/documents/absolute_root.js2
-rw-r--r--tests/staticfiles_tests/project/documents/cached/module.js22
-rw-r--r--tests/staticfiles_tests/project/documents/cached/module_test.js5
-rw-r--r--tests/staticfiles_tests/project/documents/nested/js/nested.js1
-rw-r--r--tests/staticfiles_tests/test_storage.py46
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'],