From 73e265d8fd050ae3daa67472b4465a5c49d68910 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 20 Apr 2019 15:18:33 +0300 Subject: Include to Wekan packages directory contents, so that meteor command would build all directly. This also simplifies build scripts. Thanks to xet7 ! --- packages/meteor-useraccounts-core/tests/tests.js | 215 +++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 packages/meteor-useraccounts-core/tests/tests.js (limited to 'packages/meteor-useraccounts-core/tests') diff --git a/packages/meteor-useraccounts-core/tests/tests.js b/packages/meteor-useraccounts-core/tests/tests.js new file mode 100644 index 00000000..985200a3 --- /dev/null +++ b/packages/meteor-useraccounts-core/tests/tests.js @@ -0,0 +1,215 @@ +Tinytest.add("AccountsTemplates - addField/removeField", function(test) { + // Calls after AccountsTemplates.init() + AccountsTemplates._initialized = true; + test.throws(function() { + AccountsTemplates.addField(""); + }, function(err) { + if (err instanceof Error && err.message === "AccountsTemplates.addField should strictly be called before AccountsTemplates.init!") + return true; + }); + test.throws(function() { + AccountsTemplates.removeField(""); + }, function(err) { + if (err instanceof Error && err.message === "AccountsTemplates.removeField should strictly be called before AccountsTemplates.init!") + return true; + }); + AccountsTemplates._initialized = false; + + // Trying to remove a non-existing field + test.throws(function() { + AccountsTemplates.removeField("foo"); + }, function(err) { + if (err instanceof Error && err.message == "A field called foo does not exist!") + return true; + }); + + // Trying to remove an existing field + var email = AccountsTemplates.removeField("email"); + test.isUndefined(AccountsTemplates.getField("email")); + // ...and puts it back in for tests re-run + AccountsTemplates.addField(email); + + // Trying to add an already existing field + test.throws(function() { + var pwd = AccountsTemplates.getField("password"); + AccountsTemplates.addField(pwd); + }, function(err) { + if (err instanceof Error && err.message == "A field called password already exists!") + return true; + }); + + var login = { + _id: "login", + displayName: "Email", + type: "email" + }; + + // Successful add + AccountsTemplates.addField(login); + // ...and removes it for tests re-run + AccountsTemplates.removeField("login"); + + // Invalid field.type + test.throws(function() { + AccountsTemplates.addField({ + _id: "foo", + displayName: "Foo", + type: "bar" + }); + }, function(err) { + if (err instanceof Error && err.message == "field.type is not valid!") + return true; + }); + + // Invalid minLength + test.throws(function() { + AccountsTemplates.addField({ + _id: "first-name", + displayName: "First Name", + type: "text", + minLength: 0 + }); + }, function(err) { + if (err instanceof Error && err.message == "field.minLength should be greater than zero!") + return true; + }); + // Invalid maxLength + test.throws(function() { + AccountsTemplates.addField({ + _id: "first-name", + displayName: "First Name", + type: "text", + maxLength: 0 + }); + }, function(err) { + if (err instanceof Error && err.message == "field.maxLength should be greater than zero!") + return true; + }); + // maxLength < minLength + test.throws(function() { + AccountsTemplates.addField({ + _id: "first-name", + displayName: "First Name", + type: "text", + minLength: 2, + maxLength: 1 + }); + }, function(err) { + if (err instanceof Error && err.message == "field.maxLength should be greater than field.maxLength!") + return true; + }); + + // Successful add + var first_name = { + _id: "first_name", + displayName: "First Name", + type: "text", + minLength: 2, + maxLength: 50, + required: true + }; + AccountsTemplates.addField(first_name); + // Now removes it to be consistent with tests re-run + AccountsTemplates.removeField("first_name"); +}); + + +Tinytest.add("AccountsTemplates - addFields", function(test) { + // Fake uninitialized state... + AccountsTemplates._initialized = false; + + if (Meteor.isClient) { + // addFields does not exist client-side + test.throws(function() { + AccountsTemplates.addFields(); + }); + } else { + // Not an array of objects + test.throws(function() { + AccountsTemplates.addFields(""); + }, function(err) { + if (err instanceof Error && err.message === "field argument should be an array of valid field objects!") + return true; + }); + test.throws(function() { + AccountsTemplates.addFields(100); + }, function(err) { + if (err instanceof Error && err.message === "field argument should be an array of valid field objects!") + return true; + }); + // Empty array + test.throws(function() { + AccountsTemplates.addFields([]); + }, function(err) { + if (err instanceof Error && err.message === "field argument should be an array of valid field objects!") + return true; + }); + + // Successful add + var first_name = { + _id: "first_name", + displayName: "First Name", + type: "text", + minLength: 2, + maxLength: 50, + required: true + }; + var last_name = { + _id: "last_name", + displayName: "Last Name", + type: "text", + minLength: 2, + maxLength: 100, + required: false + }; + AccountsTemplates.addFields([first_name, last_name]); + // Now removes ot to be consistend with tests re-run + AccountsTemplates.removeField("first_name"); + AccountsTemplates.removeField("last_name"); + } + // Restores initialized state... + AccountsTemplates._initialized = true; +}); + + +Tinytest.add("AccountsTemplates - setState/getState", function(test) { + if (Meteor.isServer) { + // getState does not exist server-side + test.throws(function() { + AccountsTemplates.getState(); + }); + // setState does not exist server-side + test.throws(function() { + AccountsTemplates.setState(); + }); + } else { + _.each(AccountsTemplates.STATES, function(state){ + AccountsTemplates.setState(state); + test.equal(AccountsTemplates.getState(), state); + }); + // Setting an invalid state should throw a Meteor.Error + test.throws(function() { + AccountsTemplates.setState("foo"); + }, function(err) { + if (err instanceof Meteor.Error && err.details == "accounts-templates-core package got an invalid state value!") + return true; + }); + } +}); + + +// ------------------------------------- +// TODO: complite the following tests... +// ------------------------------------- + + +Tinytest.add("AccountsTemplates - configure", function(test) { + if (Meteor.isClient) { + // configure does not exist client-side + test.throws(function() { + AccountsTemplates.configure({}); + }); + } else { + // TODO: write actual tests... + } +}); \ No newline at end of file -- cgit v1.2.3-1-g7c22