{ "spec": { "command": "flag", "source": "@testbot", "parameters": [ { "key": "meow", "schema": { "schema_type": "primitive", "type": "string" } }, { "key": "user", "schema": { "schema_type": "primitive", "type": "user_id" }, "optional": true }, { "key": "woof", "schema": { "schema_type": "primitive", "type": "boolean" }, "optional": true, "fi.mau.default_value": false } ], "fi.mau.tail_parameter": "user" }, "tests": [ { "name": "no flags", "input": "/flag mrrp", "output": { "meow": "mrrp", "user": null } }, { "name": "no flags, has tail", "input": "/flag mrrp @user:example.com", "output": { "meow": "mrrp", "user": "@user:example.com" } }, { "name": "named flag at start", "input": "/flag --woof=yes mrrp @user:example.com", "output": { "meow": "mrrp", "user": "@user:example.com", "woof": true } }, { "name": "boolean flag without value", "input": "/flag --woof mrrp @user:example.com", "output": { "meow": "mrrp", "user": "@user:example.com", "woof": true } }, { "name": "user id flag without value", "input": "/flag --user --woof mrrp", "error": true, "output": { "meow": "mrrp", "user": null, "woof": true } }, { "name": "named flag in the middle", "input": "/flag mrrp --woof=yes @user:example.com", "output": { "meow": "mrrp", "user": "@user:example.com", "woof": true } }, { "name": "named flag in the middle with different value", "input": "/flag mrrp --woof=no @user:example.com", "output": { "meow": "mrrp", "user": "@user:example.com", "woof": false } }, { "name": "all variables named", "input": "/flag --woof=no --meow=mrrp --user=@user:example.com", "output": { "meow": "mrrp", "user": "@user:example.com", "woof": false } }, { "name": "all variables named with quotes", "input": "/flag --woof --meow=\"meow meow mrrp\" --user=\"@user:example.com\"", "output": { "meow": "meow meow mrrp", "user": "@user:example.com", "woof": true } }, { "name": "invalid value for named parameter", "input": "/flag --user=meowings mrrp --woof", "error": true, "output": { "meow": "mrrp", "user": null, "woof": true } } ] }