Skip to content
Snippets Groups Projects
Select Git revision
  • 562d7878c2364dc1cf92a5211ff083214cc5f10d
  • master default protected
  • experimental_rel protected
  • fix_esd-image protected
  • ebrains-25-10 protected
  • feat_add_nmpi-backend
  • lab-jupyterlab4 protected
  • fix_bazel_for_spinnaker
  • add-nestml-tests
  • feat-add_graphviz_wf
  • snudda_2.2.2
  • ebrains-25-02 protected
  • ebrains-24-04 protected
  • feat_add_py-jaxley
  • feat_JUSUF_image protected
  • fix-k8s-job-cache-dir
  • test_open3d
  • add-music
  • add_gcc-spinnaker
  • disable-view
  • test_quiggeldy_service
  • v24.04
  • v25.02
  • v23.09
  • v23.06
  • v23.02
  • v22.10
  • v22.07
28 results

package.py

Blame
  • mqtt-client-service.test.js 2.81 KiB
    /**
     * @jest-environment jsdom
    */
    import '@testing-library/jest-dom';
    
    import MqttClientService from '../mqtt-client-service';
    
    let subscribeTopicAndValidate = (topic, callback) => {
      let token = MqttClientService.instance.subscribeToTopic(topic, callback);
      expect(token).toBeDefined();
      expect(token.topic).toBe(topic);
      expect(token.callback).toBe(callback);
      expect(MqttClientService.instance.subTokensMap.get(topic).includes(token)).toBeTruthy();
    
      return token;
    };
    
    let unsubscribeAndValidate = (token) => {
      MqttClientService.instance.unsubscribe(token);
      expect(MqttClientService.instance.subTokensMap.get(token.topic).includes(token)).toBeFalsy();
    };
    
    test('sub/unsub', async () => {
      let topicA = 'topic/A';
      let topicB = 'topic/B';
    
      let sub1Callback = jest.fn();
      let sub1Token = subscribeTopicAndValidate(topicA, sub1Callback);
      let sub2Callback = jest.fn();
      let sub2Token = subscribeTopicAndValidate(topicA, sub2Callback);
      let sub3Callback = jest.fn();
      let sub3Token = subscribeTopicAndValidate(topicB, sub3Callback);
    
      expect(MqttClientService.instance.subTokensMap.get(topicA).length).toBe(2);
      expect(MqttClientService.instance.subTokensMap.get(topicB).length).toBe(1);
    
      MqttClientService.instance.onMessage(topicA, {});
      MqttClientService.instance.onMessage(topicB, {});
      expect(sub1Token.callback).toHaveBeenCalledTimes(1);
      expect(sub2Token.callback).toHaveBeenCalledTimes(1);
      expect(sub3Token.callback).toHaveBeenCalledTimes(1);
    
      unsubscribeAndValidate(sub1Token);
      expect(MqttClientService.instance.subTokensMap.get(topicA).length).toBe(1);
      expect(MqttClientService.instance.subTokensMap.get(topicB).length).toBe(1);
    
      MqttClientService.instance.onMessage(topicA, {});
      MqttClientService.instance.onMessage(topicB, {});
      expect(sub1Token.callback).toHaveBeenCalledTimes(1);
      expect(sub2Token.callback).toHaveBeenCalledTimes(2);
      expect(sub3Token.callback).toHaveBeenCalledTimes(2);
    
      unsubscribeAndValidate(sub2Token);
      expect(MqttClientService.instance.subTokensMap.get(topicA).length).toBe(0);
      expect(MqttClientService.instance.subTokensMap.get(topicB).length).toBe(1);
    
      MqttClientService.instance.onMessage(topicA, {});
      MqttClientService.instance.onMessage(topicB, {});
      expect(sub1Token.callback).toHaveBeenCalledTimes(1);
      expect(sub2Token.callback).toHaveBeenCalledTimes(2);
      expect(sub3Token.callback).toHaveBeenCalledTimes(3);
    
      unsubscribeAndValidate(sub3Token);
      expect(MqttClientService.instance.subTokensMap.get(topicA).length).toBe(0);
      expect(MqttClientService.instance.subTokensMap.get(topicB).length).toBe(0);
    
      MqttClientService.instance.onMessage(topicA, {});
      MqttClientService.instance.onMessage(topicB, {});
      expect(sub1Token.callback).toHaveBeenCalledTimes(1);
      expect(sub2Token.callback).toHaveBeenCalledTimes(2);
      expect(sub3Token.callback).toHaveBeenCalledTimes(3);
    });