Cursor: Apply local changes for cloud agent
This commit is contained in:
@@ -68,6 +68,7 @@ final class SettingsCloudSyncTests: XCTestCase {
|
||||
keyboardHapticIntensity: SyncedField(value: .light, updatedAt: stampA, deviceID: deviceA),
|
||||
polishIntensity: SyncedField(value: .light, updatedAt: stampA, deviceID: deviceA),
|
||||
aiResponseLength: SyncedField(value: .medium, updatedAt: stampA, deviceID: deviceA),
|
||||
multipleReplyVariantsEnabled: SyncedField(value: true, updatedAt: stampA, deviceID: deviceA),
|
||||
activePolishStyleId: SyncedField(value: "builtin.light", updatedAt: stampA, deviceID: deviceA),
|
||||
llmThinkingEnabled: SyncedField(value: false, updatedAt: stampA, deviceID: deviceA),
|
||||
flowSkipAppSwitch: SyncedField(value: true, updatedAt: stampA, deviceID: deviceA),
|
||||
@@ -91,6 +92,7 @@ final class SettingsCloudSyncTests: XCTestCase {
|
||||
keyboardHapticIntensity: SyncedField(value: .strong, updatedAt: stampB, deviceID: deviceB),
|
||||
polishIntensity: SyncedField(value: .heavy, updatedAt: stampB, deviceID: deviceB),
|
||||
aiResponseLength: SyncedField(value: .detailed, updatedAt: stampB, deviceID: deviceB),
|
||||
multipleReplyVariantsEnabled: SyncedField(value: false, updatedAt: stampB, deviceID: deviceB),
|
||||
activePolishStyleId: SyncedField(value: "builtin.formal", updatedAt: stampB, deviceID: deviceB),
|
||||
llmThinkingEnabled: SyncedField(value: true, updatedAt: stampB, deviceID: deviceB),
|
||||
flowSkipAppSwitch: SyncedField(value: false, updatedAt: stampB, deviceID: deviceB),
|
||||
@@ -105,6 +107,7 @@ final class SettingsCloudSyncTests: XCTestCase {
|
||||
XCTAssertEqual(merged.engineMode.value, "local")
|
||||
XCTAssertEqual(merged.polishIntensity.value, .heavy)
|
||||
XCTAssertEqual(merged.aiResponseLength.value, .detailed)
|
||||
XCTAssertFalse(merged.multipleReplyVariantsEnabled.value)
|
||||
}
|
||||
|
||||
func testLegacyKeepAliveFieldDecodesButIsNotReencoded() throws {
|
||||
@@ -207,6 +210,15 @@ final class SettingsCloudSyncTests: XCTestCase {
|
||||
XCTAssertTrue(extensionSideReader.clipboardCandidateBarEnabled)
|
||||
}
|
||||
|
||||
func testMultipleReplyVariantsDefaultsOnAndSharesThroughAppGroup() {
|
||||
XCTAssertTrue(store.multipleReplyVariantsEnabled)
|
||||
|
||||
store.setMultipleReplyVariantsEnabled(false)
|
||||
|
||||
let extensionSideReader = AppGroupStore(defaults: defaults)
|
||||
XCTAssertFalse(extensionSideReader.multipleReplyVariantsEnabled)
|
||||
}
|
||||
|
||||
func testLegacyV1PullDoesNotClearKeychain() async throws {
|
||||
try Keychain.setAPIKey("sk-local-openai", for: "openai", useICloudSync: false)
|
||||
store.setSettingsICloudSyncEnabled(true)
|
||||
@@ -335,4 +347,22 @@ final class SettingsCloudSyncTests: XCTestCase {
|
||||
let config = AppGroupConfiguration.load(fromAvailable: defaults)
|
||||
XCTAssertTrue(config.settingsICloudSyncEnabled)
|
||||
}
|
||||
|
||||
func testOlderV2PayloadDefaultsMultipleReplyVariantsToOn() throws {
|
||||
let payload = SyncedAppSettingsV2.seeded(
|
||||
from: AppGroupConfiguration.load(fromAvailable: defaults),
|
||||
deviceID: deviceA,
|
||||
updatedAt: Date(timeIntervalSince1970: 100)
|
||||
)
|
||||
let encoder = JSONEncoder()
|
||||
var object = try XCTUnwrap(
|
||||
JSONSerialization.jsonObject(with: encoder.encode(payload)) as? [String: Any]
|
||||
)
|
||||
object.removeValue(forKey: "multipleReplyVariantsEnabled")
|
||||
|
||||
let data = try JSONSerialization.data(withJSONObject: object)
|
||||
let decoded = try JSONDecoder().decode(SyncedAppSettingsV2.self, from: data)
|
||||
|
||||
XCTAssertTrue(decoded.multipleReplyVariantsEnabled.value)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user