PluginManagerTests.swift 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import Foundation
  2. import Swinject
  3. import Testing
  4. @testable import Trio
  5. @Suite("Plugin Manager Tests") struct PluginManagerTests: Injectable {
  6. let fileStorage = BaseFileStorage()
  7. @Injected() var pluginManager: PluginManager!
  8. let resolver = TrioApp().resolver
  9. init() {
  10. injectServices(resolver)
  11. }
  12. @Test("Can load CGM managers") func testCGMManagerLoad() {
  13. // Given
  14. let cgmLoopManagers = pluginManager.availableCGMManagers
  15. // Then
  16. #expect(!cgmLoopManagers.isEmpty, "Should have available CGM managers")
  17. // When loading valid CGM manager
  18. if let cgmLoop = cgmLoopManagers.first {
  19. let cgmLoopManager = pluginManager.getCGMManagerTypeByIdentifier(cgmLoop.identifier)
  20. #expect(cgmLoopManager != nil, "Should load valid CGM manager")
  21. }
  22. // When trying to load CGM manager with pump identifier
  23. if let cgmLoop = cgmLoopManagers.last {
  24. let invalidManager = pluginManager.getPumpManagerTypeByIdentifier(cgmLoop.identifier)
  25. #expect(invalidManager == nil, "Should not load CGM manager with pump identifier")
  26. }
  27. }
  28. @Test("Can load pump managers") func testPumpManagerLoad() {
  29. // Given
  30. let pumpLoopManagers = pluginManager.availablePumpManagers
  31. // Then
  32. #expect(!pumpLoopManagers.isEmpty, "Should have available pump managers")
  33. // When loading valid pump manager
  34. if let pumpLoop = pumpLoopManagers.first {
  35. let pumpLoopManager = pluginManager.getPumpManagerTypeByIdentifier(pumpLoop.identifier)
  36. #expect(pumpLoopManager != nil, "Should load valid pump manager")
  37. }
  38. // When trying to load pump manager with CGM identifier
  39. if let pumpLoop = pumpLoopManagers.last {
  40. let invalidManager = pluginManager.getCGMManagerTypeByIdentifier(pumpLoop.identifier)
  41. #expect(invalidManager == nil, "Should not load pump manager with CGM identifier")
  42. }
  43. }
  44. @Test("Can load service managers") func testServiceManagerLoad() {
  45. // Given
  46. let serviceManagers = pluginManager.availableServices
  47. // Then
  48. #expect(!serviceManagers.isEmpty, "Should have available services")
  49. // When
  50. if let serviceLoop = serviceManagers.first {
  51. let serviceManager = pluginManager.getServiceTypeByIdentifier(serviceLoop.identifier)
  52. #expect(serviceManager != nil, "Should load valid service manager")
  53. }
  54. }
  55. @Test("Available managers have valid descriptors") func testManagerDescriptors() {
  56. // Given/When
  57. let pumpManagers = pluginManager.availablePumpManagers
  58. let cgmManagers = pluginManager.availableCGMManagers
  59. let serviceManagers = pluginManager.availableServices
  60. // Then
  61. for manager in pumpManagers {
  62. #expect(!manager.identifier.isEmpty, "Pump manager should have non-empty identifier")
  63. #expect(!manager.localizedTitle.isEmpty, "Pump manager should have non-empty title")
  64. }
  65. for manager in cgmManagers {
  66. #expect(!manager.identifier.isEmpty, "CGM manager should have non-empty identifier")
  67. #expect(!manager.localizedTitle.isEmpty, "CGM manager should have non-empty title")
  68. }
  69. for manager in serviceManagers {
  70. #expect(!manager.identifier.isEmpty, "Service should have non-empty identifier")
  71. #expect(!manager.localizedTitle.isEmpty, "Service should have non-empty title")
  72. }
  73. }
  74. }