This repository has been archived by the owner on Jul 24, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
/
config.rb
104 lines (85 loc) · 2.69 KB
/
config.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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
module Mantis
class Config
VALUE_TO_METHOD = {
reproducibility: :reproducibilities,
status: :statuses,
priority: :priorities,
severity: :severities,
projection: :projections,
eta: :etas,
resolution: :resolutions,
access_level: :access_levels,
access_min: :access_levels,
project_status: :project_statuses,
project_view_state: :project_view_states,
view_state: :view_states,
custom_field_type: :custom_field_types
}
def initialize(session)
@session = session
end
def statuses
@statuses ||= @session.response_trimmed :mc_enum_status
end
def priorities
@priorities ||= @session.response_trimmed :mc_enum_priorities
end
def severities
@severities ||= @session.response_trimmed :mc_enum_severities
end
def reproducibilities
@reproducibilities ||= @session.response_trimmed :mc_enum_reproducibilities
end
def version
@version ||= @session.response_trimmed :mc_version
end
def projections
@projections ||= @session.response_trimmed :mc_enum_projections
end
def etas
@etas ||= @session.response_trimmed :mc_enum_etas
end
def resolutions
@resolutions ||= @session.response_trimmed :mc_enum_resolutions
end
def access_levels
@access_levels ||= @session.response_trimmed :mc_enum_access_levels
end
def project_statuses
@project_states ||= @session.response_trimmed :mc_enum_project_status
end
def project_view_states
@project_view_states ||= @session.response_trimmed :mc_enum_project_view_states
end
def view_states
@view_states ||= @session.response_trimmed :mc_enum_view_states
end
def custom_field_types
@custom_field_types ||= @session.response_trimmed :mc_enum_custom_field_types
end
def enum_get(type)
@session.response_trimmed :mc_enum_get, {
enumeration: type
}
end
# instead of writing an individual <some_config_type>_for(value), create
# a meta-method that will just retrieve the actual ObjectRef for the type
# and the known value for it.
def object_ref_for_value(type, value)
meth = VALUE_TO_METHOD[type]
if meth
vals = self.send(meth)
val = vals.select { |s| s.value? value.to_s }[0]
raise <<-ERR if val == nil
No #{type.to_s} known with value #{value}. None found in #{vals}.
Please ensure that you have entered the correct value for your type.
ERR
return val
else
raise <<-ERR
No type, #{type} known. Be sure it's one of #{VALUE_TO_METHOD.keys}
ERR
end
end
end # Config
end # Mantis