Class: BlockedStalledChange

Inherits:
Object show all
Includes:
ValueEquality
Defined in:
lib/jirametrics/blocked_stalled_change.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ValueEquality

#==, #eql?

Constructor Details

#initialize(time:, flagged: nil, status: nil, status_is_blocking: true, blocking_issue_keys: nil, stalled_days: nil) ⇒ BlockedStalledChange

Returns a new instance of BlockedStalledChange.



9
10
11
12
13
14
15
16
# File 'lib/jirametrics/blocked_stalled_change.rb', line 9

def initialize time:, flagged: nil, status: nil, status_is_blocking: true, blocking_issue_keys: nil, stalled_days: nil
  @flag = flagged
  @status = status
  @status_is_blocking = status_is_blocking
  @blocking_issue_keys = blocking_issue_keys
  @stalled_days = stalled_days
  @time = time
end

Instance Attribute Details

#blocking_issue_keysObject (readonly)

Returns the value of attribute blocking_issue_keys.



7
8
9
# File 'lib/jirametrics/blocked_stalled_change.rb', line 7

def blocking_issue_keys
  @blocking_issue_keys
end

#flagObject (readonly)

Returns the value of attribute flag.



7
8
9
# File 'lib/jirametrics/blocked_stalled_change.rb', line 7

def flag
  @flag
end

#stalled_daysObject (readonly)

Returns the value of attribute stalled_days.



7
8
9
# File 'lib/jirametrics/blocked_stalled_change.rb', line 7

def stalled_days
  @stalled_days
end

#statusObject (readonly)

Returns the value of attribute status.



7
8
9
# File 'lib/jirametrics/blocked_stalled_change.rb', line 7

def status
  @status
end

#status_is_blockingObject (readonly)

Returns the value of attribute status_is_blocking.



7
8
9
# File 'lib/jirametrics/blocked_stalled_change.rb', line 7

def status_is_blocking
  @status_is_blocking
end

#timeObject (readonly)

Returns the value of attribute time.



7
8
9
# File 'lib/jirametrics/blocked_stalled_change.rb', line 7

def time
  @time
end

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


20
# File 'lib/jirametrics/blocked_stalled_change.rb', line 20

def active? = !blocked? && !stalled?

#as_symbolObject



39
40
41
42
43
44
45
46
47
# File 'lib/jirametrics/blocked_stalled_change.rb', line 39

def as_symbol
  if blocked?
    :blocked
  elsif stalled?
    :stalled
  else
    :active
  end
end

#blocked?Boolean

Returns:

  • (Boolean)


18
# File 'lib/jirametrics/blocked_stalled_change.rb', line 18

def blocked? = !!(@flag || blocked_by_status? || @blocking_issue_keys)

#blocked_by_status?Boolean

Returns:

  • (Boolean)


22
# File 'lib/jirametrics/blocked_stalled_change.rb', line 22

def blocked_by_status? = !!(@status && @status_is_blocking)

#inspectObject



49
50
51
52
53
54
55
56
57
# File 'lib/jirametrics/blocked_stalled_change.rb', line 49

def inspect
  text = "BlockedStalledChange(time: '#{@time}', "
  if active?
    text << 'Active'
  else
    text << reasons
  end
  text << ')'
end

#reasonsObject



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/jirametrics/blocked_stalled_change.rb', line 25

def reasons
  result = []
  if blocked?
    result << 'Blocked by flag' if @flag
    result << "Blocked by status: #{@status}" if blocked_by_status?
    result << "Blocked by issues: #{@blocking_issue_keys.join(', ')}" if @blocking_issue_keys
  elsif stalled_by_status?
    result << "Stalled by status: #{@status}"
  elsif @stalled_days
    result << "Stalled by inactivity: #{@stalled_days} days"
  end
  result.join(', ')
end

#stalled?Boolean

Returns:

  • (Boolean)


19
# File 'lib/jirametrics/blocked_stalled_change.rb', line 19

def stalled? = !!(@stalled_days || stalled_by_status?)

#stalled_by_status?Boolean

Returns:

  • (Boolean)


23
# File 'lib/jirametrics/blocked_stalled_change.rb', line 23

def stalled_by_status? = !!(@status && !@status_is_blocking)