mirror of https://github.com/zulip/zulip.git
node_tests: Move to web/tests.
This lets us simplify the long-ish ‘../../static/js’ paths, and will remove the need for the ‘zrequire’ wrapper. Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
c1675913a2
commit
cea1119423
|
@ -125,7 +125,7 @@
|
||||||
},
|
},
|
||||||
"overrides": [
|
"overrides": [
|
||||||
{
|
{
|
||||||
"files": ["frontend_tests/node_tests/**", "frontend_tests/zjsunit/**"],
|
"files": ["web/tests/**"],
|
||||||
"rules": {
|
"rules": {
|
||||||
"no-jquery/no-selector-prop": "off"
|
"no-jquery/no-selector-prop": "off"
|
||||||
}
|
}
|
||||||
|
@ -202,7 +202,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"files": ["frontend_tests/**"],
|
"files": ["frontend_tests/**", "web/tests/**"],
|
||||||
"globals": {
|
"globals": {
|
||||||
"CSS": false,
|
"CSS": false,
|
||||||
"document": false,
|
"document": false,
|
||||||
|
|
|
@ -77,7 +77,7 @@ templating systems.
|
||||||
|
|
||||||
- `zerver/tests/` Backend tests.
|
- `zerver/tests/` Backend tests.
|
||||||
|
|
||||||
- `frontend_tests/node_tests/` Node Frontend unit tests.
|
- `web/tests/` Node Frontend unit tests.
|
||||||
|
|
||||||
- `frontend_tests/puppeteer_tests/` Puppeteer frontend integration tests.
|
- `frontend_tests/puppeteer_tests/` Puppeteer frontend integration tests.
|
||||||
|
|
||||||
|
|
|
@ -376,9 +376,9 @@ node test fixtures and our OpenAPI documentation.
|
||||||
#### Node testing
|
#### Node testing
|
||||||
|
|
||||||
Once you've completed backend testing, be sure to add an example event
|
Once you've completed backend testing, be sure to add an example event
|
||||||
in `frontend_tests/node_tests/lib/events.js`, a test of the
|
in `web/tests/lib/events.js`, a test of the
|
||||||
`server_events_dispatch.js` code for that event in
|
`server_events_dispatch.js` code for that event in
|
||||||
`frontend_tests/node_tests/dispatch.js`, and verify your example
|
`web/tests/dispatch.test.js`, and verify your example
|
||||||
against the two versions of the schema that you declared above using
|
against the two versions of the schema that you declared above using
|
||||||
`tools/check-schemas`.
|
`tools/check-schemas`.
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ message is sent). As a result, we try to make sure that
|
||||||
The Python-Markdown implementation is tested by
|
The Python-Markdown implementation is tested by
|
||||||
`zerver/tests/test_markdown.py`, and the marked.js implementation and
|
`zerver/tests/test_markdown.py`, and the marked.js implementation and
|
||||||
`markdown.contains_backend_only_syntax` are tested by
|
`markdown.contains_backend_only_syntax` are tested by
|
||||||
`frontend_tests/node_tests/markdown.js`.
|
`web/tests/markdown.test.js`.
|
||||||
|
|
||||||
A shared set of fixed test data ("test fixtures") is present in
|
A shared set of fixed test data ("test fixtures") is present in
|
||||||
`zerver/tests/fixtures/markdown_test_cases.json`, and is automatically used
|
`zerver/tests/fixtures/markdown_test_cases.json`, and is automatically used
|
||||||
|
|
|
@ -17,8 +17,8 @@ whole suite is quite fast, it still saves time to run a single test by
|
||||||
name when debugging something.
|
name when debugging something.
|
||||||
|
|
||||||
The JS unit tests are written to work with node. You can find them
|
The JS unit tests are written to work with node. You can find them
|
||||||
in `frontend_tests/node_tests`. Here is an example test from
|
in `web/tests`. Here is an example test from
|
||||||
`frontend_tests/node_tests/stream_data.js`:
|
`web/tests/stream_data.test.js`:
|
||||||
|
|
||||||
```js
|
```js
|
||||||
(function test_get_by_id() {
|
(function test_get_by_id() {
|
||||||
|
@ -40,12 +40,12 @@ in `frontend_tests/node_tests`. Here is an example test from
|
||||||
|
|
||||||
The names of the node tests generally align with the names of the
|
The names of the node tests generally align with the names of the
|
||||||
modules they test. If you modify a JS module in `web/src` you should
|
modules they test. If you modify a JS module in `web/src` you should
|
||||||
see if there are corresponding test in `frontend_tests/node_tests`. If
|
see if there are corresponding test in `web/tests`. If
|
||||||
there are, you should strive to follow the patterns of the existing tests
|
there are, you should strive to follow the patterns of the existing tests
|
||||||
and add your own tests.
|
and add your own tests.
|
||||||
|
|
||||||
A good first test to read is
|
A good first test to read is
|
||||||
[example1.js](https://github.com/zulip/zulip/blob/main/frontend_tests/node_tests/example1.js).
|
[example1.js](https://github.com/zulip/zulip/blob/main/web/tests/example1.test.js).
|
||||||
(And then there are several other example files.)
|
(And then there are several other example files.)
|
||||||
|
|
||||||
## How the node tests work
|
## How the node tests work
|
||||||
|
@ -60,10 +60,10 @@ those slow down the tests a lot, and often don't add much value.
|
||||||
Instead, the preferred model for our unit tests is to mock DOM
|
Instead, the preferred model for our unit tests is to mock DOM
|
||||||
manipulations (which in Zulip are almost exclusively done via
|
manipulations (which in Zulip are almost exclusively done via
|
||||||
`jQuery`) using a custom library
|
`jQuery`) using a custom library
|
||||||
[zjquery](https://github.com/zulip/zulip/blob/main/frontend_tests/zjsunit/zjquery.js).
|
[zjquery](https://github.com/zulip/zulip/blob/main/web/tests/lib/zjquery.js).
|
||||||
|
|
||||||
The
|
The
|
||||||
[unit test file](https://github.com/zulip/zulip/blob/main/frontend_tests/node_tests/zjquery.js)
|
[unit test file](https://github.com/zulip/zulip/blob/main/web/tests/zjquery.test.js)
|
||||||
for `zjquery` is designed to be also serve as nice documentation for
|
for `zjquery` is designed to be also serve as nice documentation for
|
||||||
how to use `zjquery`, and is **highly recommended reading** for anyone
|
how to use `zjquery`, and is **highly recommended reading** for anyone
|
||||||
working on or debugging the Zulip node tests.
|
working on or debugging the Zulip node tests.
|
||||||
|
@ -150,7 +150,7 @@ narrow_state.stream = function () {
|
||||||
## Creating new test modules
|
## Creating new test modules
|
||||||
|
|
||||||
The test runner (`index.js`) automatically runs all .js files in the
|
The test runner (`index.js`) automatically runs all .js files in the
|
||||||
`frontend_tests/node_tests` directory, so you can simply start editing a file
|
`web/tests` directory, so you can simply start editing a file
|
||||||
in that directory to create a new test.
|
in that directory to create a new test.
|
||||||
|
|
||||||
## Coverage reports
|
## Coverage reports
|
||||||
|
@ -216,7 +216,7 @@ These instructions assume you're using the Vagrant development environment.
|
||||||
1. **Set the `Node.js interpreter path` to `/usr/local/bin/node`**
|
1. **Set the `Node.js interpreter path` to `/usr/local/bin/node`**
|
||||||
1. Hit `OK` 2 times to get back to the `Run/Debug Configurations` window.
|
1. Hit `OK` 2 times to get back to the `Run/Debug Configurations` window.
|
||||||
1. Under `Working Directory` select the root `zulip` directory.
|
1. Under `Working Directory` select the root `zulip` directory.
|
||||||
1. Under `JavaScript file`, enter `frontend_tests/zjsunit/index.js`
|
1. Under `JavaScript file`, enter `web/tests/lib/index.js`
|
||||||
-- this is the root script for Zulip's node unit tests.
|
-- this is the root script for Zulip's node unit tests.
|
||||||
|
|
||||||
Congratulations! You've now set up the integration.
|
Congratulations! You've now set up the integration.
|
||||||
|
@ -226,7 +226,7 @@ Congratulations! You've now set up the integration.
|
||||||
To use Webstorm to debug a given node test file, do the following:
|
To use Webstorm to debug a given node test file, do the following:
|
||||||
|
|
||||||
1. Under `Application parameters` choose the node test file that you
|
1. Under `Application parameters` choose the node test file that you
|
||||||
are trying to test (e.g. `frontend_tests/node_tests/message_store.js`).
|
are trying to test (e.g. `web/tests/message_store.test.js`).
|
||||||
1. Under `Path Mappings`, set `Project Root` to `/srv/zulip`
|
1. Under `Path Mappings`, set `Project Root` to `/srv/zulip`
|
||||||
(i.e. where the `zulip` Git repository is mounted in the Vagrant guest).
|
(i.e. where the `zulip` Git repository is mounted in the Vagrant guest).
|
||||||
1. Use the WebStorm debugger; see [this overview][webstorm-debugging]
|
1. Use the WebStorm debugger; see [this overview][webstorm-debugging]
|
||||||
|
|
|
@ -62,7 +62,7 @@ organization in Zulip). The following files are involved in the process:
|
||||||
|
|
||||||
- `frontend_tests/puppeteer_tests/admin.ts`: end-to-end tests for the organization
|
- `frontend_tests/puppeteer_tests/admin.ts`: end-to-end tests for the organization
|
||||||
admin settings pages.
|
admin settings pages.
|
||||||
- `frontend_tests/node_tests/dispatch.js`
|
- `web/tests/dispatch.test.js`
|
||||||
|
|
||||||
**Documentation**
|
**Documentation**
|
||||||
|
|
||||||
|
@ -145,7 +145,7 @@ or JavaScript/TypeScript/Python code that generates user-facing strings, be sure
|
||||||
tests and blackbox end-to-end tests. The blackbox tests are run in a
|
tests and blackbox end-to-end tests. The blackbox tests are run in a
|
||||||
headless Chromium browser using Puppeteer and are located in
|
headless Chromium browser using Puppeteer and are located in
|
||||||
`frontend_tests/puppeteer_tests/`. The unit tests use Node's `assert`
|
`frontend_tests/puppeteer_tests/`. The unit tests use Node's `assert`
|
||||||
module are located in `frontend_tests/node_tests/`. For more
|
module are located in `web/tests/`. For more
|
||||||
information on writing and running tests, see the
|
information on writing and running tests, see the
|
||||||
[testing documentation](../testing/testing.md).
|
[testing documentation](../testing/testing.md).
|
||||||
|
|
||||||
|
@ -668,11 +668,11 @@ frontend tests: [node-based unit tests](../testing/testing-with-node.md) and
|
||||||
|
|
||||||
At the minimum, if you created a new function to update UI in
|
At the minimum, if you created a new function to update UI in
|
||||||
`settings_org.js`, you will need to mock that function in
|
`settings_org.js`, you will need to mock that function in
|
||||||
`frontend_tests/node_tests/dispatch.js`. Add the name of the UI
|
`web/tests/dispatch.test.js`. Add the name of the UI
|
||||||
function you created to the following object with `noop` as the value:
|
function you created to the following object with `noop` as the value:
|
||||||
|
|
||||||
```js
|
```js
|
||||||
// frontend_tests/node_tests/dispatch.js
|
// web/tests/dispatch.test.js
|
||||||
|
|
||||||
set_global('settings_org', {
|
set_global('settings_org', {
|
||||||
update_email_change_display: noop,
|
update_email_change_display: noop,
|
||||||
|
|
|
@ -139,5 +139,10 @@
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/zulip/zulip.git"
|
"url": "https://github.com/zulip/zulip.git"
|
||||||
|
},
|
||||||
|
"nyc": {
|
||||||
|
"exclude": [
|
||||||
|
"**/node_modules/**"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ TOOLS_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||||
sys.path.insert(0, os.path.dirname(TOOLS_DIR))
|
sys.path.insert(0, os.path.dirname(TOOLS_DIR))
|
||||||
ROOT_DIR = os.path.dirname(TOOLS_DIR)
|
ROOT_DIR = os.path.dirname(TOOLS_DIR)
|
||||||
|
|
||||||
EVENTS_JS = "frontend_tests/node_tests/lib/events.js"
|
EVENTS_JS = "web/tests/lib/events.js"
|
||||||
|
|
||||||
# check for the venv
|
# check for the venv
|
||||||
from tools.lib import sanity_check
|
from tools.lib import sanity_check
|
||||||
|
|
|
@ -84,7 +84,7 @@ whitespace_rules: List["Rule"] = [
|
||||||
comma_whitespace_rule: List["Rule"] = [
|
comma_whitespace_rule: List["Rule"] = [
|
||||||
{
|
{
|
||||||
"pattern": ", {2,}[^#/ ]",
|
"pattern": ", {2,}[^#/ ]",
|
||||||
"exclude": {"zerver/tests", "frontend_tests/node_tests", "corporate/tests"},
|
"exclude": {"zerver/tests", "web/tests", "corporate/tests"},
|
||||||
"description": "Remove multiple whitespaces after ','",
|
"description": "Remove multiple whitespaces after ','",
|
||||||
"good_lines": ["foo(1, 2, 3)", "foo = bar # some inline comment"],
|
"good_lines": ["foo(1, 2, 3)", "foo = bar # some inline comment"],
|
||||||
"bad_lines": ["foo(1, 2, 3)", "foo(1, 2, 3)"],
|
"bad_lines": ["foo(1, 2, 3)", "foo(1, 2, 3)"],
|
||||||
|
@ -116,7 +116,7 @@ js_rules = RuleList(
|
||||||
rules=[
|
rules=[
|
||||||
{
|
{
|
||||||
"pattern": "subject|SUBJECT",
|
"pattern": "subject|SUBJECT",
|
||||||
"exclude": {"web/src/types.ts", "web/src/util.ts", "frontend_tests/"},
|
"exclude": {"web/src/types.ts", "web/src/util.ts", "web/tests/"},
|
||||||
"exclude_pattern": "emails",
|
"exclude_pattern": "emails",
|
||||||
"description": "avoid subject in JS code",
|
"description": "avoid subject in JS code",
|
||||||
"good_lines": ["topic_name"],
|
"good_lines": ["topic_name"],
|
||||||
|
@ -139,7 +139,7 @@ js_rules = RuleList(
|
||||||
"web/src/lightbox.js",
|
"web/src/lightbox.js",
|
||||||
"web/src/ui_report.ts",
|
"web/src/ui_report.ts",
|
||||||
"web/src/dialog_widget.js",
|
"web/src/dialog_widget.js",
|
||||||
"frontend_tests/",
|
"web/tests/",
|
||||||
},
|
},
|
||||||
"description": "Setting HTML content with jQuery .html() can lead to XSS security bugs. Consider .text() or using rendered_foo as a variable name if content comes from Handlebars and thus is already sanitized.",
|
"description": "Setting HTML content with jQuery .html() can lead to XSS security bugs. Consider .text() or using rendered_foo as a variable name if content comes from Handlebars and thus is already sanitized.",
|
||||||
},
|
},
|
||||||
|
@ -150,7 +150,7 @@ js_rules = RuleList(
|
||||||
{
|
{
|
||||||
"pattern": r"""[.]text\(["'][a-zA-Z]""",
|
"pattern": r"""[.]text\(["'][a-zA-Z]""",
|
||||||
"description": "Strings passed to $().text should be wrapped in $t() for internationalization",
|
"description": "Strings passed to $().text should be wrapped in $t() for internationalization",
|
||||||
"exclude": {"frontend_tests/node_tests/"},
|
"exclude": {"web/tests/"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pattern": r"ui.report_success\(",
|
"pattern": r"ui.report_success\(",
|
||||||
|
@ -205,7 +205,7 @@ js_rules = RuleList(
|
||||||
"exclude_pattern": r"(const |\S)style ?=",
|
"exclude_pattern": r"(const |\S)style ?=",
|
||||||
"description": "Avoid using the `style=` attribute; we prefer styling in CSS files",
|
"description": "Avoid using the `style=` attribute; we prefer styling in CSS files",
|
||||||
"exclude": {
|
"exclude": {
|
||||||
"frontend_tests/node_tests/copy_and_paste.js",
|
"web/tests/copy_and_paste.test.js",
|
||||||
},
|
},
|
||||||
"good_lines": ["#my-style {color: blue;}", "const style =", 'some_style = "test"'],
|
"good_lines": ["#my-style {color: blue;}", "const style =", 'some_style = "test"'],
|
||||||
"bad_lines": ['<p style="color: blue;">Foo</p>', 'style = "color: blue;"'],
|
"bad_lines": ['<p style="color: blue;">Foo</p>', 'style = "color: blue;"'],
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const events = require("../../frontend_tests/node_tests/lib/events");
|
const events = require("../../web/tests/lib/events");
|
||||||
|
|
||||||
console.info(JSON.stringify(events.fixtures, null, 4));
|
console.info(JSON.stringify(events.fixtures, null, 4));
|
||||||
|
|
|
@ -20,7 +20,7 @@ sanity_check.check_venv(__file__)
|
||||||
import orjson
|
import orjson
|
||||||
from zulint.printer import BOLDRED, CYAN, ENDC, GREEN
|
from zulint.printer import BOLDRED, CYAN, ENDC, GREEN
|
||||||
|
|
||||||
INDEX_JS = os.path.join(ROOT_DIR, "frontend_tests/zjsunit/index.js")
|
INDEX_JS = os.path.join(ROOT_DIR, "web/tests/lib/index.js")
|
||||||
NODE_COVERAGE_PATH = os.path.join(ROOT_DIR, "var/node-coverage/coverage-final.json")
|
NODE_COVERAGE_PATH = os.path.join(ROOT_DIR, "var/node-coverage/coverage-final.json")
|
||||||
|
|
||||||
# Ideally, we wouldn't need this line, but it seems to be required to
|
# Ideally, we wouldn't need this line, but it seems to be required to
|
||||||
|
@ -29,7 +29,7 @@ os.chdir(ROOT_DIR)
|
||||||
|
|
||||||
USAGE = """
|
USAGE = """
|
||||||
tools/test-js-with-node - to run all tests
|
tools/test-js-with-node - to run all tests
|
||||||
tools/test-js-with-node util.js activity.js - to run just a couple tests
|
tools/test-js-with-node util.test.js activity.test.js - to run just a couple tests
|
||||||
tools/test-js-with-node --coverage - to generate coverage report
|
tools/test-js-with-node --coverage - to generate coverage report
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -44,8 +44,6 @@ def make_set(files: List[str]) -> Set[str]:
|
||||||
# We do not yet require 100% line coverage for these files:
|
# We do not yet require 100% line coverage for these files:
|
||||||
EXEMPT_FILES = make_set(
|
EXEMPT_FILES = make_set(
|
||||||
[
|
[
|
||||||
"frontend_tests/zjsunit/mdiff.js",
|
|
||||||
"frontend_tests/zjsunit/zjquery_element.js",
|
|
||||||
"web/shared/src/poll_data.js",
|
"web/shared/src/poll_data.js",
|
||||||
"web/src/about_zulip.js",
|
"web/src/about_zulip.js",
|
||||||
"web/src/add_subscribers_pill.js",
|
"web/src/add_subscribers_pill.js",
|
||||||
|
@ -225,6 +223,8 @@ EXEMPT_FILES = make_set(
|
||||||
"web/src/zform.js",
|
"web/src/zform.js",
|
||||||
"web/src/zulip.js",
|
"web/src/zulip.js",
|
||||||
"web/src/zulip_test.js",
|
"web/src/zulip_test.js",
|
||||||
|
"web/tests/lib/mdiff.js",
|
||||||
|
"web/tests/lib/zjquery_element.js",
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -288,10 +288,10 @@ def print_error(msg: str) -> None:
|
||||||
|
|
||||||
def clean_file(orig_fn: str) -> str:
|
def clean_file(orig_fn: str) -> str:
|
||||||
fn = orig_fn
|
fn = orig_fn
|
||||||
if not fn.endswith(".js"):
|
if not fn.endswith(".test.js"):
|
||||||
fn += ".js"
|
fn += ".test.js"
|
||||||
if "frontend_tests/" not in fn:
|
if "web/tests/" not in fn:
|
||||||
fn = os.path.join(ROOT_DIR, "frontend_tests", "node_tests", fn)
|
fn = os.path.join(ROOT_DIR, "web", "tests", fn)
|
||||||
fn = os.path.abspath(fn)
|
fn = os.path.abspath(fn)
|
||||||
if not os.path.exists(fn):
|
if not os.path.exists(fn):
|
||||||
print(f"Cannot find {orig_fn} ({fn})")
|
print(f"Cannot find {orig_fn} ({fn})")
|
||||||
|
@ -319,7 +319,7 @@ def run_tests_via_node_js() -> int:
|
||||||
parallel = 1
|
parallel = 1
|
||||||
files = individual_files
|
files = individual_files
|
||||||
else:
|
else:
|
||||||
files = sorted(glob.glob(os.path.join(ROOT_DIR, "frontend_tests/node_tests/*.js")))
|
files = sorted(glob.glob(os.path.join(ROOT_DIR, "web/tests/*.test.js")))
|
||||||
|
|
||||||
test_files = clean_files(files)
|
test_files = clean_files(files)
|
||||||
|
|
||||||
|
@ -394,13 +394,13 @@ def read_coverage() -> Any:
|
||||||
|
|
||||||
def enforce_proper_coverage(coverage_json: Any) -> bool:
|
def enforce_proper_coverage(coverage_json: Any) -> bool:
|
||||||
all_js_files = {
|
all_js_files = {
|
||||||
*glob.glob("frontend_tests/node_tests/*.js"),
|
|
||||||
*glob.glob("frontend_tests/zjsunit/*.js"),
|
|
||||||
*glob.glob("web/shared/src/*.js"),
|
*glob.glob("web/shared/src/*.js"),
|
||||||
*glob.glob("web/shared/src/*.ts"),
|
*glob.glob("web/shared/src/*.ts"),
|
||||||
*glob.glob("web/src/*.js"),
|
*glob.glob("web/src/*.js"),
|
||||||
*glob.glob("web/src/*.ts"),
|
*glob.glob("web/src/*.ts"),
|
||||||
*glob.glob("web/src/billing/*.js"),
|
*glob.glob("web/src/billing/*.js"),
|
||||||
|
*glob.glob("web/tests/*.js"),
|
||||||
|
*glob.glob("web/tests/lib/*.js"),
|
||||||
}
|
}
|
||||||
enforce_fully_covered = sorted(all_js_files - EXEMPT_FILES)
|
enforce_fully_covered = sorted(all_js_files - EXEMPT_FILES)
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, with_overrides, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, with_overrides, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
const {page_params, user_settings} = require("../zjsunit/zpage_params");
|
const {page_params, user_settings} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const $window_stub = $.create("window-stub");
|
const $window_stub = $.create("window-stub");
|
||||||
set_global("to_$", () => $window_stub);
|
set_global("to_$", () => $window_stub);
|
||||||
|
@ -18,15 +18,15 @@ const _document = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const channel = mock_esm("../../web/src/channel");
|
const channel = mock_esm("../src/channel");
|
||||||
const compose_state = mock_esm("../../web/src/compose_state");
|
const compose_state = mock_esm("../src/compose_state");
|
||||||
const narrow = mock_esm("../../web/src/narrow");
|
const narrow = mock_esm("../src/narrow");
|
||||||
const padded_widget = mock_esm("../../web/src/padded_widget");
|
const padded_widget = mock_esm("../src/padded_widget");
|
||||||
const pm_list = mock_esm("../../web/src/pm_list");
|
const pm_list = mock_esm("../src/pm_list");
|
||||||
const popovers = mock_esm("../../web/src/popovers");
|
const popovers = mock_esm("../src/popovers");
|
||||||
const resize = mock_esm("../../web/src/resize");
|
const resize = mock_esm("../src/resize");
|
||||||
const scroll_util = mock_esm("../../web/src/scroll_util");
|
const scroll_util = mock_esm("../src/scroll_util");
|
||||||
const watchdog = mock_esm("../../web/src/watchdog");
|
const watchdog = mock_esm("../src/watchdog");
|
||||||
|
|
||||||
set_global("document", _document);
|
set_global("document", _document);
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {set_global, zrequire} = require("../zjsunit/namespace");
|
const {set_global, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
set_global("page_params", {
|
set_global("page_params", {
|
||||||
is_spectator: false,
|
is_spectator: false,
|
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {$t} = require("../zjsunit/i18n");
|
const {$t} = require("./lib/i18n");
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
const channel = mock_esm("../../web/src/channel");
|
const channel = mock_esm("../src/channel");
|
||||||
|
|
||||||
const alert_words = zrequire("alert_words");
|
const alert_words = zrequire("alert_words");
|
||||||
const alert_words_ui = zrequire("alert_words_ui");
|
const alert_words_ui = zrequire("alert_words_ui");
|
||||||
|
@ -20,7 +20,7 @@ const noop = () => {};
|
||||||
run_test("rerender_alert_words_ui", ({mock_template}) => {
|
run_test("rerender_alert_words_ui", ({mock_template}) => {
|
||||||
let list_widget_create_called = false;
|
let list_widget_create_called = false;
|
||||||
alert_words_ui.reset();
|
alert_words_ui.reset();
|
||||||
const ListWidget = mock_esm("../../web/src/list_widget", {
|
const ListWidget = mock_esm("../src/list_widget", {
|
||||||
modifier: noop,
|
modifier: noop,
|
||||||
create(container, words, opts) {
|
create(container, words, opts) {
|
||||||
const alert_words = [];
|
const alert_words = [];
|
|
@ -5,16 +5,16 @@ const fs = require("fs");
|
||||||
|
|
||||||
const {JSDOM} = require("jsdom");
|
const {JSDOM} = require("jsdom");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
const template = fs.readFileSync("templates/corporate/billing.html", "utf8");
|
const template = fs.readFileSync("templates/corporate/billing.html", "utf8");
|
||||||
const dom = new JSDOM(template, {pretendToBeVisual: true});
|
const dom = new JSDOM(template, {pretendToBeVisual: true});
|
||||||
const document = dom.window.document;
|
const document = dom.window.document;
|
||||||
const location = set_global("location", {});
|
const location = set_global("location", {});
|
||||||
|
|
||||||
const helpers = mock_esm("../../web/src/billing/helpers", {
|
const helpers = mock_esm("../src/billing/helpers", {
|
||||||
set_tab() {},
|
set_tab() {},
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,11 +5,11 @@ const fs = require("fs");
|
||||||
|
|
||||||
const {JSDOM} = require("jsdom");
|
const {JSDOM} = require("jsdom");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const jQueryFactory = require("../zjsunit/real_jquery");
|
const jQueryFactory = require("./lib/real_jquery");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const template = fs.readFileSync("templates/corporate/upgrade.html", "utf8");
|
const template = fs.readFileSync("templates/corporate/upgrade.html", "utf8");
|
||||||
const dom = new JSDOM(template, {
|
const dom = new JSDOM(template, {
|
||||||
|
@ -19,7 +19,7 @@ const dom = new JSDOM(template, {
|
||||||
const jquery = jQueryFactory(dom.window);
|
const jquery = jQueryFactory(dom.window);
|
||||||
|
|
||||||
const history = set_global("history", {});
|
const history = set_global("history", {});
|
||||||
const loading = mock_esm("../../web/src/loading");
|
const loading = mock_esm("../src/loading");
|
||||||
set_global("document", {
|
set_global("document", {
|
||||||
title: "Zulip",
|
title: "Zulip",
|
||||||
});
|
});
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
const blueslip_stacktrace = zrequire("blueslip_stacktrace");
|
const blueslip_stacktrace = zrequire("blueslip_stacktrace");
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
const bot_data = zrequire("bot_data");
|
const bot_data = zrequire("bot_data");
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {make_stub} = require("../zjsunit/stub");
|
const {make_stub} = require("./lib/stub");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
|
|
||||||
window.location.hash = "#bogus";
|
window.location.hash = "#bogus";
|
||||||
|
|
|
@ -4,12 +4,12 @@ const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const _ = require("lodash");
|
const _ = require("lodash");
|
||||||
|
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
const {page_params, user_settings} = require("../zjsunit/zpage_params");
|
const {page_params, user_settings} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const timerender = mock_esm("../../web/src/timerender");
|
const timerender = mock_esm("../src/timerender");
|
||||||
|
|
||||||
const compose_fade_helper = zrequire("compose_fade_helper");
|
const compose_fade_helper = zrequire("compose_fade_helper");
|
||||||
const muted_users = zrequire("muted_users");
|
const muted_users = zrequire("muted_users");
|
||||||
|
@ -22,7 +22,7 @@ const user_status = zrequire("user_status");
|
||||||
const buddy_data = zrequire("buddy_data");
|
const buddy_data = zrequire("buddy_data");
|
||||||
|
|
||||||
// The buddy_data module is mostly tested indirectly through
|
// The buddy_data module is mostly tested indirectly through
|
||||||
// activity.js, but we should feel free to add direct tests
|
// activity.test.js, but we should feel free to add direct tests
|
||||||
// here.
|
// here.
|
||||||
|
|
||||||
const selma = {
|
const selma = {
|
|
@ -4,13 +4,13 @@ const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const _ = require("lodash");
|
const _ = require("lodash");
|
||||||
|
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
const padded_widget = mock_esm("../../web/src/padded_widget");
|
const padded_widget = mock_esm("../src/padded_widget");
|
||||||
const message_viewport = mock_esm("../../web/src/message_viewport");
|
const message_viewport = mock_esm("../src/message_viewport");
|
||||||
|
|
||||||
const people = zrequire("people");
|
const people = zrequire("people");
|
||||||
const {BuddyList} = zrequire("buddy_list");
|
const {BuddyList} = zrequire("buddy_list");
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_jquery, mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_jquery, mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const xhr_401 = {
|
const xhr_401 = {
|
||||||
status: 401,
|
status: 401,
|
||||||
|
@ -13,7 +13,7 @@ const xhr_401 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
let login_to_access_shown = false;
|
let login_to_access_shown = false;
|
||||||
mock_esm("../../web/src/spectators", {
|
mock_esm("../src/spectators", {
|
||||||
login_to_access() {
|
login_to_access() {
|
||||||
login_to_access_shown = true;
|
login_to_access_shown = true;
|
||||||
},
|
},
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
const color_data = zrequire("color_data");
|
const color_data = zrequire("color_data");
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
const colorspace = zrequire("colorspace");
|
const colorspace = zrequire("colorspace");
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
const noop = () => {};
|
const noop = () => {};
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {$t} = require("../zjsunit/i18n");
|
const {$t} = require("./lib/i18n");
|
||||||
const {mock_jquery, zrequire} = require("../zjsunit/namespace");
|
const {mock_jquery, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
|
|
||||||
let env;
|
let env;
|
||||||
|
|
|
@ -4,14 +4,13 @@ const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const MockDate = require("mockdate");
|
const MockDate = require("mockdate");
|
||||||
|
|
||||||
const {$t} = require("../zjsunit/i18n");
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
|
||||||
const {run_test} = require("../zjsunit/test");
|
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
|
||||||
const $ = require("../zjsunit/zjquery");
|
|
||||||
const {page_params, user_settings} = require("../zjsunit/zpage_params");
|
|
||||||
|
|
||||||
const {mock_banners} = require("./lib/compose_banner");
|
const {mock_banners} = require("./lib/compose_banner");
|
||||||
|
const {$t} = require("./lib/i18n");
|
||||||
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
|
const {run_test} = require("./lib/test");
|
||||||
|
const blueslip = require("./lib/zblueslip");
|
||||||
|
const $ = require("./lib/zjquery");
|
||||||
|
const {page_params, user_settings} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const noop = () => {};
|
const noop = () => {};
|
||||||
|
|
||||||
|
@ -28,19 +27,19 @@ set_global(
|
||||||
|
|
||||||
const fake_now = 555;
|
const fake_now = 555;
|
||||||
|
|
||||||
const channel = mock_esm("../../web/src/channel");
|
const channel = mock_esm("../src/channel");
|
||||||
const compose_actions = mock_esm("../../web/src/compose_actions");
|
const compose_actions = mock_esm("../src/compose_actions");
|
||||||
const compose_fade = mock_esm("../../web/src/compose_fade");
|
const compose_fade = mock_esm("../src/compose_fade");
|
||||||
const compose_pm_pill = mock_esm("../../web/src/compose_pm_pill");
|
const compose_pm_pill = mock_esm("../src/compose_pm_pill");
|
||||||
const loading = mock_esm("../../web/src/loading");
|
const loading = mock_esm("../src/loading");
|
||||||
const markdown = mock_esm("../../web/src/markdown");
|
const markdown = mock_esm("../src/markdown");
|
||||||
const reminder = mock_esm("../../web/src/reminder");
|
const reminder = mock_esm("../src/reminder");
|
||||||
const rendered_markdown = mock_esm("../../web/src/rendered_markdown");
|
const rendered_markdown = mock_esm("../src/rendered_markdown");
|
||||||
const resize = mock_esm("../../web/src/resize");
|
const resize = mock_esm("../src/resize");
|
||||||
const sent_messages = mock_esm("../../web/src/sent_messages");
|
const sent_messages = mock_esm("../src/sent_messages");
|
||||||
const server_events = mock_esm("../../web/src/server_events");
|
const server_events = mock_esm("../src/server_events");
|
||||||
const transmit = mock_esm("../../web/src/transmit");
|
const transmit = mock_esm("../src/transmit");
|
||||||
const upload = mock_esm("../../web/src/upload");
|
const upload = mock_esm("../src/upload");
|
||||||
|
|
||||||
const compose_ui = zrequire("compose_ui");
|
const compose_ui = zrequire("compose_ui");
|
||||||
const compose_banner = zrequire("compose_banner");
|
const compose_banner = zrequire("compose_banner");
|
|
@ -2,12 +2,11 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
|
||||||
const {run_test} = require("../zjsunit/test");
|
|
||||||
const $ = require("../zjsunit/zjquery");
|
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
|
||||||
|
|
||||||
const {mock_banners} = require("./lib/compose_banner");
|
const {mock_banners} = require("./lib/compose_banner");
|
||||||
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
|
const {run_test} = require("./lib/test");
|
||||||
|
const $ = require("./lib/zjquery");
|
||||||
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const settings_config = zrequire("settings_config");
|
const settings_config = zrequire("settings_config");
|
||||||
|
|
||||||
|
@ -17,38 +16,38 @@ set_global("document", {
|
||||||
to_$: () => $("document-stub"),
|
to_$: () => $("document-stub"),
|
||||||
});
|
});
|
||||||
|
|
||||||
const channel = mock_esm("../../web/src/channel");
|
const channel = mock_esm("../src/channel");
|
||||||
const compose_fade = mock_esm("../../web/src/compose_fade", {
|
const compose_fade = mock_esm("../src/compose_fade", {
|
||||||
clear_compose: noop,
|
clear_compose: noop,
|
||||||
});
|
});
|
||||||
const compose_pm_pill = mock_esm("../../web/src/compose_pm_pill");
|
const compose_pm_pill = mock_esm("../src/compose_pm_pill");
|
||||||
const compose_ui = mock_esm("../../web/src/compose_ui", {
|
const compose_ui = mock_esm("../src/compose_ui", {
|
||||||
autosize_textarea: noop,
|
autosize_textarea: noop,
|
||||||
is_full_size: () => false,
|
is_full_size: () => false,
|
||||||
});
|
});
|
||||||
const hash_util = mock_esm("../../web/src/hash_util");
|
const hash_util = mock_esm("../src/hash_util");
|
||||||
const narrow_state = mock_esm("../../web/src/narrow_state", {
|
const narrow_state = mock_esm("../src/narrow_state", {
|
||||||
set_compose_defaults: noop,
|
set_compose_defaults: noop,
|
||||||
});
|
});
|
||||||
|
|
||||||
mock_esm("../../web/src/reload_state", {
|
mock_esm("../src/reload_state", {
|
||||||
is_in_progress: () => false,
|
is_in_progress: () => false,
|
||||||
});
|
});
|
||||||
mock_esm("../../web/src/recent_topics_util", {
|
mock_esm("../src/recent_topics_util", {
|
||||||
is_visible: noop,
|
is_visible: noop,
|
||||||
});
|
});
|
||||||
mock_esm("../../web/src/drafts", {
|
mock_esm("../src/drafts", {
|
||||||
update_draft: noop,
|
update_draft: noop,
|
||||||
});
|
});
|
||||||
mock_esm("../../web/src/unread_ops", {
|
mock_esm("../src/unread_ops", {
|
||||||
notify_server_message_read: noop,
|
notify_server_message_read: noop,
|
||||||
});
|
});
|
||||||
mock_esm("../../web/src/message_lists", {
|
mock_esm("../src/message_lists", {
|
||||||
current: {
|
current: {
|
||||||
can_mark_messages_read: () => true,
|
can_mark_messages_read: () => true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
mock_esm("../../web/src/resize", {
|
mock_esm("../src/resize", {
|
||||||
reset_compose_message_max_height: noop,
|
reset_compose_message_max_height: noop,
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,17 +3,17 @@
|
||||||
// Setup
|
// Setup
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
mock_esm("../../web/src/recent_topics_util", {
|
mock_esm("../src/recent_topics_util", {
|
||||||
is_visible: () => false,
|
is_visible: () => false,
|
||||||
});
|
});
|
||||||
const noop = () => {};
|
const noop = () => {};
|
||||||
// Mocking and stubbing things
|
// Mocking and stubbing things
|
||||||
set_global("document", "document-stub");
|
set_global("document", "document-stub");
|
||||||
const message_lists = mock_esm("../../web/src/message_lists");
|
const message_lists = mock_esm("../src/message_lists");
|
||||||
function MessageListView() {
|
function MessageListView() {
|
||||||
return {
|
return {
|
||||||
maybe_rerender: noop,
|
maybe_rerender: noop,
|
||||||
|
@ -21,7 +21,7 @@ function MessageListView() {
|
||||||
prepend: noop,
|
prepend: noop,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
mock_esm("../../web/src/message_list_view", {
|
mock_esm("../src/message_list_view", {
|
||||||
MessageListView,
|
MessageListView,
|
||||||
});
|
});
|
||||||
// Code we're actually using/testing
|
// Code we're actually using/testing
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_jquery, zrequire} = require("../zjsunit/namespace");
|
const {mock_jquery, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
mock_jquery((selector) => {
|
mock_jquery((selector) => {
|
||||||
switch (selector) {
|
switch (selector) {
|
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
const compose_actions = mock_esm("../../web/src/compose_actions");
|
const compose_actions = mock_esm("../src/compose_actions");
|
||||||
const input_pill = mock_esm("../../web/src/input_pill");
|
const input_pill = mock_esm("../src/input_pill");
|
||||||
const people = zrequire("people");
|
const people = zrequire("people");
|
||||||
|
|
||||||
const compose_pm_pill = zrequire("compose_pm_pill");
|
const compose_pm_pill = zrequire("compose_pm_pill");
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
const compose_pm_pill = mock_esm("../../web/src/compose_pm_pill");
|
const compose_pm_pill = mock_esm("../src/compose_pm_pill");
|
||||||
|
|
||||||
const compose_state = zrequire("compose_state");
|
const compose_state = zrequire("compose_state");
|
||||||
|
|
|
@ -4,24 +4,24 @@ const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const autosize = require("autosize");
|
const autosize = require("autosize");
|
||||||
|
|
||||||
const {$t} = require("../zjsunit/i18n");
|
const {$t} = require("./lib/i18n");
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
const noop = () => {};
|
const noop = () => {};
|
||||||
|
|
||||||
set_global("navigator", {});
|
set_global("navigator", {});
|
||||||
|
|
||||||
mock_esm("../../web/src/message_lists", {
|
mock_esm("../src/message_lists", {
|
||||||
current: {},
|
current: {},
|
||||||
});
|
});
|
||||||
|
|
||||||
const compose_ui = zrequire("compose_ui");
|
const compose_ui = zrequire("compose_ui");
|
||||||
const people = zrequire("people");
|
const people = zrequire("people");
|
||||||
const user_status = zrequire("user_status");
|
const user_status = zrequire("user_status");
|
||||||
const hash_util = mock_esm("../../web/src/hash_util");
|
const hash_util = mock_esm("../src/hash_util");
|
||||||
const channel = mock_esm("../../web/src/channel");
|
const channel = mock_esm("../src/channel");
|
||||||
const compose_actions = zrequire("compose_actions");
|
const compose_actions = zrequire("compose_actions");
|
||||||
const message_lists = zrequire("message_lists");
|
const message_lists = zrequire("message_lists");
|
||||||
const text_field_edit = mock_esm("text-field-edit");
|
const text_field_edit = mock_esm("text-field-edit");
|
|
@ -2,17 +2,16 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {$t} = require("../zjsunit/i18n");
|
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
|
||||||
const {run_test} = require("../zjsunit/test");
|
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
|
||||||
const $ = require("../zjsunit/zjquery");
|
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
|
||||||
|
|
||||||
const {mock_banners} = require("./lib/compose_banner");
|
const {mock_banners} = require("./lib/compose_banner");
|
||||||
|
const {$t} = require("./lib/i18n");
|
||||||
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
|
const {run_test} = require("./lib/test");
|
||||||
|
const blueslip = require("./lib/zblueslip");
|
||||||
|
const $ = require("./lib/zjquery");
|
||||||
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const channel = mock_esm("../../web/src/channel");
|
const channel = mock_esm("../src/channel");
|
||||||
const compose_actions = mock_esm("../../web/src/compose_actions");
|
const compose_actions = mock_esm("../src/compose_actions");
|
||||||
|
|
||||||
const compose_banner = zrequire("compose_banner");
|
const compose_banner = zrequire("compose_banner");
|
||||||
const compose_pm_pill = zrequire("compose_pm_pill");
|
const compose_pm_pill = zrequire("compose_pm_pill");
|
||||||
|
@ -22,7 +21,7 @@ const peer_data = zrequire("peer_data");
|
||||||
const people = zrequire("people");
|
const people = zrequire("people");
|
||||||
const resolved_topic = zrequire("../shared/src/resolved_topic");
|
const resolved_topic = zrequire("../shared/src/resolved_topic");
|
||||||
const settings_config = zrequire("settings_config");
|
const settings_config = zrequire("settings_config");
|
||||||
const settings_data = mock_esm("../../web/src/settings_data");
|
const settings_data = mock_esm("../src/settings_data");
|
||||||
const stream_data = zrequire("stream_data");
|
const stream_data = zrequire("stream_data");
|
||||||
|
|
||||||
const me = {
|
const me = {
|
|
@ -2,17 +2,16 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, with_overrides, zrequire} = require("../zjsunit/namespace");
|
|
||||||
const {run_test} = require("../zjsunit/test");
|
|
||||||
const $ = require("../zjsunit/zjquery");
|
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
|
||||||
|
|
||||||
const events = require("./lib/events");
|
const events = require("./lib/events");
|
||||||
|
const {mock_esm, set_global, with_overrides, zrequire} = require("./lib/namespace");
|
||||||
|
const {run_test} = require("./lib/test");
|
||||||
|
const $ = require("./lib/zjquery");
|
||||||
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const channel = mock_esm("../../web/src/channel");
|
const channel = mock_esm("../src/channel");
|
||||||
const compose_ui = mock_esm("../../web/src/compose_ui");
|
const compose_ui = mock_esm("../src/compose_ui");
|
||||||
const upload = mock_esm("../../web/src/upload");
|
const upload = mock_esm("../src/upload");
|
||||||
mock_esm("../../web/src/resize", {
|
mock_esm("../src/resize", {
|
||||||
watch_manual_resize() {},
|
watch_manual_resize() {},
|
||||||
});
|
});
|
||||||
set_global("document", {
|
set_global("document", {
|
|
@ -2,27 +2,27 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, with_overrides, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, with_overrides, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
const {user_settings} = require("../zjsunit/zpage_params");
|
const {user_settings} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const noop = () => {};
|
const noop = () => {};
|
||||||
|
|
||||||
const compose = mock_esm("../../web/src/compose", {
|
const compose = mock_esm("../src/compose", {
|
||||||
finish: noop,
|
finish: noop,
|
||||||
});
|
});
|
||||||
const compose_validate = mock_esm("../../web/src/compose_validate", {
|
const compose_validate = mock_esm("../src/compose_validate", {
|
||||||
warn_for_text_overflow_when_tries_to_send: () => true,
|
warn_for_text_overflow_when_tries_to_send: () => true,
|
||||||
});
|
});
|
||||||
const input_pill = mock_esm("../../web/src/input_pill");
|
const input_pill = mock_esm("../src/input_pill");
|
||||||
const message_user_ids = mock_esm("../../web/src/message_user_ids", {
|
const message_user_ids = mock_esm("../src/message_user_ids", {
|
||||||
user_ids: () => [],
|
user_ids: () => [],
|
||||||
});
|
});
|
||||||
const stream_topic_history = mock_esm("../../web/src/stream_topic_history", {
|
const stream_topic_history = mock_esm("../src/stream_topic_history", {
|
||||||
stream_has_topics: () => false,
|
stream_has_topics: () => false,
|
||||||
});
|
});
|
||||||
const stream_topic_history_util = mock_esm("../../web/src/stream_topic_history_util");
|
const stream_topic_history_util = mock_esm("../src/stream_topic_history_util");
|
||||||
|
|
||||||
let autosize_called;
|
let autosize_called;
|
||||||
|
|
|
@ -4,17 +4,17 @@ const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {JSDOM} = require("jsdom");
|
const {JSDOM} = require("jsdom");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const jquery = require("../zjsunit/real_jquery");
|
const jquery = require("./lib/real_jquery");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const {window} = new JSDOM("<!DOCTYPE html><p>Hello world</p>");
|
const {window} = new JSDOM("<!DOCTYPE html><p>Hello world</p>");
|
||||||
|
|
||||||
const {document} = window;
|
const {document} = window;
|
||||||
const $ = jquery(window);
|
const $ = jquery(window);
|
||||||
|
|
||||||
const compose_ui = mock_esm("../../web/src/compose_ui");
|
const compose_ui = mock_esm("../src/compose_ui");
|
||||||
set_global("document", document);
|
set_global("document", document);
|
||||||
|
|
||||||
const copy_and_paste = zrequire("copy_and_paste");
|
const copy_and_paste = zrequire("copy_and_paste");
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {set_global, zrequire} = require("../zjsunit/namespace");
|
const {set_global, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
set_global("navigator", {
|
set_global("navigator", {
|
||||||
userAgent: "",
|
userAgent: "",
|
|
@ -2,21 +2,16 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, with_overrides, zrequire} = require("../zjsunit/namespace");
|
const events = require("./lib/events");
|
||||||
const {make_stub} = require("../zjsunit/stub");
|
const {mock_esm, set_global, with_overrides, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {make_stub} = require("./lib/stub");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const blueslip = require("./lib/zblueslip");
|
||||||
const {
|
const $ = require("./lib/zjquery");
|
||||||
page_params,
|
const {page_params, realm_user_settings_defaults, user_settings} = require("./lib/zpage_params");
|
||||||
realm_user_settings_defaults,
|
|
||||||
user_settings,
|
|
||||||
} = require("../zjsunit/zpage_params");
|
|
||||||
|
|
||||||
const noop = () => {};
|
const noop = () => {};
|
||||||
|
|
||||||
const events = require("./lib/events");
|
|
||||||
|
|
||||||
const event_fixtures = events.fixtures;
|
const event_fixtures = events.fixtures;
|
||||||
const test_message = events.test_message;
|
const test_message = events.test_message;
|
||||||
const test_user = events.test_user;
|
const test_user = events.test_user;
|
||||||
|
@ -24,64 +19,64 @@ const typing_person1 = events.typing_person1;
|
||||||
|
|
||||||
set_global("setTimeout", (func) => func());
|
set_global("setTimeout", (func) => func());
|
||||||
|
|
||||||
const activity = mock_esm("../../web/src/activity");
|
const activity = mock_esm("../src/activity");
|
||||||
const alert_words_ui = mock_esm("../../web/src/alert_words_ui");
|
const alert_words_ui = mock_esm("../src/alert_words_ui");
|
||||||
const attachments_ui = mock_esm("../../web/src/attachments_ui");
|
const attachments_ui = mock_esm("../src/attachments_ui");
|
||||||
const bot_data = mock_esm("../../web/src/bot_data");
|
const bot_data = mock_esm("../src/bot_data");
|
||||||
const compose_pm_pill = mock_esm("../../web/src/compose_pm_pill");
|
const compose_pm_pill = mock_esm("../src/compose_pm_pill");
|
||||||
const composebox_typeahead = mock_esm("../../web/src/composebox_typeahead");
|
const composebox_typeahead = mock_esm("../src/composebox_typeahead");
|
||||||
const dark_theme = mock_esm("../../web/src/dark_theme");
|
const dark_theme = mock_esm("../src/dark_theme");
|
||||||
const emoji_picker = mock_esm("../../web/src/emoji_picker");
|
const emoji_picker = mock_esm("../src/emoji_picker");
|
||||||
const hotspots = mock_esm("../../web/src/hotspots");
|
const hotspots = mock_esm("../src/hotspots");
|
||||||
const linkifiers = mock_esm("../../web/src/linkifiers");
|
const linkifiers = mock_esm("../src/linkifiers");
|
||||||
const message_events = mock_esm("../../web/src/message_events");
|
const message_events = mock_esm("../src/message_events");
|
||||||
const message_lists = mock_esm("../../web/src/message_lists");
|
const message_lists = mock_esm("../src/message_lists");
|
||||||
const muted_topics_ui = mock_esm("../../web/src/muted_topics_ui");
|
const muted_topics_ui = mock_esm("../src/muted_topics_ui");
|
||||||
const muted_users_ui = mock_esm("../../web/src/muted_users_ui");
|
const muted_users_ui = mock_esm("../src/muted_users_ui");
|
||||||
const notifications = mock_esm("../../web/src/notifications");
|
const notifications = mock_esm("../src/notifications");
|
||||||
const pm_list = mock_esm("../../web/src/pm_list");
|
const pm_list = mock_esm("../src/pm_list");
|
||||||
const reactions = mock_esm("../../web/src/reactions");
|
const reactions = mock_esm("../src/reactions");
|
||||||
const realm_icon = mock_esm("../../web/src/realm_icon");
|
const realm_icon = mock_esm("../src/realm_icon");
|
||||||
const realm_logo = mock_esm("../../web/src/realm_logo");
|
const realm_logo = mock_esm("../src/realm_logo");
|
||||||
const realm_playground = mock_esm("../../web/src/realm_playground");
|
const realm_playground = mock_esm("../src/realm_playground");
|
||||||
const reload = mock_esm("../../web/src/reload");
|
const reload = mock_esm("../src/reload");
|
||||||
const scroll_bar = mock_esm("../../web/src/scroll_bar");
|
const scroll_bar = mock_esm("../src/scroll_bar");
|
||||||
const settings_account = mock_esm("../../web/src/settings_account");
|
const settings_account = mock_esm("../src/settings_account");
|
||||||
const settings_bots = mock_esm("../../web/src/settings_bots");
|
const settings_bots = mock_esm("../src/settings_bots");
|
||||||
const settings_display = mock_esm("../../web/src/settings_display");
|
const settings_display = mock_esm("../src/settings_display");
|
||||||
const settings_emoji = mock_esm("../../web/src/settings_emoji");
|
const settings_emoji = mock_esm("../src/settings_emoji");
|
||||||
const settings_exports = mock_esm("../../web/src/settings_exports");
|
const settings_exports = mock_esm("../src/settings_exports");
|
||||||
const settings_invites = mock_esm("../../web/src/settings_invites");
|
const settings_invites = mock_esm("../src/settings_invites");
|
||||||
const settings_linkifiers = mock_esm("../../web/src/settings_linkifiers");
|
const settings_linkifiers = mock_esm("../src/settings_linkifiers");
|
||||||
const settings_playgrounds = mock_esm("../../web/src/settings_playgrounds");
|
const settings_playgrounds = mock_esm("../src/settings_playgrounds");
|
||||||
const settings_notifications = mock_esm("../../web/src/settings_notifications");
|
const settings_notifications = mock_esm("../src/settings_notifications");
|
||||||
const settings_org = mock_esm("../../web/src/settings_org");
|
const settings_org = mock_esm("../src/settings_org");
|
||||||
const settings_profile_fields = mock_esm("../../web/src/settings_profile_fields");
|
const settings_profile_fields = mock_esm("../src/settings_profile_fields");
|
||||||
const settings_realm_user_settings_defaults = mock_esm(
|
const settings_realm_user_settings_defaults = mock_esm(
|
||||||
"../../web/src/settings_realm_user_settings_defaults",
|
"../src/settings_realm_user_settings_defaults",
|
||||||
);
|
);
|
||||||
const settings_realm_domains = mock_esm("../../web/src/settings_realm_domains");
|
const settings_realm_domains = mock_esm("../src/settings_realm_domains");
|
||||||
const settings_streams = mock_esm("../../web/src/settings_streams");
|
const settings_streams = mock_esm("../src/settings_streams");
|
||||||
const settings_user_groups_legacy = mock_esm("../../web/src/settings_user_groups_legacy");
|
const settings_user_groups_legacy = mock_esm("../src/settings_user_groups_legacy");
|
||||||
const settings_users = mock_esm("../../web/src/settings_users");
|
const settings_users = mock_esm("../src/settings_users");
|
||||||
const stream_data = mock_esm("../../web/src/stream_data");
|
const stream_data = mock_esm("../src/stream_data");
|
||||||
const stream_events = mock_esm("../../web/src/stream_events");
|
const stream_events = mock_esm("../src/stream_events");
|
||||||
const stream_list = mock_esm("../../web/src/stream_list");
|
const stream_list = mock_esm("../src/stream_list");
|
||||||
const stream_settings_ui = mock_esm("../../web/src/stream_settings_ui");
|
const stream_settings_ui = mock_esm("../src/stream_settings_ui");
|
||||||
const stream_topic_history = mock_esm("../../web/src/stream_topic_history");
|
const stream_topic_history = mock_esm("../src/stream_topic_history");
|
||||||
const submessage = mock_esm("../../web/src/submessage");
|
const submessage = mock_esm("../src/submessage");
|
||||||
mock_esm("../../web/src/top_left_corner", {
|
mock_esm("../src/top_left_corner", {
|
||||||
update_starred_count() {},
|
update_starred_count() {},
|
||||||
});
|
});
|
||||||
const typing_events = mock_esm("../../web/src/typing_events");
|
const typing_events = mock_esm("../src/typing_events");
|
||||||
const ui = mock_esm("../../web/src/ui");
|
const ui = mock_esm("../src/ui");
|
||||||
const unread_ops = mock_esm("../../web/src/unread_ops");
|
const unread_ops = mock_esm("../src/unread_ops");
|
||||||
const user_events = mock_esm("../../web/src/user_events");
|
const user_events = mock_esm("../src/user_events");
|
||||||
const user_groups = mock_esm("../../web/src/user_groups");
|
const user_groups = mock_esm("../src/user_groups");
|
||||||
const user_group_edit = mock_esm("../../web/src/user_group_edit");
|
const user_group_edit = mock_esm("../src/user_group_edit");
|
||||||
const overlays = mock_esm("../../web/src/overlays");
|
const overlays = mock_esm("../src/overlays");
|
||||||
const user_groups_settings_ui = mock_esm("../../web/src/user_groups_settings_ui");
|
const user_groups_settings_ui = mock_esm("../src/user_groups_settings_ui");
|
||||||
mock_esm("../../web/src/giphy");
|
mock_esm("../src/giphy");
|
||||||
|
|
||||||
const electron_bridge = set_global("electron_bridge", {});
|
const electron_bridge = set_global("electron_bridge", {});
|
||||||
|
|
||||||
|
@ -735,7 +730,7 @@ run_test("submessage", ({override}) => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// For subscriptions, see dispatch_subs.js
|
// For subscriptions, see dispatch_subs.test.js
|
||||||
|
|
||||||
run_test("typing", ({override}) => {
|
run_test("typing", ({override}) => {
|
||||||
// Simulate that we are not typing.
|
// Simulate that we are not typing.
|
|
@ -2,26 +2,25 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
|
||||||
const {make_stub} = require("../zjsunit/stub");
|
|
||||||
const {run_test} = require("../zjsunit/test");
|
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
|
||||||
|
|
||||||
const events = require("./lib/events");
|
const events = require("./lib/events");
|
||||||
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
|
const {make_stub} = require("./lib/stub");
|
||||||
|
const {run_test} = require("./lib/test");
|
||||||
|
const blueslip = require("./lib/zblueslip");
|
||||||
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const event_fixtures = events.fixtures;
|
const event_fixtures = events.fixtures;
|
||||||
const test_user = events.test_user;
|
const test_user = events.test_user;
|
||||||
|
|
||||||
const compose_fade = mock_esm("../../web/src/compose_fade");
|
const compose_fade = mock_esm("../src/compose_fade");
|
||||||
const message_lists = mock_esm("../../web/src/message_lists");
|
const message_lists = mock_esm("../src/message_lists");
|
||||||
const narrow_state = mock_esm("../../web/src/narrow_state");
|
const narrow_state = mock_esm("../src/narrow_state");
|
||||||
const overlays = mock_esm("../../web/src/overlays");
|
const overlays = mock_esm("../src/overlays");
|
||||||
const settings_org = mock_esm("../../web/src/settings_org");
|
const settings_org = mock_esm("../src/settings_org");
|
||||||
const settings_streams = mock_esm("../../web/src/settings_streams");
|
const settings_streams = mock_esm("../src/settings_streams");
|
||||||
const stream_events = mock_esm("../../web/src/stream_events");
|
const stream_events = mock_esm("../src/stream_events");
|
||||||
const stream_list = mock_esm("../../web/src/stream_list");
|
const stream_list = mock_esm("../src/stream_list");
|
||||||
const stream_settings_ui = mock_esm("../../web/src/stream_settings_ui");
|
const stream_settings_ui = mock_esm("../src/stream_settings_ui");
|
||||||
message_lists.current = {};
|
message_lists.current = {};
|
||||||
|
|
||||||
const peer_data = zrequire("peer_data");
|
const peer_data = zrequire("peer_data");
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire, with_overrides} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire, with_overrides} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
const {user_settings} = require("../zjsunit/zpage_params");
|
const {user_settings} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const blueslip = zrequire("blueslip");
|
const blueslip = zrequire("blueslip");
|
||||||
const compose_pm_pill = zrequire("compose_pm_pill");
|
const compose_pm_pill = zrequire("compose_pm_pill");
|
||||||
|
@ -29,10 +29,10 @@ set_global("setTimeout", (f, delay) => {
|
||||||
assert.equal(delay, setTimeout_delay);
|
assert.equal(delay, setTimeout_delay);
|
||||||
f();
|
f();
|
||||||
});
|
});
|
||||||
mock_esm("../../web/src/markdown", {
|
mock_esm("../src/markdown", {
|
||||||
apply_markdown: noop,
|
apply_markdown: noop,
|
||||||
});
|
});
|
||||||
mock_esm("../../web/src/overlays", {
|
mock_esm("../src/overlays", {
|
||||||
open_overlay: noop,
|
open_overlay: noop,
|
||||||
});
|
});
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {$t} = require("../zjsunit/i18n");
|
const {$t} = require("./lib/i18n");
|
||||||
const {mock_esm, zrequire, set_global} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire, set_global} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
const noop = () => {};
|
const noop = () => {};
|
||||||
mock_esm("../../web/src/list_widget", {
|
mock_esm("../src/list_widget", {
|
||||||
create: () => ({init: noop}),
|
create: () => ({init: noop}),
|
||||||
});
|
});
|
||||||
|
|
|
@ -4,28 +4,28 @@ const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const MockDate = require("mockdate");
|
const MockDate = require("mockdate");
|
||||||
|
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
const {make_stub} = require("../zjsunit/stub");
|
const {make_stub} = require("./lib/stub");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const markdown = mock_esm("../../web/src/markdown");
|
const markdown = mock_esm("../src/markdown");
|
||||||
const message_lists = mock_esm("../../web/src/message_lists");
|
const message_lists = mock_esm("../src/message_lists");
|
||||||
const notifications = mock_esm("../../web/src/notifications");
|
const notifications = mock_esm("../src/notifications");
|
||||||
|
|
||||||
let disparities = [];
|
let disparities = [];
|
||||||
|
|
||||||
mock_esm("../../web/src/ui", {
|
mock_esm("../src/ui", {
|
||||||
show_failed_message_success() {},
|
show_failed_message_success() {},
|
||||||
});
|
});
|
||||||
|
|
||||||
mock_esm("../../web/src/sent_messages", {
|
mock_esm("../src/sent_messages", {
|
||||||
mark_disparity(local_id) {
|
mark_disparity(local_id) {
|
||||||
disparities.push(local_id);
|
disparities.push(local_id);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const message_store = mock_esm("../../web/src/message_store", {
|
const message_store = mock_esm("../src/message_store", {
|
||||||
get: () => ({failed_request: true}),
|
get: () => ({failed_request: true}),
|
||||||
|
|
||||||
update_booleans() {},
|
update_booleans() {},
|
|
@ -2,13 +2,12 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const events = require("./lib/events");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {zrequire} = require("./lib/namespace");
|
||||||
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
const emoji_codes = zrequire("../../static/generated/emoji/emoji_codes.json");
|
const emoji_codes = zrequire("../../static/generated/emoji/emoji_codes.json");
|
||||||
|
|
||||||
const events = require("./lib/events");
|
|
||||||
|
|
||||||
const emoji = zrequire("emoji");
|
const emoji = zrequire("emoji");
|
||||||
|
|
||||||
const realm_emoji = events.test_realm_emojis;
|
const realm_emoji = events.test_realm_emojis;
|
|
@ -4,8 +4,8 @@ const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const _ = require("lodash");
|
const _ = require("lodash");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
const emoji = zrequire("emoji");
|
const emoji = zrequire("emoji");
|
||||||
const emoji_picker = zrequire("emoji_picker");
|
const emoji_picker = zrequire("emoji_picker");
|
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {set_global, zrequire, mock_esm} = require("../zjsunit/namespace");
|
const {set_global, zrequire, mock_esm} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
const event_status = zrequire("billing/event_status");
|
const event_status = zrequire("billing/event_status");
|
||||||
const helpers = mock_esm("../../web/src/billing/helpers");
|
const helpers = mock_esm("../src/billing/helpers");
|
||||||
|
|
||||||
run_test("initialize_retry_with_another_card_link_click_handler", ({override}) => {
|
run_test("initialize_retry_with_another_card_link_click_handler", ({override}) => {
|
||||||
override(helpers, "create_ajax_request", (url, form_name, ignored_inputs, method, callback) => {
|
override(helpers, "create_ajax_request", (url, form_name, ignored_inputs, method, callback) => {
|
|
@ -9,8 +9,8 @@
|
||||||
// become clear as you keep reading.
|
// become clear as you keep reading.
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
// We will use our special zrequire helper to import the
|
// We will use our special zrequire helper to import the
|
||||||
// Zulip code. We use zrequire instead of require,
|
// Zulip code. We use zrequire instead of require,
|
||||||
|
@ -41,7 +41,7 @@ const isaac = {
|
||||||
|
|
||||||
// The `people`object is a very fundamental object in the
|
// The `people`object is a very fundamental object in the
|
||||||
// Zulip app. You can learn a lot more about it by reading
|
// Zulip app. You can learn a lot more about it by reading
|
||||||
// the tests in people.js in the same directory as this file.
|
// the tests in people.test.js in the same directory as this file.
|
||||||
|
|
||||||
// Let's exercise the code and use assert to verify it works!
|
// Let's exercise the code and use assert to verify it works!
|
||||||
assert.ok(!people.is_known_user_id(isaac.user_id));
|
assert.ok(!people.is_known_user_id(isaac.user_id));
|
||||||
|
@ -70,4 +70,4 @@ run_test("verify stream_data persists stream color", () => {
|
||||||
const sub = stream_data.get_sub_by_name("Denmark");
|
const sub = stream_data.get_sub_by_name("Denmark");
|
||||||
assert.equal(sub.color, "blue");
|
assert.equal(sub.color, "blue");
|
||||||
});
|
});
|
||||||
// See example2.js in this directory.
|
// See example2.test.js in this directory.
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
// Hopefully the basic patterns for testing data-oriented modules
|
// Hopefully the basic patterns for testing data-oriented modules
|
||||||
// are starting to become apparent. To reinforce that, we will present
|
// are starting to become apparent. To reinforce that, we will present
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
// In the Zulip app you can narrow your message stream by topic, by
|
// In the Zulip app you can narrow your message stream by topic, by
|
||||||
// sender, by PM recipient, by search keywords, etc. We will discuss
|
// sender, by PM recipient, by search keywords, etc. We will discuss
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ const {run_test} = require("../zjsunit/test");
|
||||||
you are interested, all of these objects have test
|
you are interested, all of these objects have test
|
||||||
suites that have 100% line coverage on the modules
|
suites that have 100% line coverage on the modules
|
||||||
that implement those objects. For example, you can look
|
that implement those objects. For example, you can look
|
||||||
at people.js in this directory for more tests on the
|
at people.test.js in this directory for more tests on the
|
||||||
people object.
|
people object.
|
||||||
|
|
||||||
We can quickly review some testing concepts:
|
We can quickly review some testing concepts:
|
||||||
|
@ -55,10 +55,10 @@ const {run_test} = require("../zjsunit/test");
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// We are going to use mock versions of some of our libraries.
|
// We are going to use mock versions of some of our libraries.
|
||||||
const activity = mock_esm("../../web/src/activity");
|
const activity = mock_esm("../src/activity");
|
||||||
const message_live_update = mock_esm("../../web/src/message_live_update");
|
const message_live_update = mock_esm("../src/message_live_update");
|
||||||
const pm_list = mock_esm("../../web/src/pm_list");
|
const pm_list = mock_esm("../src/pm_list");
|
||||||
const settings_users = mock_esm("../../web/src/settings_users");
|
const settings_users = mock_esm("../src/settings_users");
|
||||||
|
|
||||||
// Use real versions of these modules.
|
// Use real versions of these modules.
|
||||||
const people = zrequire("people");
|
const people = zrequire("people");
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Our test from an earlier example verifies that the update events
|
Our test from an earlier example verifies that the update events
|
||||||
|
@ -20,15 +20,15 @@ const {run_test} = require("../zjsunit/test");
|
||||||
|
|
||||||
// First we tell the compiler to skip certain modules and just
|
// First we tell the compiler to skip certain modules and just
|
||||||
// replace them with {}.
|
// replace them with {}.
|
||||||
const huddle_data = mock_esm("../../web/src/huddle_data");
|
const huddle_data = mock_esm("../src/huddle_data");
|
||||||
const message_lists = mock_esm("../../web/src/message_lists");
|
const message_lists = mock_esm("../src/message_lists");
|
||||||
const message_util = mock_esm("../../web/src/message_util");
|
const message_util = mock_esm("../src/message_util");
|
||||||
const notifications = mock_esm("../../web/src/notifications");
|
const notifications = mock_esm("../src/notifications");
|
||||||
const pm_list = mock_esm("../../web/src/pm_list");
|
const pm_list = mock_esm("../src/pm_list");
|
||||||
const recent_topics_data = mock_esm("../../web/src/recent_topics_data");
|
const recent_topics_data = mock_esm("../src/recent_topics_data");
|
||||||
const stream_list = mock_esm("../../web/src/stream_list");
|
const stream_list = mock_esm("../src/stream_list");
|
||||||
const unread_ops = mock_esm("../../web/src/unread_ops");
|
const unread_ops = mock_esm("../src/unread_ops");
|
||||||
const unread_ui = mock_esm("../../web/src/unread_ui");
|
const unread_ui = mock_esm("../src/unread_ui");
|
||||||
|
|
||||||
message_lists.home = {};
|
message_lists.home = {};
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {make_stub} = require("../zjsunit/stub");
|
const {make_stub} = require("./lib/stub");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The previous example was a bit extreme. Generally we just
|
The previous example was a bit extreme. Generally we just
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
@ -49,11 +49,11 @@ const {run_test} = require("../zjsunit/test");
|
||||||
value.)
|
value.)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const channel = mock_esm("../../web/src/channel");
|
const channel = mock_esm("../src/channel");
|
||||||
const message_lists = mock_esm("../../web/src/message_lists");
|
const message_lists = mock_esm("../src/message_lists");
|
||||||
const message_viewport = mock_esm("../../web/src/message_viewport");
|
const message_viewport = mock_esm("../src/message_viewport");
|
||||||
const notifications = mock_esm("../../web/src/notifications");
|
const notifications = mock_esm("../src/notifications");
|
||||||
const unread_ui = mock_esm("../../web/src/unread_ui");
|
const unread_ui = mock_esm("../src/unread_ui");
|
||||||
|
|
||||||
message_lists.current = {};
|
message_lists.current = {};
|
||||||
message_lists.home = {};
|
message_lists.home = {};
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Until now, we had seen various testing techniques, learned
|
Until now, we had seen various testing techniques, learned
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
const fenced_code = zrequire("../shared/src/fenced_code");
|
const fenced_code = zrequire("../shared/src/fenced_code");
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
mock_esm("../../web/src/message_scroll", {
|
mock_esm("../src/message_scroll", {
|
||||||
hide_loading_older() {},
|
hide_loading_older() {},
|
||||||
|
|
||||||
show_loading_older() {},
|
show_loading_older() {},
|
|
@ -4,13 +4,13 @@ const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {parseOneAddress} = require("email-addresses");
|
const {parseOneAddress} = require("email-addresses");
|
||||||
|
|
||||||
const {mock_esm, with_overrides, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, with_overrides, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const message_store = mock_esm("../../web/src/message_store");
|
const message_store = mock_esm("../src/message_store");
|
||||||
|
|
||||||
const resolved_topic = zrequire("../shared/src/resolved_topic");
|
const resolved_topic = zrequire("../shared/src/resolved_topic");
|
||||||
const stream_data = zrequire("stream_data");
|
const stream_data = zrequire("stream_data");
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
const {FoldDict} = zrequire("fold_dict");
|
const {FoldDict} = zrequire("fold_dict");
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const gear_menu = zrequire("gear_menu");
|
const gear_menu = zrequire("gear_menu");
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
const hash_util = zrequire("hash_util");
|
const hash_util = zrequire("hash_util");
|
||||||
const stream_data = zrequire("stream_data");
|
const stream_data = zrequire("stream_data");
|
|
@ -2,33 +2,33 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
const {user_settings} = require("../zjsunit/zpage_params");
|
const {user_settings} = require("./lib/zpage_params");
|
||||||
|
|
||||||
let $window_stub;
|
let $window_stub;
|
||||||
set_global("to_$", () => $window_stub);
|
set_global("to_$", () => $window_stub);
|
||||||
|
|
||||||
mock_esm("../../web/src/search", {
|
mock_esm("../src/search", {
|
||||||
update_button_visibility() {},
|
update_button_visibility() {},
|
||||||
});
|
});
|
||||||
set_global("document", "document-stub");
|
set_global("document", "document-stub");
|
||||||
const history = set_global("history", {});
|
const history = set_global("history", {});
|
||||||
|
|
||||||
const admin = mock_esm("../../web/src/admin");
|
const admin = mock_esm("../src/admin");
|
||||||
const drafts = mock_esm("../../web/src/drafts");
|
const drafts = mock_esm("../src/drafts");
|
||||||
const info_overlay = mock_esm("../../web/src/info_overlay");
|
const info_overlay = mock_esm("../src/info_overlay");
|
||||||
const message_viewport = mock_esm("../../web/src/message_viewport");
|
const message_viewport = mock_esm("../src/message_viewport");
|
||||||
const narrow = mock_esm("../../web/src/narrow");
|
const narrow = mock_esm("../src/narrow");
|
||||||
const overlays = mock_esm("../../web/src/overlays");
|
const overlays = mock_esm("../src/overlays");
|
||||||
const recent_topics_ui = mock_esm("../../web/src/recent_topics_ui");
|
const recent_topics_ui = mock_esm("../src/recent_topics_ui");
|
||||||
const settings = mock_esm("../../web/src/settings");
|
const settings = mock_esm("../src/settings");
|
||||||
const stream_settings_ui = mock_esm("../../web/src/stream_settings_ui");
|
const stream_settings_ui = mock_esm("../src/stream_settings_ui");
|
||||||
const ui_util = mock_esm("../../web/src/ui_util");
|
const ui_util = mock_esm("../src/ui_util");
|
||||||
const ui_report = mock_esm("../../web/src/ui_report");
|
const ui_report = mock_esm("../src/ui_report");
|
||||||
mock_esm("../../web/src/top_left_corner", {
|
mock_esm("../src/top_left_corner", {
|
||||||
handle_narrow_deactivated() {},
|
handle_narrow_deactivated() {},
|
||||||
});
|
});
|
||||||
set_global("favicon", {});
|
set_global("favicon", {});
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, with_overrides, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, with_overrides, zrequire} = require("./lib/namespace");
|
||||||
const {make_stub} = require("../zjsunit/stub");
|
const {make_stub} = require("./lib/stub");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
// Important note on these tests:
|
// Important note on these tests:
|
||||||
|
|
||||||
|
@ -31,24 +31,24 @@ set_global("navigator", {
|
||||||
// jQuery stuff should go away if we make an initialize() method.
|
// jQuery stuff should go away if we make an initialize() method.
|
||||||
set_global("document", "document-stub");
|
set_global("document", "document-stub");
|
||||||
|
|
||||||
const browser_history = mock_esm("../../web/src/browser_history");
|
const browser_history = mock_esm("../src/browser_history");
|
||||||
const compose_actions = mock_esm("../../web/src/compose_actions");
|
const compose_actions = mock_esm("../src/compose_actions");
|
||||||
const condense = mock_esm("../../web/src/condense");
|
const condense = mock_esm("../src/condense");
|
||||||
const drafts = mock_esm("../../web/src/drafts");
|
const drafts = mock_esm("../src/drafts");
|
||||||
const emoji_picker = mock_esm("../../web/src/emoji_picker", {
|
const emoji_picker = mock_esm("../src/emoji_picker", {
|
||||||
reactions_popped: () => false,
|
reactions_popped: () => false,
|
||||||
});
|
});
|
||||||
const gear_menu = mock_esm("../../web/src/gear_menu", {
|
const gear_menu = mock_esm("../src/gear_menu", {
|
||||||
is_open: () => false,
|
is_open: () => false,
|
||||||
});
|
});
|
||||||
const lightbox = mock_esm("../../web/src/lightbox");
|
const lightbox = mock_esm("../src/lightbox");
|
||||||
const list_util = mock_esm("../../web/src/list_util");
|
const list_util = mock_esm("../src/list_util");
|
||||||
const message_edit = mock_esm("../../web/src/message_edit");
|
const message_edit = mock_esm("../src/message_edit");
|
||||||
const message_lists = mock_esm("../../web/src/message_lists");
|
const message_lists = mock_esm("../src/message_lists");
|
||||||
const muted_topics_ui = mock_esm("../../web/src/muted_topics_ui");
|
const muted_topics_ui = mock_esm("../src/muted_topics_ui");
|
||||||
const narrow = mock_esm("../../web/src/narrow");
|
const narrow = mock_esm("../src/narrow");
|
||||||
const navigate = mock_esm("../../web/src/navigate");
|
const navigate = mock_esm("../src/navigate");
|
||||||
const overlays = mock_esm("../../web/src/overlays", {
|
const overlays = mock_esm("../src/overlays", {
|
||||||
is_active: () => false,
|
is_active: () => false,
|
||||||
settings_open: () => false,
|
settings_open: () => false,
|
||||||
streams_open: () => false,
|
streams_open: () => false,
|
||||||
|
@ -58,31 +58,31 @@ const overlays = mock_esm("../../web/src/overlays", {
|
||||||
is_modal_open: () => false,
|
is_modal_open: () => false,
|
||||||
is_overlay_or_modal_open: () => overlays.is_modal_open() || overlays.is_active(),
|
is_overlay_or_modal_open: () => overlays.is_modal_open() || overlays.is_active(),
|
||||||
});
|
});
|
||||||
const popovers = mock_esm("../../web/src/popovers", {
|
const popovers = mock_esm("../src/popovers", {
|
||||||
user_info_manage_menu_popped: () => false,
|
user_info_manage_menu_popped: () => false,
|
||||||
message_info_popped: () => false,
|
message_info_popped: () => false,
|
||||||
user_sidebar_popped: () => false,
|
user_sidebar_popped: () => false,
|
||||||
user_info_popped: () => false,
|
user_info_popped: () => false,
|
||||||
});
|
});
|
||||||
const popover_menus = mock_esm("../../web/src/popover_menus", {
|
const popover_menus = mock_esm("../src/popover_menus", {
|
||||||
actions_popped: () => false,
|
actions_popped: () => false,
|
||||||
});
|
});
|
||||||
const reactions = mock_esm("../../web/src/reactions");
|
const reactions = mock_esm("../src/reactions");
|
||||||
const search = mock_esm("../../web/src/search");
|
const search = mock_esm("../src/search");
|
||||||
const settings_data = mock_esm("../../web/src/settings_data");
|
const settings_data = mock_esm("../src/settings_data");
|
||||||
const stream_list = mock_esm("../../web/src/stream_list");
|
const stream_list = mock_esm("../src/stream_list");
|
||||||
const stream_settings_ui = mock_esm("../../web/src/stream_settings_ui");
|
const stream_settings_ui = mock_esm("../src/stream_settings_ui");
|
||||||
|
|
||||||
mock_esm("../../web/src/hotspots", {
|
mock_esm("../src/hotspots", {
|
||||||
is_open: () => false,
|
is_open: () => false,
|
||||||
});
|
});
|
||||||
|
|
||||||
mock_esm("../../web/src/recent_topics_util", {
|
mock_esm("../src/recent_topics_util", {
|
||||||
is_visible: () => false,
|
is_visible: () => false,
|
||||||
is_in_focus: () => false,
|
is_in_focus: () => false,
|
||||||
});
|
});
|
||||||
|
|
||||||
const stream_popover = mock_esm("../../web/src/stream_popover", {
|
const stream_popover = mock_esm("../src/stream_popover", {
|
||||||
stream_popped: () => false,
|
stream_popped: () => false,
|
||||||
topic_popped: () => false,
|
topic_popped: () => false,
|
||||||
all_messages_popped: () => false,
|
all_messages_popped: () => false,
|
|
@ -4,9 +4,9 @@ const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const _ = require("lodash");
|
const _ = require("lodash");
|
||||||
|
|
||||||
const {unmock_module, zrequire} = require("../zjsunit/namespace");
|
const {unmock_module, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
// We download our translations in `page_params` (which
|
// We download our translations in `page_params` (which
|
||||||
// are for the user's chosen language), so we simulate
|
// are for the user's chosen language), so we simulate
|
||||||
|
@ -22,13 +22,13 @@ page_params.translation_data = {
|
||||||
|
|
||||||
// Re-register Zulip extensions so extensions registered previously with
|
// Re-register Zulip extensions so extensions registered previously with
|
||||||
// mocked i18n.ts do not interfere with following tests.
|
// mocked i18n.ts do not interfere with following tests.
|
||||||
require("../../web/src/templates");
|
require("../src/templates");
|
||||||
|
|
||||||
// All of our other tests stub out i18n activity;
|
// All of our other tests stub out i18n activity;
|
||||||
// here we do a quick sanity check on the engine itself.
|
// here we do a quick sanity check on the engine itself.
|
||||||
// `i18n.js` initializes FormatJS and is imported by
|
// `i18n.js` initializes FormatJS and is imported by
|
||||||
// `templates.js`.
|
// `templates.js`.
|
||||||
unmock_module("../../web/src/i18n");
|
unmock_module("../src/i18n");
|
||||||
const {$t, $t_html, get_language_name, get_language_list_columns, initialize} = zrequire("i18n");
|
const {$t, $t_html, get_language_name, get_language_list_columns, initialize} = zrequire("i18n");
|
||||||
|
|
||||||
run_test("$t", () => {
|
run_test("$t", () => {
|
||||||
|
@ -89,7 +89,7 @@ run_test("t_tag", ({mock_template}) => {
|
||||||
assert.ok(html.indexOf("Citer et répondre ou transférer") > 0);
|
assert.ok(html.indexOf("Citer et répondre ou transférer") > 0);
|
||||||
});
|
});
|
||||||
|
|
||||||
require("../../web/templates/actions_popover_content.hbs")(args);
|
require("../templates/actions_popover_content.hbs")(args);
|
||||||
});
|
});
|
||||||
|
|
||||||
run_test("tr_tag", ({mock_template}) => {
|
run_test("tr_tag", ({mock_template}) => {
|
||||||
|
@ -117,7 +117,7 @@ run_test("tr_tag", ({mock_template}) => {
|
||||||
assert.equal(data, args);
|
assert.equal(data, args);
|
||||||
assert.ok(html.indexOf("Déclencheurs de notification") > 0);
|
assert.ok(html.indexOf("Déclencheurs de notification") > 0);
|
||||||
});
|
});
|
||||||
require("../../web/templates/settings_tab.hbs")(args);
|
require("../templates/settings_tab.hbs")(args);
|
||||||
});
|
});
|
||||||
|
|
||||||
run_test("language_list", () => {
|
run_test("language_list", () => {
|
|
@ -2,17 +2,17 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
set_global("document", {});
|
set_global("document", {});
|
||||||
|
|
||||||
const noop = () => {};
|
const noop = () => {};
|
||||||
const example_img_link = "http://example.com/example.png";
|
const example_img_link = "http://example.com/example.png";
|
||||||
|
|
||||||
mock_esm("../../web/src/ui_util", {
|
mock_esm("../src/ui_util", {
|
||||||
place_caret_at_end: noop,
|
place_caret_at_end: noop,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ function pill_html(value, img_src, status_emoji_info) {
|
||||||
opts.status_emoji_info = status_emoji_info;
|
opts.status_emoji_info = status_emoji_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
return require("../../web/templates/input_pill.hbs")(opts);
|
return require("../templates/input_pill.hbs")(opts);
|
||||||
}
|
}
|
||||||
|
|
||||||
run_test("basics", ({mock_template}) => {
|
run_test("basics", ({mock_template}) => {
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
const internal_url = zrequire("../shared/src/internal_url");
|
const internal_url = zrequire("../shared/src/internal_url");
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
const keydown_util = zrequire("keydown_util");
|
const keydown_util = zrequire("keydown_util");
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
|
|
||||||
const {LazySet} = zrequire("lazy_set");
|
const {LazySet} = zrequire("lazy_set");
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const compose_banner = require("../../../web/src/compose_banner");
|
const compose_banner = require("../../src/compose_banner");
|
||||||
const $ = require("../../zjsunit/zjquery");
|
|
||||||
|
const $ = require("./zjquery");
|
||||||
|
|
||||||
exports.mock_banners = () => {
|
exports.mock_banners = () => {
|
||||||
// zjquery doesn't support `remove`, which is used when clearing the compose box.
|
// zjquery doesn't support `remove`, which is used when clearing the compose box.
|
|
@ -27,10 +27,8 @@ global.navigator = {
|
||||||
require("@babel/register")({
|
require("@babel/register")({
|
||||||
extensions: [".es6", ".es", ".jsx", ".js", ".mjs", ".ts"],
|
extensions: [".es6", ".es", ".jsx", ".js", ".mjs", ".ts"],
|
||||||
only: [
|
only: [
|
||||||
new RegExp("^" + _.escapeRegExp(path.resolve(__dirname, "../../web/src") + path.sep)),
|
new RegExp("^" + _.escapeRegExp(path.resolve(__dirname, "../../shared/src") + path.sep)),
|
||||||
new RegExp(
|
new RegExp("^" + _.escapeRegExp(path.resolve(__dirname, "../../src") + path.sep)),
|
||||||
"^" + _.escapeRegExp(path.resolve(__dirname, "../../web/shared/src") + path.sep),
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
plugins: [
|
plugins: [
|
||||||
"babel-plugin-rewire-ts",
|
"babel-plugin-rewire-ts",
|
||||||
|
@ -90,12 +88,12 @@ function short_tb(tb) {
|
||||||
return lines.splice(0, i + 1).join("\n") + "\n(...)\n";
|
return lines.splice(0, i + 1).join("\n") + "\n(...)\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
require("../../web/src/templates"); // register Zulip extensions
|
require("../../src/templates"); // register Zulip extensions
|
||||||
|
|
||||||
async function run_one_module(file) {
|
async function run_one_module(file) {
|
||||||
zjquery.clear_initialize_function();
|
zjquery.clear_initialize_function();
|
||||||
zjquery.clear_all_elements();
|
zjquery.clear_all_elements();
|
||||||
console.info("running test " + path.basename(file, ".js"));
|
console.info("running test " + path.basename(file, ".test.js"));
|
||||||
test.set_current_file_name(file);
|
test.set_current_file_name(file);
|
||||||
test.suite.length = 0;
|
test.suite.length = 0;
|
||||||
require(file);
|
require(file);
|
||||||
|
@ -121,16 +119,16 @@ test.set_verbose(files.length === 1);
|
||||||
_.debounce = immediate;
|
_.debounce = immediate;
|
||||||
zpage_params.reset();
|
zpage_params.reset();
|
||||||
|
|
||||||
namespace.mock_esm("../../web/src/blueslip", blueslip);
|
namespace.mock_esm("../../src/blueslip", blueslip);
|
||||||
require("../../web/src/blueslip");
|
require("../../src/blueslip");
|
||||||
namespace.mock_esm("../../web/src/i18n", stub_i18n);
|
namespace.mock_esm("../../src/i18n", stub_i18n);
|
||||||
require("../../web/src/i18n");
|
require("../../src/i18n");
|
||||||
namespace.mock_esm("../../web/src/page_params", zpage_params);
|
namespace.mock_esm("../../src/page_params", zpage_params);
|
||||||
require("../../web/src/page_params");
|
require("../../src/page_params");
|
||||||
namespace.mock_esm("../../web/src/user_settings", zpage_params);
|
namespace.mock_esm("../../src/user_settings", zpage_params);
|
||||||
require("../../web/src/user_settings");
|
require("../../src/user_settings");
|
||||||
namespace.mock_esm("../../web/src/realm_user_settings_defaults", zpage_params);
|
namespace.mock_esm("../../src/realm_user_settings_defaults", zpage_params);
|
||||||
require("../../web/src/realm_user_settings_defaults");
|
require("../../src/realm_user_settings_defaults");
|
||||||
|
|
||||||
await run_one_module(file);
|
await run_one_module(file);
|
||||||
|
|
|
@ -6,7 +6,7 @@ const path = require("path");
|
||||||
|
|
||||||
const callsites = require("callsites");
|
const callsites = require("callsites");
|
||||||
|
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./zjquery");
|
||||||
|
|
||||||
const new_globals = new Set();
|
const new_globals = new Set();
|
||||||
let old_globals = {};
|
let old_globals = {};
|
||||||
|
@ -18,7 +18,7 @@ const used_module_mocks = new Set();
|
||||||
const used_templates = new Set();
|
const used_templates = new Set();
|
||||||
|
|
||||||
const jquery_path = require.resolve("jquery");
|
const jquery_path = require.resolve("jquery");
|
||||||
const real_jquery_path = require.resolve("../zjsunit/real_jquery.js");
|
const real_jquery_path = require.resolve("./real_jquery.js");
|
||||||
|
|
||||||
let in_mid_render = false;
|
let in_mid_render = false;
|
||||||
let jquery_function;
|
let jquery_function;
|
||||||
|
@ -268,10 +268,11 @@ exports.zrequire = function (short_fn) {
|
||||||
`,
|
`,
|
||||||
);
|
);
|
||||||
|
|
||||||
return require(`../../web/src/${short_fn}`);
|
return require(`../../src/${short_fn}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
const webPath = path.resolve(__dirname, "../../web") + path.sep;
|
const webPath = path.resolve(__dirname, "../..") + path.sep;
|
||||||
|
const testsLibPath = __dirname + path.sep;
|
||||||
|
|
||||||
exports.complain_about_unused_mocks = function () {
|
exports.complain_about_unused_mocks = function () {
|
||||||
for (const filename of module_mocks.keys()) {
|
for (const filename of module_mocks.keys()) {
|
||||||
|
@ -301,7 +302,7 @@ exports.finish = function () {
|
||||||
used_module_mocks.clear();
|
used_module_mocks.clear();
|
||||||
|
|
||||||
for (const path of Object.keys(require.cache)) {
|
for (const path of Object.keys(require.cache)) {
|
||||||
if (path.startsWith(webPath)) {
|
if (path.startsWith(webPath) && !path.startsWith(testsLibPath)) {
|
||||||
delete require.cache[path];
|
delete require.cache[path];
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,23 +2,23 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
set_global("Image", class Image {});
|
set_global("Image", class Image {});
|
||||||
mock_esm("../../web/src/overlays", {
|
mock_esm("../src/overlays", {
|
||||||
close_overlay() {},
|
close_overlay() {},
|
||||||
|
|
||||||
close_active() {},
|
close_active() {},
|
||||||
open_overlay() {},
|
open_overlay() {},
|
||||||
});
|
});
|
||||||
mock_esm("../../web/src/popovers", {
|
mock_esm("../src/popovers", {
|
||||||
hide_all() {},
|
hide_all() {},
|
||||||
});
|
});
|
||||||
const rows = mock_esm("../../web/src/rows");
|
const rows = mock_esm("../src/rows");
|
||||||
|
|
||||||
const message_store = mock_esm("../../web/src/message_store");
|
const message_store = mock_esm("../src/message_store");
|
||||||
|
|
||||||
const lightbox = zrequire("lightbox");
|
const lightbox = zrequire("lightbox");
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
|
|
||||||
const linkifiers = zrequire("linkifiers");
|
const linkifiers = zrequire("linkifiers");
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
const {ListCursor} = zrequire("list_cursor");
|
const {ListCursor} = zrequire("list_cursor");
|
||||||
|
|
|
@ -2,15 +2,15 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, mock_jquery, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, mock_jquery, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
|
|
||||||
// We need these stubs to get by instanceof checks.
|
// We need these stubs to get by instanceof checks.
|
||||||
// The ListWidget library allows you to insert objects
|
// The ListWidget library allows you to insert objects
|
||||||
// that are either jQuery, Element, or just raw HTML
|
// that are either jQuery, Element, or just raw HTML
|
||||||
// strings. We initially test with raw strings.
|
// strings. We initially test with raw strings.
|
||||||
const ui = mock_esm("../../web/src/ui");
|
const ui = mock_esm("../src/ui");
|
||||||
|
|
||||||
// We only need very simple jQuery wrappers for when the
|
// We only need very simple jQuery wrappers for when the
|
||||||
|
|
|
@ -3,10 +3,11 @@
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const markdown_test_cases = require("../../zerver/tests/fixtures/markdown_test_cases");
|
const markdown_test_cases = require("../../zerver/tests/fixtures/markdown_test_cases");
|
||||||
const markdown_assert = require("../zjsunit/markdown_assert");
|
|
||||||
const {set_global, zrequire} = require("../zjsunit/namespace");
|
const markdown_assert = require("./lib/markdown_assert");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {set_global, zrequire} = require("./lib/namespace");
|
||||||
const {page_params, user_settings} = require("../zjsunit/zpage_params");
|
const {run_test} = require("./lib/test");
|
||||||
|
const {page_params, user_settings} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const example_realm_linkifiers = [
|
const example_realm_linkifiers = [
|
||||||
{
|
{
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
const markdown = zrequire("markdown");
|
const markdown = zrequire("markdown");
|
||||||
const linkifiers = zrequire("linkifiers");
|
const linkifiers = zrequire("linkifiers");
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
page_params.realm_move_messages_within_stream_limit_seconds = 259200;
|
page_params.realm_move_messages_within_stream_limit_seconds = 259200;
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ const message_edit = zrequire("message_edit");
|
||||||
|
|
||||||
const is_content_editable = message_edit.is_content_editable;
|
const is_content_editable = message_edit.is_content_editable;
|
||||||
|
|
||||||
const settings_data = mock_esm("../../web/src/settings_data");
|
const settings_data = mock_esm("../src/settings_data");
|
||||||
|
|
||||||
run_test("is_content_editable", () => {
|
run_test("is_content_editable", () => {
|
||||||
// You can't edit a null message
|
// You can't edit a null message
|
|
@ -2,18 +2,18 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const condense = mock_esm("../../web/src/condense");
|
const condense = mock_esm("../src/condense");
|
||||||
const message_edit = mock_esm("../../web/src/message_edit");
|
const message_edit = mock_esm("../src/message_edit");
|
||||||
const message_lists = mock_esm("../../web/src/message_lists");
|
const message_lists = mock_esm("../src/message_lists");
|
||||||
const notifications = mock_esm("../../web/src/notifications");
|
const notifications = mock_esm("../src/notifications");
|
||||||
const pm_list = mock_esm("../../web/src/pm_list");
|
const pm_list = mock_esm("../src/pm_list");
|
||||||
const stream_list = mock_esm("../../web/src/stream_list");
|
const stream_list = mock_esm("../src/stream_list");
|
||||||
const unread_ui = mock_esm("../../web/src/unread_ui");
|
const unread_ui = mock_esm("../src/unread_ui");
|
||||||
message_lists.current = {};
|
message_lists.current = {};
|
||||||
message_lists.all_rendered_message_lists = () => [message_lists.home, message_lists.current];
|
message_lists.all_rendered_message_lists = () => [message_lists.home, message_lists.current];
|
||||||
|
|
|
@ -4,10 +4,10 @@ const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const _ = require("lodash");
|
const _ = require("lodash");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
set_global("document", "document-stub");
|
set_global("document", "document-stub");
|
||||||
|
|
||||||
|
@ -20,27 +20,27 @@ function MessageListView() {
|
||||||
prepend: noop,
|
prepend: noop,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
mock_esm("../../web/src/message_list_view", {
|
mock_esm("../src/message_list_view", {
|
||||||
MessageListView,
|
MessageListView,
|
||||||
});
|
});
|
||||||
|
|
||||||
mock_esm("../../web/src/recent_topics_ui", {
|
mock_esm("../src/recent_topics_ui", {
|
||||||
process_messages: noop,
|
process_messages: noop,
|
||||||
show_loading_indicator: noop,
|
show_loading_indicator: noop,
|
||||||
hide_loading_indicator: noop,
|
hide_loading_indicator: noop,
|
||||||
});
|
});
|
||||||
mock_esm("../../web/src/ui_report", {
|
mock_esm("../src/ui_report", {
|
||||||
hide_error: noop,
|
hide_error: noop,
|
||||||
});
|
});
|
||||||
|
|
||||||
const channel = mock_esm("../../web/src/channel");
|
const channel = mock_esm("../src/channel");
|
||||||
const message_helper = mock_esm("../../web/src/message_helper");
|
const message_helper = mock_esm("../src/message_helper");
|
||||||
const message_lists = mock_esm("../../web/src/message_lists");
|
const message_lists = mock_esm("../src/message_lists");
|
||||||
const message_util = mock_esm("../../web/src/message_util");
|
const message_util = mock_esm("../src/message_util");
|
||||||
const stream_list = mock_esm("../../web/src/stream_list", {
|
const stream_list = mock_esm("../src/stream_list", {
|
||||||
maybe_scroll_narrow_into_view() {},
|
maybe_scroll_narrow_into_view() {},
|
||||||
});
|
});
|
||||||
mock_esm("../../web/src/message_scroll", {
|
mock_esm("../src/message_scroll", {
|
||||||
show_loading_older: noop,
|
show_loading_older: noop,
|
||||||
hide_loading_older: noop,
|
hide_loading_older: noop,
|
||||||
show_loading_newer: noop,
|
show_loading_newer: noop,
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, with_overrides, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, with_overrides, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
const channel = mock_esm("../../web/src/channel");
|
const channel = mock_esm("../src/channel");
|
||||||
const ui = mock_esm("../../web/src/ui");
|
const ui = mock_esm("../src/ui");
|
||||||
|
|
||||||
mock_esm("../../web/src/starred_messages", {
|
mock_esm("../src/starred_messages", {
|
||||||
add() {},
|
add() {},
|
||||||
get_starred_msg_ids: () => [1, 2, 3, 4, 5],
|
get_starred_msg_ids: () => [1, 2, 3, 4, 5],
|
||||||
remove() {},
|
remove() {},
|
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const {make_stub} = require("../zjsunit/stub");
|
const {make_stub} = require("./lib/stub");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
// These unit tests for web/src/message_list.js emphasize the model-ish
|
// These unit tests for web/src/message_list.js emphasize the model-ish
|
||||||
// aspects of the MessageList class. We have to stub out a few functions
|
// aspects of the MessageList class. We have to stub out a few functions
|
||||||
|
@ -23,8 +23,8 @@ set_global("document", {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const narrow_state = mock_esm("../../web/src/narrow_state");
|
const narrow_state = mock_esm("../src/narrow_state");
|
||||||
const stream_data = mock_esm("../../web/src/stream_data");
|
const stream_data = mock_esm("../src/stream_data");
|
||||||
|
|
||||||
const {MessageList} = zrequire("message_list");
|
const {MessageList} = zrequire("message_list");
|
||||||
function MessageListView() {
|
function MessageListView() {
|
||||||
|
@ -35,7 +35,7 @@ function MessageListView() {
|
||||||
clear_rendering_state: noop,
|
clear_rendering_state: noop,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
mock_esm("../../web/src/message_list_view", {
|
mock_esm("../src/message_list_view", {
|
||||||
MessageListView,
|
MessageListView,
|
||||||
});
|
});
|
||||||
const {Filter} = zrequire("filter");
|
const {Filter} = zrequire("filter");
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
|
|
||||||
const user_topics = zrequire("user_topics");
|
const user_topics = zrequire("user_topics");
|
||||||
const muted_users = zrequire("muted_users");
|
const muted_users = zrequire("muted_users");
|
|
@ -4,16 +4,16 @@ const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const _ = require("lodash");
|
const _ = require("lodash");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
set_global("document", "document-stub");
|
set_global("document", "document-stub");
|
||||||
|
|
||||||
const noop = () => {};
|
const noop = () => {};
|
||||||
|
|
||||||
// timerender calls setInterval when imported
|
// timerender calls setInterval when imported
|
||||||
mock_esm("../../web/src/timerender", {
|
mock_esm("../src/timerender", {
|
||||||
render_date(time) {
|
render_date(time) {
|
||||||
return [{outerHTML: String(time.getTime())}];
|
return [{outerHTML: String(time.getTime())}];
|
||||||
},
|
},
|
||||||
|
@ -22,7 +22,7 @@ mock_esm("../../web/src/timerender", {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
mock_esm("../../web/src/rows", {
|
mock_esm("../src/rows", {
|
||||||
get_table() {
|
get_table() {
|
||||||
return {
|
return {
|
||||||
children() {
|
children() {
|
||||||
|
@ -34,7 +34,7 @@ mock_esm("../../web/src/rows", {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
mock_esm("../../web/src/people", {
|
mock_esm("../src/people", {
|
||||||
sender_is_bot: () => false,
|
sender_is_bot: () => false,
|
||||||
sender_is_guest: () => false,
|
sender_is_guest: () => false,
|
||||||
small_avatar_url: () => "fake/small/avatar/url",
|
small_avatar_url: () => "fake/small/avatar/url",
|
|
@ -2,18 +2,18 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const noop = () => {};
|
const noop = () => {};
|
||||||
|
|
||||||
mock_esm("../../web/src/stream_topic_history", {
|
mock_esm("../src/stream_topic_history", {
|
||||||
add_message: noop,
|
add_message: noop,
|
||||||
});
|
});
|
||||||
|
|
||||||
mock_esm("../../web/src/recent_senders", {
|
mock_esm("../src/recent_senders", {
|
||||||
process_stream_message: noop,
|
process_stream_message: noop,
|
||||||
process_private_message: noop,
|
process_private_message: noop,
|
||||||
});
|
});
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {zrequire} = require("../zjsunit/namespace");
|
const {zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
|
|
||||||
const muted_users = zrequire("muted_users");
|
const muted_users = zrequire("muted_users");
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("./lib/zblueslip");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
const {page_params} = require("../zjsunit/zpage_params");
|
const {page_params} = require("./lib/zpage_params");
|
||||||
|
|
||||||
const hash_util = zrequire("hash_util");
|
const hash_util = zrequire("hash_util");
|
||||||
const compose_state = zrequire("compose_state");
|
const compose_state = zrequire("compose_state");
|
||||||
|
@ -18,11 +18,11 @@ const {Filter} = zrequire("../src/filter");
|
||||||
const narrow = zrequire("narrow");
|
const narrow = zrequire("narrow");
|
||||||
const settings_config = zrequire("settings_config");
|
const settings_config = zrequire("settings_config");
|
||||||
|
|
||||||
const compose_pm_pill = mock_esm("../../web/src/compose_pm_pill");
|
const compose_pm_pill = mock_esm("../src/compose_pm_pill");
|
||||||
mock_esm("../../web/src/spectators", {
|
mock_esm("../src/spectators", {
|
||||||
login_to_access() {},
|
login_to_access() {},
|
||||||
});
|
});
|
||||||
const recent_topics_util = mock_esm("../../web/src/recent_topics_util", {
|
const recent_topics_util = mock_esm("../src/recent_topics_util", {
|
||||||
is_visible() {},
|
is_visible() {},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ function empty_narrow_html(title, html, search_data) {
|
||||||
html,
|
html,
|
||||||
search_data,
|
search_data,
|
||||||
};
|
};
|
||||||
return require("../../web/templates/empty_feed_notice.hbs")(opts);
|
return require("../templates/empty_feed_notice.hbs")(opts);
|
||||||
}
|
}
|
||||||
|
|
||||||
function set_filter(operators) {
|
function set_filter(operators) {
|
|
@ -2,38 +2,38 @@
|
||||||
|
|
||||||
const {strict: assert} = require("assert");
|
const {strict: assert} = require("assert");
|
||||||
|
|
||||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, set_global, zrequire} = require("./lib/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("./lib/test");
|
||||||
const $ = require("../zjsunit/zjquery");
|
const $ = require("./lib/zjquery");
|
||||||
|
|
||||||
mock_esm("../../web/src/resize", {
|
mock_esm("../src/resize", {
|
||||||
resize_stream_filters_container() {},
|
resize_stream_filters_container() {},
|
||||||
});
|
});
|
||||||
|
|
||||||
const all_messages_data = mock_esm("../../web/src/all_messages_data");
|
const all_messages_data = mock_esm("../src/all_messages_data");
|
||||||
const channel = mock_esm("../../web/src/channel");
|
const channel = mock_esm("../src/channel");
|
||||||
const compose_actions = mock_esm("../../web/src/compose_actions");
|
const compose_actions = mock_esm("../src/compose_actions");
|
||||||
const compose_banner = mock_esm("../../web/src/compose_banner");
|
const compose_banner = mock_esm("../src/compose_banner");
|
||||||
const compose_closed_ui = mock_esm("../../web/src/compose_closed_ui");
|
const compose_closed_ui = mock_esm("../src/compose_closed_ui");
|
||||||
const hashchange = mock_esm("../../web/src/hashchange");
|
const hashchange = mock_esm("../src/hashchange");
|
||||||
const message_fetch = mock_esm("../../web/src/message_fetch");
|
const message_fetch = mock_esm("../src/message_fetch");
|
||||||
const message_list = mock_esm("../../web/src/message_list");
|
const message_list = mock_esm("../src/message_list");
|
||||||
const message_lists = mock_esm("../../web/src/message_lists", {
|
const message_lists = mock_esm("../src/message_lists", {
|
||||||
home: {},
|
home: {},
|
||||||
current: {},
|
current: {},
|
||||||
set_current(msg_list) {
|
set_current(msg_list) {
|
||||||
message_lists.current = msg_list;
|
message_lists.current = msg_list;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const message_scroll = mock_esm("../../web/src/message_scroll");
|
const message_scroll = mock_esm("../src/message_scroll");
|
||||||
const message_view_header = mock_esm("../../web/src/message_view_header");
|
const message_view_header = mock_esm("../src/message_view_header");
|
||||||
const notifications = mock_esm("../../web/src/notifications");
|
const notifications = mock_esm("../src/notifications");
|
||||||
const search = mock_esm("../../web/src/search");
|
const search = mock_esm("../src/search");
|
||||||
const stream_list = mock_esm("../../web/src/stream_list");
|
const stream_list = mock_esm("../src/stream_list");
|
||||||
const top_left_corner = mock_esm("../../web/src/top_left_corner");
|
const top_left_corner = mock_esm("../src/top_left_corner");
|
||||||
const typing_events = mock_esm("../../web/src/typing_events");
|
const typing_events = mock_esm("../src/typing_events");
|
||||||
const unread_ops = mock_esm("../../web/src/unread_ops");
|
const unread_ops = mock_esm("../src/unread_ops");
|
||||||
mock_esm("../../web/src/recent_topics_util", {
|
mock_esm("../src/recent_topics_util", {
|
||||||
is_visible() {},
|
is_visible() {},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ set_global("setTimeout", (f, t) => {
|
||||||
f();
|
f();
|
||||||
});
|
});
|
||||||
|
|
||||||
mock_esm("../../web/src/user_topics", {
|
mock_esm("../src/user_topics", {
|
||||||
is_topic_muted: () => false,
|
is_topic_muted: () => false,
|
||||||
});
|
});
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue