it('tracks install started/completed with InstallTrigger', () => {
    const url = 'https://a.m.o/addons/file.xpi';
    const _tracking = { sendEvent: sinon.stub() };
    const _InstallTrigger = { install: sinon.stub() };

    const addon = createInternalAddon(
      createFakeAddon({
        name: 'some-extension',
        files: [{ platform: OS_ALL, url, hash: 'hash-of-file' }],
        type: ADDON_TYPE_EXTENSION,
      }),
    );

    const rootNode = render({
      addon,
      useButton: true,
      _tracking,
      _InstallTrigger,
    });

    const installButton = rootNode.find('.InstallButton-button');
    installButton.simulate('click', createFakeEvent());

    sinon.assert.called(_InstallTrigger.install);
    const onInstalled = _InstallTrigger.install.firstCall.args[1];

    sinon.assert.calledOnce(_tracking.sendEvent);
    sinon.assert.calledWith(_tracking.sendEvent, {
      action: getAddonTypeForTracking(ADDON_TYPE_EXTENSION),
      category: getAddonEventCategory(
        ADDON_TYPE_EXTENSION,
        INSTALL_STARTED_ACTION,
      ),
      label: addon.name,
    });

    _tracking.sendEvent.resetHistory();
    // Simulate the InstallTrigger callback.
    const successStatus = 0;
    onInstalled(url, successStatus);

    sinon.assert.calledOnce(_tracking.sendEvent);
    sinon.assert.calledWith(_tracking.sendEvent, {
      action: getAddonTypeForTracking(ADDON_TYPE_EXTENSION),
      category: getAddonEventCategory(ADDON_TYPE_EXTENSION, INSTALL_ACTION),
      label: addon.name,
    });
  });
  it('tracks install analytics when installing a search provider', () => {
    const _tracking = { sendEvent: sinon.stub() };
    const _window = createFakeMozWindow();
    const addon = createInternalAddon(
      createFakeAddon({
        name: 'some-search-provider',
        files: [{ platform: OS_ALL, url: 'https://a.m.o/files/addon.xpi' }],
        type: ADDON_TYPE_OPENSEARCH,
      }),
    );

    const rootNode = renderOpenSearch({
      addon,
      useButton: true,
      _tracking,
      _window,
    });

    const installButton = rootNode.find('.InstallButton-button');
    installButton.simulate('click', createFakeEvent());

    sinon.assert.calledWith(_tracking.sendEvent, {
      action: getAddonTypeForTracking(ADDON_TYPE_OPENSEARCH),
      category: getAddonEventCategory(
        ADDON_TYPE_OPENSEARCH,
        INSTALL_STARTED_ACTION,
      ),
      label: addon.name,
    });
  });
  trackInstallSucceeded({ addonName, type }: TrackParams) {
    const { _tracking } = this.props;

    _tracking.sendEvent({
      action: getAddonTypeForTracking(type),
      category: getAddonEventCategory(type, INSTALL_ACTION),
      label: addonName,
    });
  }
Exemplo n.º 4
0
 it('returns invalid for unknown type', () => {
   expect(getAddonTypeForTracking('whatever')).toEqual(
     TRACKING_TYPE_INVALID,
   );
 });
Exemplo n.º 5
0
 it('returns addon:statictheme for TYPE_STATIC_THEME', () => {
   expect(getAddonTypeForTracking(ADDON_TYPE_STATIC_THEME)).toEqual(
     TRACKING_TYPE_STATIC_THEME,
   );
 });
Exemplo n.º 6
0
 it('returns addon for TYPE_LANG', () => {
   expect(getAddonTypeForTracking(ADDON_TYPE_LANG)).toEqual(
     TRACKING_TYPE_EXTENSION,
   );
 });