Skip to content

Commit bbb7122

Browse files
committed
Updated unit tests
1 parent 7d812bf commit bbb7122

File tree

1 file changed

+35
-26
lines changed

1 file changed

+35
-26
lines changed

Tests/TemporalTests/Worker/Activities/ActivityWorkerTests.swift

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -231,21 +231,23 @@ private struct BadHeartbeatAcivity: ActivityDefinition {
231231
}
232232
}
233233

234-
private struct ReadingHeartbeatAcivity: ActivityDefinition {
234+
struct ReadingHeartbeatActivity: ActivityDefinition {
235235
struct HeartbeatDetails: Codable, Hashable {
236236
var string: String
237237
var data: Data
238238
}
239239
typealias Input = Void
240-
typealias Output = HeartbeatDetails
240+
typealias Output = HeartbeatDetails?
241241

242-
static let name: String? = "ReadingHeartbeatAcivity"
242+
static let name: String? = "ReadingHeartbeatActivity"
243243

244-
func run(input: Void) async throws -> HeartbeatDetails {
245-
let (string, data) = try await ActivityExecutionContext.current!.info.heartbeatDetails(
244+
func run(input: Void) async throws -> HeartbeatDetails? {
245+
guard let (string, data) = try await ActivityExecutionContext.current!.info.heartbeatDetails(
246246
as: String.self,
247247
Data.self
248-
)
248+
) else {
249+
return nil
250+
}
249251

250252
return .init(string: string, data: data)
251253
}
@@ -748,9 +750,9 @@ struct ActivityWorkerTests {
748750
}
749751
}
750752

751-
@Test
752-
static func readingHeartbeat() async throws {
753-
let test = ActivityWorkerTests(activities: [ReadingHeartbeatAcivity()])
753+
@Test("Read Heartbeat Details", arguments: [true, false])
754+
static func readingHeartbeat(heartbeatDetailsAvailable: Bool) async throws {
755+
let test = ActivityWorkerTests(activities: [ReadingHeartbeatActivity()])
754756

755757
try await withThrowingTaskGroup(of: Void.self) { group in
756758
group.addTask {
@@ -760,40 +762,47 @@ struct ActivityWorkerTests {
760762
test.bridgeWorker.activityTaskContinuation.yield(
761763
.with {
762764
$0.taskToken = Data([1])
763-
$0.start.activityType = "ReadingHeartbeatAcivity"
765+
$0.start.activityType = "ReadingHeartbeatActivity"
764766
$0.start.activityID = "ActivityID1"
765767
$0.start.attempt = 1
766768
$0.start.workflowType = "WorkflowType"
767769
$0.start.workflowExecution = .with {
768770
$0.runID = "RunID"
769771
$0.workflowID = "WorkflowID1"
770772
}
771-
$0.start.heartbeatDetails = [
772-
.with {
773-
$0.data = Data(#""Foo""#.utf8)
774-
$0.metadata = ["encoding": Data("json/plain".utf8)]
775-
},
776-
.with {
777-
$0.data = Data([1, 2, 3])
778-
$0.metadata = ["encoding": Data("binary/plain".utf8)]
779-
},
780-
]
773+
if heartbeatDetailsAvailable {
774+
$0.start.heartbeatDetails = [
775+
.with {
776+
$0.data = Data(#""Foo""#.utf8)
777+
$0.metadata = ["encoding": Data("json/plain".utf8)]
778+
},
779+
.with {
780+
$0.data = Data([1, 2, 3])
781+
$0.metadata = ["encoding": Data("binary/plain".utf8)]
782+
},
783+
]
784+
}
781785
}
782786
)
783787

784788
var activityTaskCompletionIterator = test.bridgeWorker.activityTaskCompletionStream.makeAsyncIterator()
785789
let completion = try await activityTaskCompletionIterator.next()
786790
#expect(completion?.taskToken == Data([1]))
787791
let jsonDecoder = JSONDecoder()
788-
let expectedHeartbeatDetails = ReadingHeartbeatAcivity.HeartbeatDetails(
789-
string: "Foo",
790-
data: Data([1, 2, 3])
791-
)
792792
let heartbeatDetails = try jsonDecoder.decode(
793-
ReadingHeartbeatAcivity.HeartbeatDetails.self,
793+
(ReadingHeartbeatActivity.HeartbeatDetails?).self,
794794
from: completion!.result.completed.result.data
795795
)
796-
#expect(heartbeatDetails == expectedHeartbeatDetails)
796+
797+
if heartbeatDetailsAvailable {
798+
let expectedHeartbeatDetails = ReadingHeartbeatActivity.HeartbeatDetails(
799+
string: "Foo",
800+
data: Data([1, 2, 3])
801+
)
802+
#expect(heartbeatDetails == expectedHeartbeatDetails)
803+
} else {
804+
#expect(heartbeatDetails == nil)
805+
}
797806
group.cancelAll()
798807
}
799808
}

0 commit comments

Comments
 (0)