Manual Reference Source Test

src/modules/identity-user.test.js

import IdentityUser from './identity-user.js';
import IdentityConfig from './identity-config.js';

describe('IdentityUser', () => {
  it('constructor must set all user provided user properties', () => {
    const user = new IdentityUser(getTestConfig(['id', 'country']), {
      _id: 'id',
      country: 'country',
    });

    expect(user.id).toBe('id');
    expect(user.country).toBe('country');
  });

  it('constructor must remap user properties that require renaming', () => {
    const user = new IdentityUser(getTestConfig(['firstName']), {
      givenName: 'name',
    });

    expect(user.firstName).toBe('name');
  });

  it('constructor should ignore properties that are not explicitly defined', () => {
    const user = new IdentityUser(getTestConfig([]), {
      random: 'random',
    });

    expect(user.random).toBeFalsy();
  });
});

/**
 * Returns a default IdentityConfig instance for unit testing purposes.
 *
 * @param {string[]} keys Array of user property keys to intialize config.properties with
 * @return {IdentityConfig} Test instance of IdentityConfig with default values.
 */
function getTestConfig(keys) {
  return new IdentityConfig({
    properties: keys.reduce((properties, key) => {
      properties[key] = {};
      return properties;
    }, {}),
  });
}