Skip to content

Commit

Permalink
create: fix creation test run with environment
Browse files Browse the repository at this point in the history
Implemented pagination in `get environment` method
  • Loading branch information
gibiw committed Jun 10, 2024
1 parent d1300f7 commit bb25ec2
Showing 1 changed file with 29 additions and 20 deletions.
49 changes: 29 additions & 20 deletions internal/client/clientv1.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
)

const (
defaultLimit = 20
defaultLimit = 50
)

// ClientV1 is a client for Qase API v1
Expand All @@ -36,23 +36,34 @@ func (c *ClientV1) GetEnvironments(ctx context.Context, projectCode string) ([]r

ctx, client := c.getApiV1Client(ctx)

resp, r, err := client.EnvironmentsAPI.
GetEnvironments(ctx, projectCode).
Limit(defaultLimit).
Execute()
environments := make([]run.Environment, 0)

if err != nil {
logger.Debug("failed to get environments", "response", r)
return nil, fmt.Errorf("failed to get environments: %w", err)
}
var offset int32 = 0
for {
resp, r, err := client.EnvironmentsAPI.
GetEnvironments(ctx, projectCode).
Limit(defaultLimit).
Offset(offset).
Execute()

environments := make([]run.Environment, 0, len(resp.Result.Entities))
for _, env := range resp.Result.Entities {
environments = append(environments, run.Environment{
Title: env.GetTitle(),
ID: env.GetId(),
Slug: env.GetSlug(),
})
if err != nil {
logger.Debug("failed to get environments", "response", r)
return nil, fmt.Errorf("failed to get environments: %w", err)
}

for _, env := range resp.Result.Entities {
environments = append(environments, run.Environment{
Title: env.GetTitle(),
ID: env.GetId(),
Slug: env.GetSlug(),
})
}

if resp.Result.GetTotal() <= offset {
break
} else {
offset += defaultLimit
}
}

logger.Debug("got environments", "environments", environments)
Expand Down Expand Up @@ -103,12 +114,11 @@ func (c *ClientV1) GetPlans(ctx context.Context, projectCode string) ([]run.Plan

plans := make([]run.Plan, 0)

var limit int32 = defaultLimit
var offset int32 = 0
for {
resp, r, err := client.PlansAPI.
GetPlans(ctx, projectCode).
Limit(limit).
Limit(defaultLimit).
Offset(offset).
Execute()

Expand All @@ -124,10 +134,9 @@ func (c *ClientV1) GetPlans(ctx context.Context, projectCode string) ([]run.Plan
})
}

if resp.Result.GetTotal() <= limit {
if resp.Result.GetTotal() <= offset {
break
} else {
limit += defaultLimit
offset += defaultLimit
}
}
Expand Down

0 comments on commit bb25ec2

Please sign in to comment.