Skip to content

Commit bae0924

Browse files
committed
Fix mapping boolean parameters
1 parent 333b2f3 commit bae0924

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

Sources/PowerSync/Protocol/db/JsonParam.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
///
33
/// Supports all standard JSON types: string, number (integer and double),
44
/// boolean, null, arrays, and nested objects.
5-
public enum JsonValue: Codable, Sendable {
5+
public enum JsonValue: Codable, Sendable, Equatable {
66
/// A JSON string value.
77
case string(String)
88

@@ -57,12 +57,12 @@ public enum JsonValue: Codable, Sendable {
5757
internal static func fromValue(raw: Any?) -> Self {
5858
if let string = raw as? String {
5959
return Self.string(string)
60+
} else if let bool = raw as? Bool {
61+
return Self.bool(bool)
6062
} else if let int = raw as? Int {
6163
return Self.int(int)
6264
} else if let double = raw as? Double {
6365
return Self.double(double)
64-
} else if let bool = raw as? Bool {
65-
return Self.bool(bool)
6666
} else if let array = raw as? [Any?] {
6767
return Self.array(array.map(fromValue))
6868
} else if let object = raw as? [String: Any?] {

Tests/PowerSyncTests/Kotlin/KotlinPowerSyncDatabaseImplTests.swift

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,28 @@ final class KotlinPowerSyncDatabaseImplTests: XCTestCase {
733733

734734
XCTAssertNil(status?.progress)
735735
}
736+
737+
func testSubscriptionParameters() async throws {
738+
var streams = database.currentStatus.asFlow().makeAsyncIterator()
739+
let initialStatus = await streams.next(); // Ignore initial
740+
XCTAssertEqual(initialStatus?.syncStreams?.count, 0)
741+
742+
let _ = try await database.syncStream(name: "foo", params: [
743+
"text": JsonValue.string("text"),
744+
"int": JsonValue.int(42),
745+
"double": JsonValue.double(1.23),
746+
"bool": JsonValue.bool(true),
747+
]).subscribe()
748+
let updatedStatus = await streams.next();
749+
750+
XCTAssertEqual(updatedStatus?.syncStreams?.count, 1)
751+
let stream = updatedStatus!.syncStreams![0]
752+
let params = stream.subscription.parameters!
753+
XCTAssertEqual(params["text"], JsonValue.string("text"))
754+
XCTAssertEqual(params["int"], JsonValue.int(42))
755+
XCTAssertEqual(params["double"], JsonValue.double(1.23))
756+
XCTAssertEqual(params["bool"], JsonValue.bool(true))
757+
}
736758
}
737759

738760
extension UUID: PowerSyncDataTypeConvertible {

0 commit comments

Comments
 (0)