Skip to content
Snippets Groups Projects
Select Git revision
  • eda5ae6f1a913a73135e71e27715e6c1f7cfffa5
  • master default protected
  • github/fork/hrani/master
  • github/fork/dilawar/master
  • chamcham
  • chhennapoda
  • wheel
  • 3.2.0-pre0
  • v3.1.3
  • 3.1.2
  • 3.1.1
  • chamcham-3.1.1
  • 3.1.0
  • ghevar_3.0.2_pre2
  • ghevar_3.0.2
15 results

MarkovChannel.cpp

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);
    });