@@ -8,52 +8,61 @@ import TableProPluginKit
88import Testing
99@testable import TablePro
1010
11- @Suite ( " PluginEntry Computed Properties — Fallback Behavior " )
12- struct PluginEntryFallbackTests {
11+ @Suite ( " PluginEntry Computed Properties " )
12+ struct PluginEntryTests {
1313
14- private func makeNonPluginEntry( ) -> PluginEntry {
14+ private func makeEntry(
15+ databaseTypeId: String ? = nil ,
16+ additionalTypeIds: [ String ] = [ ] ,
17+ pluginIconName: String = " puzzlepiece " ,
18+ defaultPort: Int ? = nil
19+ ) -> PluginEntry {
1520 PluginEntry (
16- id: " test.non- plugin " ,
21+ id: " test.plugin " ,
1722 bundle: Bundle . main,
1823 url: Bundle . main. bundleURL,
1924 source: . builtIn,
20- name: " Non-Plugin Bundle " ,
25+ name: " Test Plugin " ,
2126 version: " 1.0.0 " ,
22- pluginDescription: " A bundle whose principalClass is not a DriverPlugin " ,
27+ pluginDescription: " A test plugin " ,
2328 capabilities: [ . databaseDriver] ,
24- isEnabled: true
29+ isEnabled: true ,
30+ databaseTypeId: databaseTypeId,
31+ additionalTypeIds: additionalTypeIds,
32+ pluginIconName: pluginIconName,
33+ defaultPort: defaultPort
2534 )
2635 }
2736
28- @Test ( " driverPlugin returns nil for a non-plugin bundle " )
29- func driverPluginReturnsNil( ) {
30- let entry = makeNonPluginEntry ( )
31- #expect( entry. driverPlugin == nil )
32- }
33-
34- @Test ( " iconName falls back to puzzlepiece when driverPlugin is nil " )
35- func iconNameFallback( ) {
36- let entry = makeNonPluginEntry ( )
37- #expect( entry. iconName == " puzzlepiece " )
38- }
39-
40- @Test ( " databaseTypeId returns nil when driverPlugin is nil " )
37+ @Test ( " databaseTypeId returns nil when not set " )
4138 func databaseTypeIdNil( ) {
42- let entry = makeNonPluginEntry ( )
39+ let entry = makeEntry ( )
4340 #expect( entry. databaseTypeId == nil )
4441 }
4542
46- @Test ( " additionalTypeIds returns empty array when driverPlugin is nil " )
43+ @Test ( " databaseTypeId returns value when set " )
44+ func databaseTypeIdSet( ) {
45+ let entry = makeEntry ( databaseTypeId: " MySQL " )
46+ #expect( entry. databaseTypeId == " MySQL " )
47+ }
48+
49+ @Test ( " additionalTypeIds returns empty array by default " )
4750 func additionalTypeIdsEmpty( ) {
48- let entry = makeNonPluginEntry ( )
51+ let entry = makeEntry ( )
4952 #expect( entry. additionalTypeIds. isEmpty)
5053 }
5154
52- @Test ( " defaultPort returns nil when driverPlugin is nil " )
55+ @Test ( " defaultPort returns nil when not set " )
5356 func defaultPortNil( ) {
54- let entry = makeNonPluginEntry ( )
57+ let entry = makeEntry ( )
5558 #expect( entry. defaultPort == nil )
5659 }
60+
61+ @Test ( " pluginIconName returns provided value " )
62+ func pluginIconName( ) {
63+ let entry = makeEntry ( pluginIconName: " mysql-icon " )
64+ #expect( entry. pluginIconName == " mysql-icon " )
65+ }
5766}
5867
5968@Suite ( " PluginSource Enum " )
@@ -82,7 +91,11 @@ struct PluginEntryIdentityTests {
8291 version: " 0.1.0 " ,
8392 pluginDescription: " " ,
8493 capabilities: [ ] ,
85- isEnabled: false
94+ isEnabled: false ,
95+ databaseTypeId: nil ,
96+ additionalTypeIds: [ ] ,
97+ pluginIconName: " puzzlepiece " ,
98+ defaultPort: nil
8699 )
87100 #expect( entry. id == " com.example.test-plugin " )
88101 }
0 commit comments