mirror of
https://github.com/interviewstreet/go-jira.git
synced 2025-03-19 20:57:47 +02:00
Merge pull request #71 from antifuchs/add-option-field-type
Add the "option" field type for custom fields
This commit is contained in:
commit
792e94b7c0
12
issue.go
12
issue.go
@ -312,6 +312,12 @@ type TransitionPayload struct {
|
||||
ID string `json:"id" structs:"id"`
|
||||
}
|
||||
|
||||
// Option represents an option value in a SelectList or MultiSelect
|
||||
// custom issue field
|
||||
type Option struct {
|
||||
Value string `json:"value" structs:"value"`
|
||||
}
|
||||
|
||||
// UnmarshalJSON will transform the JIRA time into a time.Time
|
||||
// during the transformation of the JIRA JSON response
|
||||
func (t *Time) UnmarshalJSON(b []byte) error {
|
||||
@ -718,7 +724,7 @@ func (s *IssueService) DoTransition(ticketID, transitionID string) (*Response, e
|
||||
// * metaProject should contain metaInformation about the project where the issue should be created.
|
||||
// * metaIssuetype is the MetaInformation about the Issuetype that needs to be created.
|
||||
// * fieldsConfig is a key->value pair where key represents the name of the field as seen in the UI
|
||||
// And value is the string value for that particular key.
|
||||
// And value is the string value for that particular key.
|
||||
// Note: This method doesn't verify that the fieldsConfig is complete with mandatory fields. The fieldsConfig is
|
||||
// supposed to be already verified with MetaIssueType.CheckCompleteAndAvailable. It will however return
|
||||
// error if the key is not found.
|
||||
@ -775,6 +781,10 @@ func InitIssueWithMetaAndFields(metaProject *MetaProject, metaIssuetype *MetaIss
|
||||
issueFields.Unknowns[jiraKey] = IssueType{
|
||||
Name: value,
|
||||
}
|
||||
case "option":
|
||||
issueFields.Unknowns[jiraKey] = Option{
|
||||
Value: value,
|
||||
}
|
||||
default:
|
||||
return nil, fmt.Errorf("Unknown issue type encountered: %s for %s", valueType, key)
|
||||
}
|
||||
|
@ -894,6 +894,42 @@ func TestInitIssueWithMetaAndFields_PriorityValueType(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestInitIssueWithMetaAndFields_SelectList(t *testing.T) {
|
||||
metaProject := MetaProject{
|
||||
Name: "Engineering - Dept",
|
||||
Id: "ENG",
|
||||
}
|
||||
|
||||
fields := tcontainer.NewMarshalMap()
|
||||
fields["someitem"] = map[string]interface{}{
|
||||
"name": "A Select Item",
|
||||
"schema": map[string]interface{}{
|
||||
"type": "option",
|
||||
},
|
||||
}
|
||||
|
||||
metaIssueType := MetaIssueType{
|
||||
Fields: fields,
|
||||
}
|
||||
|
||||
expectedVal := "Value"
|
||||
fieldConfig := map[string]string{
|
||||
"A Select Item": expectedVal,
|
||||
}
|
||||
|
||||
issue, err := InitIssueWithMetaAndFields(&metaProject, &metaIssueType, fieldConfig)
|
||||
if err != nil {
|
||||
t.Errorf("Expected nil error, recieved %s", err)
|
||||
}
|
||||
|
||||
a, _ := issue.Fields.Unknowns.Value("someitem")
|
||||
gotVal := a.(Option).Value
|
||||
|
||||
if gotVal != expectedVal {
|
||||
t.Errorf("Expected %s recieved %s", expectedVal, gotVal)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInitIssueWithMetaAndFields_IssuetypeValueType(t *testing.T) {
|
||||
metaProject := MetaProject{
|
||||
Name: "Engineering - Dept",
|
||||
|
Loading…
x
Reference in New Issue
Block a user