Class: FlashFlow::Release::PercyClient

Inherits:
Object
  • Object
show all
Defined in:
lib/flash_flow/release/percy_client.rb

Instance Method Summary collapse

Constructor Details

#initialize(config = {}) ⇒ PercyClient

Returns a new instance of PercyClient.



10
11
12
13
14
# File 'lib/flash_flow/release/percy_client.rb', line 10

def initialize(config={})
  @client = initialize_connection!(config)
  @compliance_config = config['compliance']
  @release_sha = config['release_sha']
end

Instance Method Details

#find_latest_by_sha(sha) ⇒ Object



16
17
18
19
20
# File 'lib/flash_flow/release/percy_client.rb', line 16

def find_latest_by_sha(sha)
  response = get_builds
  commit = find_commit_by_sha(response, sha)
  find_build_by_commit_id(response, commit['id'])
end

#gen_pdf_diffs(output_file, build_id = nil, threshold = 0.0) ⇒ Object



40
41
42
43
44
# File 'lib/flash_flow/release/percy_client.rb', line 40

def gen_pdf_diffs(output_file, build_id=nil, threshold=0.0)
  # TODO: Switch this over to Percy.get_comparisons at some point
  build_id ||= get_build_id
  PdfDiffGenerator.new.generate(get_comparisons(build_id), output_file, threshold)
end

#qa_approved?(sha = nil) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
49
# File 'lib/flash_flow/release/percy_client.rb', line 46

def qa_approved?(sha=nil)
  build = find_latest_by_sha(sha || @release_sha)
  !build['approved-at'].nil?
end

#send_compliance_emailObject



22
23
24
25
26
27
28
29
30
# File 'lib/flash_flow/release/percy_client.rb', line 22

def send_compliance_email
  max_wait_time = @compliance_config['max_wait_time'] || 0
  delay = @compliance_config['delay'] || 1
  build = find_completed_build_by_sha(@release_sha, max_wait_time, delay)

  unless build_approved?(build)
    gen_compliance_pdf_file(build)
  end
end

#send_release_emailObject



32
33
34
35
36
37
38
# File 'lib/flash_flow/release/percy_client.rb', line 32

def send_release_email
  build = find_latest_by_sha(@release_sha)

  unless build_approved?(build)
    mailer.deliver!(:compliance, { percy_build_url: build['web-url'] })
  end
end