mirror of
https://github.com/interviewstreet/go-jira.git
synced 2025-03-21 21:07:03 +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"`
|
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
|
// UnmarshalJSON will transform the JIRA time into a time.Time
|
||||||
// during the transformation of the JIRA JSON response
|
// during the transformation of the JIRA JSON response
|
||||||
func (t *Time) UnmarshalJSON(b []byte) error {
|
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.
|
// * 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.
|
// * 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
|
// * 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
|
// 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
|
// supposed to be already verified with MetaIssueType.CheckCompleteAndAvailable. It will however return
|
||||||
// error if the key is not found.
|
// error if the key is not found.
|
||||||
@ -775,6 +781,10 @@ func InitIssueWithMetaAndFields(metaProject *MetaProject, metaIssuetype *MetaIss
|
|||||||
issueFields.Unknowns[jiraKey] = IssueType{
|
issueFields.Unknowns[jiraKey] = IssueType{
|
||||||
Name: value,
|
Name: value,
|
||||||
}
|
}
|
||||||
|
case "option":
|
||||||
|
issueFields.Unknowns[jiraKey] = Option{
|
||||||
|
Value: value,
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("Unknown issue type encountered: %s for %s", valueType, key)
|
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) {
|
func TestInitIssueWithMetaAndFields_IssuetypeValueType(t *testing.T) {
|
||||||
metaProject := MetaProject{
|
metaProject := MetaProject{
|
||||||
Name: "Engineering - Dept",
|
Name: "Engineering - Dept",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user