-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add the ticket API Test --------- Signed-off-by: Yash Khare <yash2010118@akgec.ac.in>
- Loading branch information
1 parent
47eee2d
commit aae707c
Showing
6 changed files
with
251 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package binding | ||
|
||
import ( | ||
"github.com/konveyor/tackle2-hub/api" | ||
) | ||
|
||
// | ||
// Ticket API. | ||
type Ticket struct { | ||
client *Client | ||
} | ||
|
||
// | ||
// Create a Ticket. | ||
func (h *Ticket) Create(r *api.Ticket) (err error) { | ||
err = h.client.Post(api.TicketsRoot, &r) | ||
return | ||
} | ||
|
||
// | ||
// Get a Ticket by ID. | ||
func (h *Ticket) Get(id uint) (r *api.Ticket, err error) { | ||
r = &api.Ticket{} | ||
path := Path(api.TicketRoot).Inject(Params{api.ID: id}) | ||
err = h.client.Get(path, r) | ||
return | ||
} | ||
|
||
// | ||
// List Tickets.. | ||
func (h *Ticket) List() (list []api.Ticket, err error) { | ||
list = []api.Ticket{} | ||
err = h.client.Get(api.TicketsRoot, &list) | ||
return | ||
} | ||
|
||
// | ||
// Delete a Ticket. | ||
func (h *Ticket) Delete(id uint) (err error) { | ||
err = h.client.Delete(Path(api.TicketRoot).Inject(Params{api.ID: id})) | ||
return | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,152 @@ | ||
package ticket | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/konveyor/tackle2-hub/api" | ||
TrackerSamples "github.com/konveyor/tackle2-hub/test/api/tracker" | ||
"github.com/konveyor/tackle2-hub/test/assert" | ||
) | ||
|
||
func TestTicketCRUD(t *testing.T) { | ||
for _, r := range Samples { | ||
t.Run("Ticket "+r.Kind+" CRUD", func(t *testing.T) { | ||
|
||
// Create a sample Application for the ticket. | ||
app := api.Application{ | ||
Name: r.Application.Name, | ||
} | ||
assert.Must(t, Application.Create(&app)) | ||
|
||
createdIdentities := []api.Identity{} | ||
createdTrackers := []api.Tracker{} | ||
for _, tracker := range TrackerSamples.Samples { | ||
// Create a sample identity for the tracker | ||
identity := api.Identity{ | ||
Name: tracker.Identity.Name, | ||
Kind: tracker.Kind, | ||
} | ||
assert.Must(t, Identity.Create(&identity)) | ||
createdIdentities = append(createdIdentities, identity) | ||
assert.Must(t, Tracker.Create(&tracker)) | ||
createdTrackers = append(createdTrackers, tracker) | ||
} | ||
|
||
// Create a sample ticket | ||
assert.Must(t, Ticket.Create(&r)) | ||
|
||
// Get. | ||
got, err := Ticket.Get(r.ID) | ||
if err != nil { | ||
t.Errorf(err.Error()) | ||
} | ||
|
||
// Compare got values with expected values. | ||
AssertEqualTickets(t, got, r) | ||
|
||
// Delete ticket and its related resources. | ||
assert.Must(t, Ticket.Delete(r.ID)) | ||
for _, tracker := range createdTrackers { | ||
assert.Must(t, Tracker.Delete(tracker.ID)) | ||
} | ||
for _, identity := range createdIdentities { | ||
assert.Must(t, Identity.Delete(identity.ID)) | ||
} | ||
assert.Must(t, Application.Delete(app.ID)) | ||
|
||
// Check if the Ticket is present even after deletion or not. | ||
_, err = Ticket.Get(r.ID) | ||
if err == nil { | ||
t.Errorf("Resource exits, but should be deleted: %v", r) | ||
} | ||
}) | ||
} | ||
} | ||
|
||
func TestTicketList(t *testing.T) { | ||
for _, r := range Samples { | ||
|
||
createdTickets := []api.Ticket{} | ||
// Create a sample Application for the ticket. | ||
app := api.Application{ | ||
Name: r.Application.Name, | ||
} | ||
assert.Must(t, Application.Create(&app)) | ||
|
||
createdIdentities := []api.Identity{} | ||
createdTrackers := []api.Tracker{} | ||
for _, tracker := range TrackerSamples.Samples { | ||
// Create a sample identity for the tracker | ||
identity := api.Identity{ | ||
Name: tracker.Identity.Name, | ||
Kind: tracker.Kind, | ||
} | ||
assert.Must(t, Identity.Create(&identity)) | ||
createdIdentities = append(createdIdentities, identity) | ||
assert.Must(t, Tracker.Create(&tracker)) | ||
createdTrackers = append(createdTrackers, tracker) | ||
} | ||
|
||
// Create a sample ticket | ||
assert.Must(t, Ticket.Create(&r)) | ||
createdTickets = append(createdTickets, r) | ||
|
||
// List Tickets. | ||
got, err := Ticket.List() | ||
if err != nil { | ||
t.Errorf(err.Error()) | ||
} | ||
|
||
for _, createdTicket := range createdTickets { | ||
found := false | ||
for _, retrievedTicket := range got { | ||
if assert.FlatEqual(createdTicket.ID, retrievedTicket.ID) { | ||
found = true | ||
break | ||
} | ||
} | ||
if !found { | ||
t.Errorf("Expected ticket not found in the list: %v", createdTicket) | ||
} | ||
} | ||
|
||
// Delete tickets and related resources. | ||
for _, ticket := range createdTickets { | ||
assert.Must(t, Ticket.Delete(ticket.ID)) | ||
assert.Must(t, Application.Delete(ticket.ID)) | ||
} | ||
for _, tracker := range createdTrackers { | ||
assert.Must(t, Tracker.Delete(tracker.ID)) | ||
} | ||
for _, identity := range createdIdentities { | ||
assert.Must(t, Identity.Delete(identity.ID)) | ||
} | ||
} | ||
} | ||
|
||
func AssertEqualTickets(t *testing.T, got *api.Ticket, expected api.Ticket) { | ||
if got.Kind != expected.Kind { | ||
t.Errorf("Different Kind Got %v, expected %v", got.Kind, expected.Kind) | ||
} | ||
if got.Reference != expected.Reference { | ||
t.Errorf("Different Tracker Reference Got %v, expected %v", got.Reference, expected.Reference) | ||
} | ||
if got.Link != expected.Link { | ||
t.Errorf("Different Url Got %v, expected %v", got.Link, expected.Link) | ||
} | ||
if got.Parent != expected.Parent { | ||
t.Errorf("Different Parent Got %v, expected %v", got.Parent, expected.Parent) | ||
} | ||
if got.Message != expected.Message { | ||
t.Errorf("Different Message Got %v, expected %v", got.Message, expected.Message) | ||
} | ||
if got.Status != expected.Status { | ||
t.Errorf("Different Status Got %v, expected %v", got.Status, expected.Status) | ||
} | ||
if got.Application.Name != expected.Application.Name { | ||
t.Errorf("Different Application's Name Got %v, expected %v", got.Application.Name, expected.Application.Name) | ||
} | ||
if got.Tracker.Name != expected.Tracker.Name { | ||
t.Errorf("Different Tracker's Name Got %v, expected %v", got.Tracker.Name, expected.Tracker.Name) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
package ticket | ||
|
||
import ( | ||
"github.com/konveyor/tackle2-hub/binding" | ||
"github.com/konveyor/tackle2-hub/test/api/client" | ||
) | ||
|
||
var ( | ||
RichClient *binding.RichClient | ||
Ticket binding.Ticket | ||
Tracker binding.Tracker | ||
Identity binding.Identity | ||
Application binding.Application | ||
) | ||
|
||
func init() { | ||
// Prepare RichClient and login to Hub API (configured from env variables). | ||
RichClient = client.PrepareRichClient() | ||
|
||
// Shortcut for Ticket-related RichClient methods. | ||
Ticket = RichClient.Ticket | ||
|
||
// Shortcut for Tracker-related RichClient methods. | ||
Tracker = RichClient.Tracker | ||
|
||
// Shortcut for Identity-related RichClient methods. | ||
Identity = RichClient.Identity | ||
|
||
// Shortcut for Application-related RichClient methods. | ||
Application = RichClient.Application | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package ticket | ||
|
||
import ( | ||
"github.com/konveyor/tackle2-hub/api" | ||
TrackerSamples "github.com/konveyor/tackle2-hub/test/api/tracker" | ||
) | ||
|
||
var Samples = []api.Ticket{ | ||
{ | ||
Kind: "10001", | ||
Parent: "10000", | ||
Application: api.Ref{ | ||
ID: 1, | ||
Name: "Sample Application1", | ||
}, | ||
Tracker: api.Ref{ | ||
ID: 1, | ||
Name: TrackerSamples.Samples[0].Name, | ||
}, | ||
}, | ||
} |