diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /toolkit/components/telemetry/tests/unit/test_UserInteraction.js | |
parent | Initial commit. (diff) | |
download | firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/telemetry/tests/unit/test_UserInteraction.js')
-rw-r--r-- | toolkit/components/telemetry/tests/unit/test_UserInteraction.js | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/toolkit/components/telemetry/tests/unit/test_UserInteraction.js b/toolkit/components/telemetry/tests/unit/test_UserInteraction.js new file mode 100644 index 0000000000..5fc3c5ecd1 --- /dev/null +++ b/toolkit/components/telemetry/tests/unit/test_UserInteraction.js @@ -0,0 +1,134 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +const TEST_USER_INTERACTION_ID = "testing.interaction"; +const TEST_VALUE_1 = "some value"; +const TEST_VALUE_2 = "some other value"; +const TEST_INVALID_VALUE = + "This is a value that is far too long - it has too many characters."; +const TEST_ADDITIONAL_TEXT_1 = "some additional text"; +const TEST_ADDITIONAL_TEXT_2 = "some other additional text"; + +function run_test() { + let obj1 = {}; + let obj2 = {}; + + Assert.ok(UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_VALUE_1)); + Assert.ok( + UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_VALUE_1, obj1) + ); + Assert.ok( + UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_VALUE_1, obj2) + ); + + Assert.ok(UserInteraction.running(TEST_USER_INTERACTION_ID)); + Assert.ok(UserInteraction.running(TEST_USER_INTERACTION_ID, obj1)); + Assert.ok(UserInteraction.running(TEST_USER_INTERACTION_ID, obj2)); + + // Unlike TelemetryStopwatch, we can clobber UserInteractions. + Assert.ok(UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_VALUE_1)); + Assert.ok( + UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_VALUE_1, obj1) + ); + Assert.ok( + UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_VALUE_1, obj2) + ); + + Assert.ok(UserInteraction.running(TEST_USER_INTERACTION_ID)); + Assert.ok(UserInteraction.running(TEST_USER_INTERACTION_ID, obj1)); + Assert.ok(UserInteraction.running(TEST_USER_INTERACTION_ID, obj2)); + + // Ensure that we can finish a UserInteraction that was accidentally started + // twice + Assert.ok(UserInteraction.finish(TEST_USER_INTERACTION_ID)); + Assert.ok(UserInteraction.finish(TEST_USER_INTERACTION_ID, obj1)); + Assert.ok(UserInteraction.finish(TEST_USER_INTERACTION_ID, obj2)); + + // Make sure we can't start or finish non-existent UserInteractions. + Assert.ok(!UserInteraction.start("non-existent.interaction", TEST_VALUE_1)); + Assert.ok( + !UserInteraction.start("non-existent.interaction", TEST_VALUE_1, obj1) + ); + Assert.ok( + !UserInteraction.start("non-existent.interaction", TEST_VALUE_1, obj2) + ); + Assert.ok(!UserInteraction.running("non-existent.interaction")); + Assert.ok(!UserInteraction.running("non-existent.interaction", obj1)); + Assert.ok(!UserInteraction.running("non-existent.interaction", obj2)); + Assert.ok(!UserInteraction.finish("non-existent.interaction")); + Assert.ok(!UserInteraction.finish("non-existent.interaction", obj1)); + Assert.ok(!UserInteraction.finish("non-existent.interaction", obj2)); + + // Ensure that we enforce the character limit on value strings. + Assert.ok( + !UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_INVALID_VALUE) + ); + Assert.ok( + !UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_INVALID_VALUE, obj1) + ); + Assert.ok( + !UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_INVALID_VALUE, obj2) + ); + Assert.ok(!UserInteraction.running(TEST_USER_INTERACTION_ID)); + Assert.ok(!UserInteraction.running(TEST_USER_INTERACTION_ID, obj1)); + Assert.ok(!UserInteraction.running(TEST_USER_INTERACTION_ID, obj2)); + + // Verify that they can be used again + Assert.ok(UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_VALUE_2)); + Assert.ok( + UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_VALUE_2, obj1) + ); + Assert.ok( + UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_VALUE_2, obj2) + ); + Assert.ok(UserInteraction.running(TEST_USER_INTERACTION_ID)); + Assert.ok(UserInteraction.running(TEST_USER_INTERACTION_ID, obj1)); + Assert.ok(UserInteraction.running(TEST_USER_INTERACTION_ID, obj2)); + Assert.ok(UserInteraction.finish(TEST_USER_INTERACTION_ID)); + Assert.ok(UserInteraction.finish(TEST_USER_INTERACTION_ID, obj1)); + Assert.ok(UserInteraction.finish(TEST_USER_INTERACTION_ID, obj2)); + + Assert.ok(!UserInteraction.finish(TEST_USER_INTERACTION_ID)); + Assert.ok(!UserInteraction.finish(TEST_USER_INTERACTION_ID, obj1)); + Assert.ok(!UserInteraction.finish(TEST_USER_INTERACTION_ID, obj2)); + Assert.ok(!UserInteraction.running(TEST_USER_INTERACTION_ID)); + Assert.ok(!UserInteraction.running(TEST_USER_INTERACTION_ID, obj1)); + Assert.ok(!UserInteraction.running(TEST_USER_INTERACTION_ID, obj2)); + + // Verify that they can be used again with different values. + Assert.ok(UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_VALUE_1)); + Assert.ok( + UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_VALUE_2, obj1) + ); + Assert.ok( + UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_VALUE_1, obj2) + ); + Assert.ok(UserInteraction.running(TEST_USER_INTERACTION_ID)); + Assert.ok(UserInteraction.running(TEST_USER_INTERACTION_ID, obj1)); + Assert.ok(UserInteraction.running(TEST_USER_INTERACTION_ID, obj2)); + Assert.ok(UserInteraction.finish(TEST_USER_INTERACTION_ID)); + Assert.ok( + UserInteraction.finish( + TEST_USER_INTERACTION_ID, + obj1, + TEST_ADDITIONAL_TEXT_1 + ) + ); + Assert.ok( + UserInteraction.finish( + TEST_USER_INTERACTION_ID, + obj2, + TEST_ADDITIONAL_TEXT_2 + ) + ); + + // Test that they can be cancelled + Assert.ok(UserInteraction.start(TEST_USER_INTERACTION_ID, TEST_VALUE_1)); + Assert.ok(UserInteraction.cancel(TEST_USER_INTERACTION_ID)); + Assert.ok(!UserInteraction.running(TEST_USER_INTERACTION_ID)); + Assert.ok(!UserInteraction.finish(TEST_USER_INTERACTION_ID)); + + // Test that they cannot be cancelled twice + Assert.ok(!UserInteraction.cancel(TEST_USER_INTERACTION_ID)); + Assert.ok(!UserInteraction.cancel(TEST_USER_INTERACTION_ID)); +} |