Manual Reference Source Test

src/helpers/user/RelatedUser.js

import { deprecate } from 'core-decorators'; // eslint-disable-line
import RelatedUserModel from '../../models/user/RelatedUser';
import RelatedUserService from '../../services/RelatedUserService';
import Helper from '../Helper';
import { aggregate } from '../../utilities/ClassUtility';

/**
 * Helper class representing a RelatedUser.
 *
 * @extends {RelatedUserModel}
 * @extends {Helper}
 */
class RelatedUser extends aggregate(RelatedUserModel, Helper) {
  /**
   * Constructor for helper class representing a RelatedUser
   *
   * @param {Object} json - json api response from server
   */
  constructor(json = {}) {
    super(json);
    this.deserializeRelationshipStubs(json);
    this.syncRelationships(json);
  }

  /** @type {String}  - The type */
  get type() {
    return this._type || 'related_users';
  }

  /** @type {RelatedUser} */
  get followed() {
    return this._relationships.followed_user;
  }

  /** @type {RelatedUser} */
  get follower() {
    return this._relationships.follower_user;
  }

  /** @type {RelatedUser} */
  set followed(followed) {
    /** @type {RelatedUser} */
    this._relationships.followed_user = followed;
  }

  /** @type {RelatedUser} */
  set follower(follower) {
    /** @type {RelatedUser} */
    this._relationships.follower_user = follower;
  }

  /** @type {String}  - The type */
  set type(type) {
    /** @type {String}  - The type */
    this._type = type;
  }

  /**
   * Saves a relatedUser (insert if id doesn't exist, update if it does)
   * @return {Promise<RelatedUser>} - Returns a promise via ajax call.
   *
   * @example
   * import { RelatedUser, relatedUserService } from 'clinical6';
   *
   * const relatedUser = new RelatedUser({...});
   *
   * // Updates relatedUser
   * relatedUser.save();
   */
  save(relatedUser = undefined) {
    return (this.id) ? (new RelatedUserService()).update(this, relatedUser)
      : (new RelatedUserService()).insert(this, relatedUser);
  }

  /**
   * Deletes a relatedUser
   * @return {Promise<RelatedUser>} - Returns a promise via ajax call.
   *
   * @example
   * import { RelatedUser, relatedUserService } from 'clinical6';
   *
   * const relatedUser = new RelatedUser({...});
   *
   * // Deletes relatedUser
   * relatedUser.delete();
   */
  delete(relatedUser = undefined) {
    return (new RelatedUserService()).delete(this, relatedUser);
  }
}

export default RelatedUser;