it('returns false if add-on has a null value for authors', () => {
      const partialAddon = { ...addon, authors: null };

      expect(isAddonAuthor({ addon: partialAddon, userId: null })).toEqual(
        false,
      );
    });
 siteUserCanManageReplies() {
   const {
     addon,
     siteUser,
     siteUserHasReplyPerm,
     _siteUserCanManageReplies,
   } = this.props;
   if (_siteUserCanManageReplies) {
     // Return a stub implementation for testing.
     return _siteUserCanManageReplies();
   }
   if (!siteUser) {
     return false;
   }
   return (
     isAddonAuthor({ addon, userId: siteUser.id }) || siteUserHasReplyPerm
   );
 }
Example #3
0
  listContent() {
    const {
      addon,
      hasStatsPermission,
      i18n,
      userId,
      currentVersion,
    } = this.props;

    if (!addon) {
      return this.renderDefinitions({
        versionLastUpdated: <LoadingText minWidth={20} />,
        versionLicense: <LoadingText minWidth={20} />,
      });
    }

    let homepage = trimAndAddProtocolToUrl(addon.homepage);
    if (homepage) {
      homepage = (
        <li>
          <a className="AddonMoreInfo-homepage-link" href={homepage}>
            {i18n.gettext('Homepage')}
          </a>
        </li>
      );
    }

    let supportUrl = trimAndAddProtocolToUrl(addon.support_url);
    if (supportUrl) {
      supportUrl = (
        <li>
          <a className="AddonMoreInfo-support-link" href={supportUrl}>
            {i18n.gettext('Support Site')}
          </a>
        </li>
      );
    }

    let supportEmail = addon.support_email;
    if (supportEmail && /.+@.+/.test(supportEmail)) {
      supportEmail = (
        <li>
          <a
            className="AddonMoreInfo-support-email"
            href={`mailto:${supportEmail}`}
          >
            {i18n.gettext('Support Email')}
          </a>
        </li>
      );
    } else {
      supportEmail = null;
    }

    let statsLink = null;
    if (
      isAddonAuthor({ addon, userId }) ||
      addon.public_stats ||
      hasStatsPermission
    ) {
      statsLink = (
        <Link
          className="AddonMoreInfo-stats-link"
          href={`/addon/${addon.slug}/statistics/`}
        >
          {i18n.gettext('Visit stats dashboard')}
        </Link>
      );
    }

    const lastUpdated = addon.last_updated;
    const license = currentVersion && currentVersion.license;
    let versionLicenseLink = null;

    if (license) {
      versionLicenseLink = license.url ? (
        <Link
          className="AddonMoreInfo-license-link"
          href={license.url}
          prependClientApp={false}
          prependLang={false}
        >
          {license.name}
        </Link>
      ) : (
        <span className="AddonMoreInfo-license-name">{license.name}</span>
      );
    }

    return this.renderDefinitions({
      homepage,
      supportUrl,
      supportEmail,
      statsLink,
      version:
        currentVersion && addonHasVersionHistory(addon)
          ? currentVersion.version
          : null,
      versionLastUpdated: lastUpdated
        ? i18n.sprintf(
            // translators: This will output, in English:
            // "2 months ago (Dec 12 2016)"
            i18n.gettext('%(timeFromNow)s (%(date)s)'),
            {
              timeFromNow: i18n.moment(lastUpdated).fromNow(),
              date: i18n.moment(lastUpdated).format('ll'),
            },
          )
        : null,
      versionLicenseLink,
      privacyPolicyLink: addon.has_privacy_policy ? (
        <Link
          className="AddonMoreInfo-privacy-policy-link"
          href={`/addon/${addon.slug}/privacy/`}
        >
          {i18n.gettext('Read the privacy policy for this add-on')}
        </Link>
      ) : null,
      eulaLink: addon.has_eula ? (
        <Link
          className="AddonMoreInfo-eula-link"
          href={`/addon/${addon.slug}/eula/`}
        >
          {i18n.gettext('Read the license agreement for this add-on')}
        </Link>
      ) : null,
      versionHistoryLink: addonHasVersionHistory(addon) ? (
        <li>
          <Link
            className="AddonMoreInfo-version-history-link"
            href={`/addon/${addon.slug}/versions/`}
          >
            {i18n.gettext('See all versions')}
          </Link>
        </li>
      ) : null,
    });
  }
 it('returns false when userId is not set', () => {
   expect(isAddonAuthor({ addon, userId: null })).toEqual(false);
 });
 it('returns false when addon.authors is not set', () => {
   expect(isAddonAuthor({ addon: {}, userId: 5838591 })).toEqual(false);
 });
 it('returns false when addon is null', () => {
   expect(isAddonAuthor({ addon: null, userId: 5838591 })).toEqual(false);
 });
 it('returns false when userId is not in add-on author object', () => {
   expect(isAddonAuthor({ addon, userId: 5838592 })).toEqual(false);
 });
 it('returns true when userId is in add-on author object', () => {
   expect(isAddonAuthor({ addon, userId: 5838591 })).toEqual(true);
 });