diff --git a/qa/lint.txt b/qa/lint.txt new file mode 100644 index 0000000..708d505 --- /dev/null +++ b/qa/lint.txt @@ -0,0 +1 @@ +Test git rev: 6e04bc0ed9f971ad63958a4c30b2daa1904127c4 diff --git a/qa/unit-test.txt b/qa/unit-test.txt new file mode 100644 index 0000000..f338747 --- /dev/null +++ b/qa/unit-test.txt @@ -0,0 +1,294 @@ +Test git rev: 6e04bc0ed9f971ad63958a4c30b2daa1904127c4 +Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] +What's your favorite int? + + +What's your favorite int? + + +What's your favorite int? + + +Is the Company the client? +[y=client/n=contractor] +Is the Company the client? +[y=client/n=contractor] +Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] +Enter one or more comma separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more comma separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more comma separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more "|' separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more "|' separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more "~' separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more ".' separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more "&' separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more "(' separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more ")' separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more "{' separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more "}' separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more "|&(' separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more " ' separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more " ' separated values. +Is the Company the client? [y=client/n=contractor] + +1) Hi +2) Bye + +Enter one or more comma separated selections. +Is the Company the client? [y=client/n=contractor] + +1) Hi +2) Bye + +Enter one or more comma separated selections. +Is the Company the client? [y=client/n=contractor] + +1) Hi +2) Bye + +Enter one or more comma separated selections. +Is the Company the client? [y=client/n=contractor] + +1) Hi +2) Bye + +Enter one or more "|' separated selections. +Is the Company the client? [y=client/n=contractor] + +1) Hi +2) Bye + +Enter one or more "~' separated selections. +Is the Company the client? [y=client/n=contractor] + +1) Hi +2) Bye + +Enter one or more "|&(' separated selections. +Is the Company the client? [y=client/n=contractor] + +1) Hi +2) Bye + +Enter one or more " ' separated selections. +Is the Company the client? [y=client/n=contractor] + +1) Hi +2) Bye + +Enter one or more " ' separated selections. +Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] Is the Company the client? +[y=client/n=contractor] +Enter one or more comma separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more comma separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more comma separated values. +Is the Company the client? +[y=client/n=contractor] +Enter one or more comma separated values. +Is the Company the client? +[y=client/n=contractor] +PASS lib/test/questioner.test.js + Questioner + QnA flow + ✓ skips questions with a pre-existing parameter value (from previous question) (62 ms) + ✓ question is skipped if parameter defined in initial values (1 ms) + ✓ initially defined string values are transformed according to the parameter type (bool) + ✓ initially defined string values are transformed according to the parameter type (int) (1 ms) + ✓ when question is condition-skipped, uses 'elseValue' if present (1 ms) + ✓ Will re-ask questions when answer form invalid (61 ms) + ✓ Will raise an exception on an invalid parameter type. (24 ms) + ✓ Will raise an exception on no 'parameter' for question. (1 ms) + boolean questions + ✓ simple boolean question answer 'y' -> true (8 ms) + ✓ simple boolean question answer 'n' -> false (1 ms) + ✓ simple boolean question answer 'Y' -> true (1 ms) + ✓ simple boolean question answer 'N' -> false (1 ms) + ✓ simple boolean question answer 't' -> true (2 ms) + ✓ simple boolean question answer 'T' -> true (1 ms) + ✓ simple boolean question answer 'f' -> false (1 ms) + ✓ simple boolean question answer 'F' -> false (1 ms) + ✓ simple boolean question answer 'yes' -> true (1 ms) + ✓ simple boolean question answer 'Yes' -> true (1 ms) + ✓ simple boolean question answer 'no' -> false + ✓ simple boolean question answer 'No' -> false (1 ms) + ✓ simple boolean question answer 'true' -> true + ✓ simple boolean question answer 'True' -> true (1 ms) + ✓ simple boolean question answer 'false' -> false + ✓ simple boolean question answer 'False' -> false (1 ms) + Mappings + ✓ value map no -> them (1 ms) + ✓ source map 'FAVE_INT'=1, yields 'FAVE_DIFF'=2' (1 ms) + ✓ source map 'FAVE_INT'=1, yields 'IS_FAVE_NOT_ZERO'=true' + ✓ source map 'FAVE_INT'=0, yields 'IS_FAVE_NOT_ZERO'=false' (1 ms) + ✓ maps 'source'd paramType bool input 'y' -> true (1 ms) + ✓ maps 'source'd paramType int input '1' -> 1 (1 ms) + Conditional questions + ✓ Conditional question yes -> Do you like milk? (60 ms) + ✓ Conditional question no -> Is this the end? (60 ms) + ✓ when question is condition-skipped, uses 'elseSource' if present + Value transforms + ✓ Value 'true' type 'boolean' -> true (1 ms) + ✓ Value 'true' type 'bool' -> true (1 ms) + ✓ Value 'true' type 'string' -> "true" + ✓ Value '5' type 'integer' -> 5 + ✓ Value '5.5' type 'float' -> 5.5 (1 ms) + ✓ Value '6.6' type 'numeric' -> 6.6 + multi-value input (free form) + ✓ Answer 'Hi' sep 'undefined' -> ["Hi"] (1 ms) + ✓ Answer 'Hi,Bye' sep 'undefined' -> ["Hi", "Bye"] + ✓ Answer ' Hi, Bye ' sep 'undefined' -> ["Hi", "Bye"] (1 ms) + ✓ Answer 'Hi,Bye' sep '|' -> ["Hi,Bye"] (1 ms) + ✓ Answer 'Hi|Bye' sep '|' -> ["Hi", "Bye"] (1 ms) + ✓ Answer 'Hi~Bye' sep '~' -> ["Hi", "Bye"] (1 ms) + ✓ Answer 'Hi.Bye' sep '.' -> ["Hi", "Bye"] (1 ms) + ✓ Answer 'Hi&Bye' sep '&' -> ["Hi", "Bye"] + ✓ Answer 'Hi(Bye' sep '(' -> ["Hi", "Bye"] (1 ms) + ✓ Answer 'Hi)Bye' sep ')' -> ["Hi", "Bye"] + ✓ Answer 'Hi{Bye' sep '{' -> ["Hi", "Bye"] (1 ms) + ✓ Answer 'Hi}Bye' sep '}' -> ["Hi", "Bye"] + ✓ Answer 'Hi|&(Bye' sep '|&(' -> ["Hi", "Bye"] (1 ms) + ✓ Answer 'Hi Bye' sep ' ' -> ["Hi", "Bye"] + ✓ Answer ' Hi Bye ' sep ' ' -> ["Hi", "Bye"] (1 ms) + multi-value input (option locked) + ✓ Answer '1' sep 'undefined' -> ["Hi"] (1 ms) + ✓ Answer '1,2' sep 'undefined' -> ["Hi", "Bye"] (1 ms) + ✓ Answer ' 1, 2 ' sep 'undefined' -> ["Hi", "Bye"] + ✓ Answer '1|2' sep '|' -> ["Hi", "Bye"] (1 ms) + ✓ Answer '1~2' sep '~' -> ["Hi", "Bye"] + ✓ Answer '1|&(2' sep '|&(' -> ["Hi", "Bye"] + ✓ Answer '1 2' sep ' ' -> ["Hi", "Bye"] (1 ms) + ✓ Answer ' 1 2 ' sep ' ' -> ["Hi", "Bye"] + answer requirements (single value) + ✓ Value 'Hi' (string) and requirement requireSomething=true is accepted (1 ms) + ✓ Value '1' (int) and requirement requireSomething=true is accepted + ✓ Value 'true' (bool) and requirement requireSomething=true is accepted (1 ms) + ✓ Value 'Hi' (string) and requirement requireTruthy=true is accepted + ✓ Value '1' (int) and requirement requireTruthy=true is accepted (1 ms) + ✓ Value 'true' (bool) and requirement requireTruthy=true is accepted + ✓ Value 'Hi' (string) and requirement requireExact=Hi is accepted (1 ms) + ✓ Value '1' (int) and requirement requireExact=1 is accepted + ✓ Value 'true' (bool) and requirement requireExact=true is accepted (1 ms) + ✓ Value 'false' (bool) and requirement requireExact=false is accepted + ✓ Value 'Hi' (string) and requirement requireOneOf=[ 'Hi', 'Bye' ] is accepted (1 ms) + ✓ Value '1' (int) and requirement requireOneOf=[ 1, 2 ] is accepted + ✓ Value 'true' (bool) and requirement requireOneOf=[ true, false ] is accepted (1 ms) + ✓ Value 'false' (bool) and requirement requireOneOf=[ false, true ] is accepted + ✓ Value 'Hi' (string) and requirement requireMatch=Hi is accepted (1 ms) + ✓ Value 'Hi' (string) and requirement requireMatch=[Hi]* is accepted + ✓ Value 'Hi' (string) and requirement requireMatch=^[Hi]*$ is accepted (1 ms) + ✓ Value '' (string) and requirement requireSomething=true is rejected (61 ms) + ✓ Value '' (string) and requirement requireTruthy=true is rejected (59 ms) + ✓ Value '0' (int) and requirement requireTruthy=true is rejected (60 ms) + ✓ Value 'false' (bool) and requirement requireExact=true is rejected (61 ms) + ✓ Value 'Hi' (string) and requirement requireExact=Bye is rejected (61 ms) + ✓ Value '1' (int) and requirement requireExact=2 is rejected (59 ms) + ✓ Value 'true' (bool) and requirement requireExact=false is rejected (59 ms) + ✓ Value 'false' (bool) and requirement requireExact=true is rejected (59 ms) + ✓ Value 'Hello' (string) and requirement requireOneOf=Hi, Bye is rejected (60 ms) + ✓ Value '10' (int) and requirement requireOneOf=1,2 is rejected (60 ms) + ✓ Value 'false' (bool) and requirement requireOneOf=true is rejected (60 ms) + ✓ Value 'Hi' (string) and requirement requireMatch=Bye is rejected (59 ms) + ✓ Value 'Hi' (string) and requirement requireMatch=^[Bye]*$ is rejected (59 ms) + answer requirements (multi value) + ✓ Value 'Hi,Bye' (requireMinCount) and requirement 1=%s is accepted (1 ms) + ✓ Value 'Hi,Bye' (requireMinCount) and requirement 2=%s is accepted (1 ms) + ✓ Value 'Hi,Bye' (requireMaxCount) and requirement 3=%s is accepted + ✓ Value 'Hi,Bye' (requireMaxCount) and requirement 2=%s is accepted (1 ms) + ✓ Value 'Hi' (requireMinCount) and requirement 2=%s is rejected (58 ms) + ✓ Value 'Hi,Bye' (requireMinCount) and requirement 3=%s is rejected (59 ms) + ✓ Value 'Hi,Bye' (requireMaxCount) and requirement 1=%s is rejected (59 ms) + ✓ Value 'Hi,Bye,Blah' (requireMaxCount) and requirement 2=%s is rejected (60 ms) + cookie parameters + ✓ are passed from questions + ✓ are passed from maps + statements + ✓ prints statement (58 ms) + ✓ properly skips condition skip statements (57 ms) + +-----------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-----------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +All files | 70.9 | 65.13 | 76.47 | 69.6 | + lib | 67.09 | 65.13 | 76.47 | 66.55 | + questioner.mjs | 67.09 | 65.13 | 76.47 | 66.55 | 102,109-113,121,132-137,154-155,158,188,207-212,261-280,287-288,313,320,330,349-411,417,423,433,436,448,456,465-467,488,511,520-526,536,542,554,557,560,564,567,570,575,581,585 + lib/test | 100 | 100 | 100 | 100 | + test-data.js | 100 | 100 | 100 | 100 | +-----------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Test Suites: 1 passed, 1 total +Tests: 104 passed, 104 total +Snapshots: 0 total +Time: 1.613 s, estimated 2 s +Ran all test suites.