UNPKG

homebridge-bond

Version:

A homebridge plugin to control your Bond devices over the v2 API.

263 lines (222 loc) 8.73 kB
import { expect } from 'chai'; import 'mocha'; import { Action } from '../src/enum/Action'; import { DeviceType } from '../src/enum/DeviceType'; import { Device } from '../src/interface/Device'; import { DeviceFactory } from './factories/device'; describe('displayName', () => { it('is correct', () => { const device = DeviceFactory.createDevice(); expect(Device.displayName(device)).equal('location name'); }); }); describe('isSupported', () => { it('ceiling fan', () => { const device = DeviceFactory.createDevice({ type: DeviceType.CeilingFan }); expect(Device.isSupported(device)).equal(true); }); it('shades', () => { const device = DeviceFactory.createDevice({ type: DeviceType.Shades }); expect(Device.isSupported(device)).equal(true); }); it('generic', () => { const device = DeviceFactory.createDevice({ type: DeviceType.Generic }); expect(Device.isSupported(device)).equal(true); }); it('fireplace', () => { const device = DeviceFactory.createDevice({ type: DeviceType.Fireplace }); expect(Device.isSupported(device)).equal(true); }); it('light', () => { const device = DeviceFactory.createDevice({ type: DeviceType.Light }); expect(Device.isSupported(device)).equal(true); }); }); describe('HasDimmer', () => { it('has dimmer', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.StartDimmer] }); expect(Device.HasDimmer(device)).equal(true); }); it('does not have dimmer', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop] }); expect(Device.HasDimmer(device)).equal(false); }); }); describe('HasSeparateDimmers', () => { it('has dimmer', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.StartIncreasingBrightness, Action.StartDecreasingBrightness] }); expect(Device.HasSeparateDimmers(device)).equal(true); }); it('does not have separate dimmers', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop] }); expect(Device.HasSeparateDimmers(device)).equal(false); }); }); describe('CFhasLightbulb', () => { it('has lightbulb', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.ToggleLight] }); expect(Device.CFhasLightbulb(device)).equal(true); }); it('does not have lightbulb', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop] }); expect(Device.CFhasLightbulb(device)).equal(false); }); }); describe('CFhasUpDownLight', () => { it('has up down light', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.ToggleUpLight, Action.ToggleDownLight] }); expect(Device.CFhasUpDownLight(device)).equal(true); }); it('does not have up down light', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop] }); expect(Device.CFhasUpDownLight(device)).equal(false); }); }); describe('canSetSpeed', () => { it('can set speed', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.SetSpeed], maxSpeed: 1, }); expect(Device.canSetSpeed(device)).equal(true); }); it('does not have set speed', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop], maxSpeed: 1, }); expect(Device.canSetSpeed(device)).equal(false); }); it('does not have max speed', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.SetSpeed], }); expect(Device.canSetSpeed(device)).equal(false); }); }); describe('canIncreaseDecreaseSpeed', () => { it('can increase and decrease speed', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.IncreaseSpeed, Action.DecreaseSpeed] }); expect(Device.canIncreaseDecreaseSpeed(device)).equal(true); }); it('cannnot increase and decrease speed', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop] }); expect(Device.canIncreaseDecreaseSpeed(device)).equal(false); }); }); describe('hasOffOn', () => { it('has off on', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.TurnOff, Action.TurnOn] }); expect(Device.hasOffOn(device)).equal(true); }); it('does not have off on', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop] }); expect(Device.hasOffOn(device)).equal(false); }); }); describe('hasReverseSwitch', () => { it('has reverse switch', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.ToggleDirection] }); expect(Device.hasReverseSwitch(device)).equal(true); }); it('does not have reverse switch', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop] }); expect(Device.hasReverseSwitch(device)).equal(false); }); }); describe('GXhasToggle', () => { it('has toggle', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.TogglePower] }); expect(Device.GXhasToggle(device)).equal(true); }); it('does not have toggle', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop] }); expect(Device.GXhasToggle(device)).equal(false); }); }); describe('FPhasToggle', () => { it('has toggle', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.TogglePower] }); expect(Device.FPhasToggle(device)).equal(true); }); it('does not have toggle', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop] }); expect(Device.FPhasToggle(device)).equal(false); }); }); describe('FPhasFlame', () => { it('has flame and toggle power', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.SetFlame, Action.TogglePower] }); expect(Device.FPhasFlame(device)).equal(true); }); it('does not have flame and toggle power', () => { const device = DeviceFactory.createDevice({ actions: [Action.TogglePower] }); expect(Device.FPhasFlame(device)).equal(false); }); }); describe('MShasToggle', () => { it('has toggle', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.ToggleOpen] }); expect(Device.MShasToggle(device)).equal(true); }); it('does not have toggle', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop] }); expect(Device.MShasToggle(device)).equal(false); }); }); describe('MShasPreset', () => { it('has preset', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.Preset] }); expect(Device.MShasPreset(device)).equal(true); }); it('does not have preset', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop] }); expect(Device.MShasPreset(device)).equal(false); }); }); describe('LThasLightbulb', () => { it('has lightbulb', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.ToggleLight] }); expect(Device.LThasLightbulb(device)).equal(true); }); it('does not have lightbulb', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop] }); expect(Device.LThasLightbulb(device)).equal(false); }); }); describe('LThasBrightness', () => { it('has brightness', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop, Action.SetBrightness, Action.TurnLightOff] }); expect(Device.LThasBrightness(device)).equal(true); }); it('does not have brightness', () => { const device = DeviceFactory.createDevice({ actions: [Action.Stop] }); expect(Device.LThasBrightness(device)).equal(false); }); }); describe('fanSpeeds', () => { context('has commands', () => { it('returns correct values', () => { const device = DeviceFactory.createFanWithSpeeds([1,2,3]); expect(Device.fanSpeeds(device)).to.deep.equal([1,2,3]); }); it('returns correct values', () => { const device = DeviceFactory.createFanWithSpeeds([1,2,4]); expect(Device.fanSpeeds(device)).to.deep.equal([1,2,4]); }); }); context('does not have commands', () => { context('has max speed', () => { it('returns correct values', () => { const device = DeviceFactory.createDevice({maxSpeed: 6}); expect(Device.fanSpeeds(device)).to.deep.equal([1,2,3,4,5,6]); }); }); context('does not have max speed', () => { it('returns empty array', () => { const device = DeviceFactory.createDevice(); expect(Device.fanSpeeds(device)).to.deep.equal([]); }); }); }); });