diff options
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)); +} |