jeudi 30 juillet 2015

Meteor how to update user.services for Jasmine testing (Appending

I am trying to mock out a user for testing out my application, and I have gotten to the point where I can create a test user and log them into the mirror instance of my app.

I need to compare the gmail addresses for peoples accounts, and to test this functionality, I want to add a test email address under user.services.google.email within the Meteor users account database (which is where the accounts-google package stores it, I don't need to mock out an entire user account yet).

What I can't figure out is how to append this information, instead of just overwriting what is already there, this is what my code looks like:

  if ( Meteor.users.find().count() === 0 ) {

    var testUserDetails = {
      email: 'testEmail@gmail.com',
      password: 'testPassword'
    };
    console.log("Creating the Test User");
    var newUserId = Accounts.createUser(testUserDetails);

    Meteor.users.update(
      {_id: newUserId},
      { $set:
        {
          services : {
            google : {
              email : "testEmail@gmail.com"
            }
          }
        }
      }
    );

  } else {
    console.log("There are already users in the Test database");
  }

  console.log('***** Finished loading default fixtures *****');
},

And this is what a user looks like:

{
    "_id" : "Dw2xQPDwKp58RozC4",
    "createdAt" : ISODate("2015-07-30T04:02:03.261Z"),
    "services" : {
        "password" : {
            "bcrypt" : "asdfasdfasdfdsafsadfasdsdsawf"
        },
        "resume" : {
            "loginTokens" : [ ]
        }
    },
    "emails" : [
        {
            "address" : "testEmail@gmail.com",
            "verified" : false
        }
    ]
}

Now $set just rewrites everything within services, and there is no $push operation for mongo or for js, so how should I go about doing this? Should I consume the object and parse it manually?

*Note I have also tried using Meteor's Accounts.onCreateUser(function(options, user) but facing the same issue. Thanks!

Aucun commentaire:

Enregistrer un commentaire