123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- 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...
- }
- });
|