Module: GDSZendesk::TestHelpers

Defined in:
lib/gds_zendesk/test_helpers.rb

Instance Method Summary collapse

Instance Method Details

#assert_created_ticket_has(ticket_options) ⇒ Object



61
62
63
64
# File 'lib/gds_zendesk/test_helpers.rb', line 61

def assert_created_ticket_has(ticket_options)
  assert_requested :post, %r{/api/v2/tickets},
    body: { ticket: hash_including(ticket_options) }, times: 1
end

#assert_created_ticket_has_requester(requester_options) ⇒ Object



66
67
68
69
# File 'lib/gds_zendesk/test_helpers.rb', line 66

def assert_created_ticket_has_requester(requester_options)
  assert_requested :post, %r{/api/v2/tickets},
    body: { ticket: hash_including(requester: hash_including(requester_options)) }, times: 1
end

#stub_zendesk_ticket_creation(ticket_properties = nil) ⇒ Object



24
25
26
27
28
29
# File 'lib/gds_zendesk/test_helpers.rb', line 24

def stub_zendesk_ticket_creation(ticket_properties = nil)
  stub = stub_http_request(:post, "#{zendesk_endpoint}/tickets")
  stub.with(body: {ticket: ticket_properties}) unless ticket_properties.nil?
  stub.to_return(status: 201, body: { ticket: { id: 12345 }}.to_json,
                 headers: {'Content-Type' => 'application/json'})
end

#stub_zendesk_ticket_creation_with_body(body) ⇒ Object



31
32
33
34
35
36
# File 'lib/gds_zendesk/test_helpers.rb', line 31

def stub_zendesk_ticket_creation_with_body(body)
  stub_http_request(:post, "#{zendesk_endpoint}/tickets").
    with(body: body).
    to_return(status: 201, body: { ticket: { id: 12345 }}.to_json,
              headers: {'Content-Type' => 'application/json'})
end

#stub_zendesk_user_creation(user_properties = nil) ⇒ Object



17
18
19
20
21
22
# File 'lib/gds_zendesk/test_helpers.rb', line 17

def stub_zendesk_user_creation(user_properties = nil)
  stub = stub_http_request(:post, "#{zendesk_endpoint}/users")
  stub.with(body: {user: user_properties}) unless user_properties.nil?
  stub.to_return(status: 201, body: { user: { id: 12345, name: "abc" }}.to_json,
                 headers: {'Content-Type' => 'application/json'})
end

#stub_zendesk_user_update(user_id, user_properties) ⇒ Object



38
39
40
41
42
43
# File 'lib/gds_zendesk/test_helpers.rb', line 38

def stub_zendesk_user_update(user_id, user_properties)
  stub_http_request(:put, "#{zendesk_endpoint}/users/#{user_id}").
    with(body: {user: user_properties}).
    to_return(status: 201, body: { user: { id: 12345, name: "abc" }}.to_json,
              headers: {'Content-Type' => 'application/json'})
end

#valid_zendesk_credentialsObject



57
58
59
# File 'lib/gds_zendesk/test_helpers.rb', line 57

def valid_zendesk_credentials
  @zendesk_credentials || { "username" => "abc", "password" => "def" }
end

#valid_zendesk_credentials=(credentials) ⇒ Object



53
54
55
# File 'lib/gds_zendesk/test_helpers.rb', line 53

def valid_zendesk_credentials=(credentials)
  @zendesk_credentials = credentials
end

#zendesk_endpointObject



49
50
51
# File 'lib/gds_zendesk/test_helpers.rb', line 49

def zendesk_endpoint
  "https://#{valid_zendesk_credentials["username"]}:#{valid_zendesk_credentials["password"]}@govuk.zendesk.com/api/v2"
end

#zendesk_has_no_user_with_email(email) ⇒ Object



5
6
7
8
9
# File 'lib/gds_zendesk/test_helpers.rb', line 5

def zendesk_has_no_user_with_email(email)
  stub_request(:get, "#{zendesk_endpoint}/users/search?query=#{email}").
    to_return(body: {users: [], previous_page: nil, next_page: nil, count: 0}.to_json,
              headers: {'Content-Type' => 'application/json'})
end

#zendesk_has_user(user_details) ⇒ Object



11
12
13
14
15
# File 'lib/gds_zendesk/test_helpers.rb', line 11

def zendesk_has_user(user_details)
  stub_request(:get, "#{zendesk_endpoint}/users/search?query=#{user_details[:email]}").
    to_return(body: {users: [user_details], previous_page: nil, next_page: nil, count: 1}.to_json,
              headers: {'Content-Type' => 'application/json'})
end

#zendesk_is_unavailableObject



45
46
47
# File 'lib/gds_zendesk/test_helpers.rb', line 45

def zendesk_is_unavailable
  stub_request(:any, /#{zendesk_endpoint}\/.*/).to_return(status: 503)
end