public async Task <DeviceCapabilityDescriptor> RegisterCapability(ICapability capability) { var descriptor = CapabilityDescriber.Describe(capability); foreach (var action in descriptor.Actions) { action.MqttTopic = $"action/+/{_mqttClientService.DeviceId}/{capability.CapabilityId}/{action.Name}"; if (!await _mqttClientService.Subscribe( action.MqttTopic, action.Method, capability)) { //TODO: Failure to subscribe?? } } foreach (var property in descriptor.Properties) { property.MqttTopic = $"value/+/{_mqttClientService.DeviceId}/{capability.CapabilityId}/{property.Name}"; if (!await _mqttClientService.Subscribe( property.MqttTopic, property.Property.GetMethod, capability)) //TODO: What about set method? { //TODO: fialure } } //TODO: Register events return(descriptor); }
public void TestPropertyCapabilityDescriber() { var capability = new Mock <IPropertyMockCapability>(); var descriptor = CapabilityDescriber.Describe(capability.Object); Assert.That(descriptor.Actions, Is.Empty); Assert.That(descriptor.Properties, Has.Length.EqualTo(2)); }
public void TestCapabilityBTypesDescriber() { var capability = new Mock <IActionBMockCapability>(); var descriptor = CapabilityDescriber.Describe(capability.Object); Assume.That(descriptor.Actions, Has.Length.EqualTo(1)); Assert.That(descriptor.Actions.First().Method, Is.Not.Null); Assert.That(descriptor.Actions.First().Name, Is.EqualTo(nameof(IActionBMockCapability.Foo))); Assert.That(descriptor.Actions.First().TypeName, Is.EqualTo("String")); Assert.That(descriptor.Actions.First().Parameters, Is.Empty); }
public void TestEmptyCapabilityDescriber() { var capability = new Mock <ICapability>(); capability.SetupGet(capability => capability.CapabilityId).Returns("MyCapability"); capability.SetupGet(capability => capability.CapabilityTypeId).Returns("MyCapabilityType"); var descriptor = CapabilityDescriber.Describe(capability.Object); Assert.That(descriptor.CapabilityId, Is.EqualTo("MyCapability")); Assert.That(descriptor.CapabilityTypeId, Is.EqualTo("MyCapabilityType")); Assert.That(descriptor.Actions, Is.Empty); Assert.That(descriptor.Properties, Is.Empty); }