File size: 1,266 Bytes
7aec436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import Cloud from '../../src/scaffolding/cloud';

const cloudManager = () => new Cloud.CloudManager({
  vm: {
    runtime: {
      hasCloudData: () => true
    }
  }
});

const mockProvider = () => ({
  enable: () => {},
  handleUpdateVariable: jest.fn()
});

test('CloudManager providers and overrides', () => {
  const manager = cloudManager();
  const provider1 = mockProvider();
  const provider2 = mockProvider();
  expect(() => manager.addProviderOverride('test', provider1)).toThrow('Manager is not aware of this provider');

  manager.addProvider(provider1);
  manager.addProvider(provider2);
  manager.updateVariable('test', '123');
  expect(provider1.handleUpdateVariable).toHaveBeenCalledTimes(1);
  expect(provider2.handleUpdateVariable).toHaveBeenCalledTimes(1);

  manager.addProviderOverride('test', provider1);
  manager.updateVariable('test', '456');
  expect(provider1.handleUpdateVariable).toHaveBeenCalledTimes(2);
  expect(provider2.handleUpdateVariable).toHaveBeenCalledTimes(1);

  manager.addProviderOverride('test2', null);
  manager.updateVariable('test2', '789');
  expect(provider1.handleUpdateVariable).toHaveBeenCalledTimes(2);
  expect(provider2.handleUpdateVariable).toHaveBeenCalledTimes(1);
});