-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgreeting_workflow_test.rb
63 lines (57 loc) · 2.55 KB
/
greeting_workflow_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# frozen_string_literal: true
require 'test'
require 'message_passing_simple/call_greeting_service'
require 'message_passing_simple/greeting_workflow'
require 'securerandom'
require 'temporalio/testing'
require 'temporalio/worker'
module MessagePassingSimple
class GreetingWorkflowTest < Test
def with_worker_running
Temporalio::Testing::WorkflowEnvironment.start_local do |env|
worker = Temporalio::Worker.new(
client: env.client,
task_queue: "tq-#{SecureRandom.uuid}",
activities: [CallGreetingService],
workflows: [GreetingWorkflow]
)
worker.run { yield env.client, worker }
end
end
def test_queries
with_worker_running do |client, worker|
handle = client.start_workflow(GreetingWorkflow, id: "wf-#{SecureRandom.uuid}", task_queue: worker.task_queue)
assert_equal 'english', handle.query(GreetingWorkflow.language)
assert_equal %w[chinese english], handle.query(GreetingWorkflow.languages, { include_unsupported: false })
assert_equal CallGreetingService.greetings.keys.map(&:to_s).sort,
handle.query(GreetingWorkflow.languages, { include_unsupported: true })
end
end
def test_set_language
with_worker_running do |client, worker|
handle = client.start_workflow(GreetingWorkflow, id: "wf-#{SecureRandom.uuid}", task_queue: worker.task_queue)
assert_equal 'english', handle.query(GreetingWorkflow.language)
prev_language = handle.execute_update(GreetingWorkflow.set_language, :chinese)
assert_equal 'english', prev_language
assert_equal 'chinese', handle.query(GreetingWorkflow.language)
end
end
def test_set_language_invalid
with_worker_running do |client, worker|
handle = client.start_workflow(GreetingWorkflow, id: "wf-#{SecureRandom.uuid}", task_queue: worker.task_queue)
assert_equal 'english', handle.query(GreetingWorkflow.language)
assert_raises(Temporalio::Error::WorkflowUpdateFailedError) do
handle.execute_update(GreetingWorkflow.set_language, :arabic)
end
end
end
def test_apply_language_with_lookup
with_worker_running do |client, worker|
handle = client.start_workflow(GreetingWorkflow, id: "wf-#{SecureRandom.uuid}", task_queue: worker.task_queue)
prev_language = handle.execute_update(GreetingWorkflow.apply_language_with_lookup, :arabic)
assert_equal 'english', prev_language
assert_equal 'arabic', handle.query(GreetingWorkflow.language)
end
end
end
end