Skip to content
This repository was archived by the owner on May 30, 2024. It is now read-only.

Commit f53170b

Browse files
author
noah
committed
Fix the bug of predicate
1 parent 5d7f0d0 commit f53170b

File tree

2 files changed

+55
-65
lines changed

2 files changed

+55
-65
lines changed

internal/pkg/store/deployment.go

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ func (s *Store) SearchDeploymentsOfUser(ctx context.Context, u *ent.User, opt *i
3535
return deployment.StatusIn(ss...)
3636
}
3737

38+
// Search deployments that were triggered by the user.
3839
if opt.Owned {
3940
return s.c.Deployment.
4041
Query().
@@ -46,31 +47,25 @@ func (s *Store) SearchDeploymentsOfUser(ctx context.Context, u *ent.User, opt *i
4647
deployment.CreatedAtLT(opt.To),
4748
),
4849
).
49-
WithRepo().
50-
WithUser().
5150
Order(ent.Desc(deployment.FieldCreatedAt)).
5251
Offset(offset(opt.Page, opt.PerPage)).
5352
Limit(opt.PerPage).
53+
WithRepo().
54+
WithUser().
5455
All(ctx)
5556
}
5657

5758
return s.c.Deployment.
5859
Query().
5960
Where(func(s *sql.Selector) {
60-
t := sql.Table(perm.Table)
61+
p := sql.Table(perm.Table)
6162

62-
// Join with Perm for Repo.ID
63-
s.Join(t).
64-
On(
65-
s.C(deployment.FieldRepoID),
66-
s.C(perm.FieldRepoID),
67-
).
68-
Where(
69-
sql.EQ(
70-
t.C(perm.FieldUserID),
71-
u.ID,
72-
),
73-
)
63+
s.Join(p).OnP(
64+
sql.And(
65+
sql.ColumnsEQ(p.C(perm.FieldRepoID), s.C(deployment.FieldRepoID)),
66+
sql.EQ(p.C(perm.FieldUserID), u.ID),
67+
),
68+
)
7469
}).
7570
Where(
7671
deployment.And(
@@ -79,11 +74,11 @@ func (s *Store) SearchDeploymentsOfUser(ctx context.Context, u *ent.User, opt *i
7974
deployment.CreatedAtLT(opt.To),
8075
),
8176
).
82-
WithRepo().
83-
WithUser().
8477
Order(ent.Desc(deployment.FieldCreatedAt)).
8578
Offset(offset(opt.Page, opt.PerPage)).
8679
Limit(opt.PerPage).
80+
WithRepo().
81+
WithUser().
8782
All(ctx)
8883
}
8984

internal/pkg/store/deployment_test.go

Lines changed: 43 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -22,62 +22,69 @@ func TestStore_SearchDeployments(t *testing.T) {
2222

2323
ctx := context.Background()
2424

25-
const (
26-
u1 = 1
27-
u2 = 2
28-
r1 = 1
29-
r2 = 2
30-
)
25+
t.Log("User_1 has the permissions for repo_1 and repo_2.")
26+
client.Perm.
27+
Create().
28+
SetUserID(1).
29+
SetRepoID(1).
30+
SaveX(ctx)
3131

3232
client.Perm.
3333
Create().
34-
SetUserID(u1).
35-
SetRepoID(r1).
34+
SetUserID(1).
35+
SetRepoID(2).
3636
SaveX(ctx)
3737

38+
t.Log("Create the deployments under the repo_1.")
3839
client.Deployment.Create().
3940
SetType(deployment.TypeBranch).
4041
SetNumber(1).
4142
SetRef("main").
4243
SetEnv("local").
43-
SetUserID(u1).
44-
SetRepoID(r1).
44+
SetStatus(deployment.StatusCreated).
45+
SetUserID(1).
46+
SetRepoID(1).
47+
SaveX(ctx)
48+
49+
t.Log("Create the deployments under the repo_2.")
50+
client.Deployment.Create().
51+
SetType(deployment.TypeBranch).
52+
SetNumber(1).
53+
SetRef("main").
54+
SetEnv("dev").
55+
SetUserID(1).
56+
SetRepoID(2).
4557
SaveX(ctx)
4658

4759
client.Deployment.Create().
4860
SetType(deployment.TypeBranch).
4961
SetNumber(2).
5062
SetRef("main").
5163
SetEnv("dev").
52-
SetUserID(u2).
53-
SetRepoID(r1).
64+
SetUserID(2).
65+
SetRepoID(2).
5466
SaveX(ctx)
5567

68+
t.Log("Create the deployments under the repo_3.")
5669
client.Deployment.Create().
5770
SetType(deployment.TypeBranch).
58-
SetNumber(3).
71+
SetNumber(1).
5972
SetRef("main").
6073
SetEnv("dev").
61-
SetUserID(u2).
62-
SetRepoID(r1).
74+
SetUserID(2).
75+
SetRepoID(3).
6376
SetStatus(deployment.StatusCreated).
6477
SaveX(ctx)
6578

66-
t.Run("u1 searchs all deployments of r1.", func(t *testing.T) {
67-
const (
68-
owned = false
69-
page = 1
70-
perPage = 30
71-
)
72-
79+
t.Run("Returns all deployments under the accessible repositories.", func(t *testing.T) {
7380
store := NewStore(client)
7481

7582
res, err := store.SearchDeploymentsOfUser(ctx,
76-
&ent.User{ID: u1},
83+
&ent.User{ID: 1},
7784
&i.SearchDeploymentsOfUserOptions{
78-
ListOptions: i.ListOptions{Page: page, PerPage: perPage},
85+
ListOptions: i.ListOptions{Page: 1, PerPage: 30},
7986
Statuses: []deployment.Status{},
80-
Owned: owned,
87+
Owned: false,
8188
From: time.Now().UTC().Add(-time.Minute),
8289
To: time.Now().UTC(),
8390
})
@@ -91,57 +98,45 @@ func TestStore_SearchDeployments(t *testing.T) {
9198
}
9299
})
93100

94-
t.Run("u1 searchs waiting deployments of r1.", func(t *testing.T) {
95-
const (
96-
owned = false
97-
page = 1
98-
perPage = 30
99-
)
100-
101+
t.Run("Returns waiting deployments under the accessible repositories.", func(t *testing.T) {
101102
store := NewStore(client)
102103

103104
res, err := store.SearchDeploymentsOfUser(ctx,
104-
&ent.User{ID: u1},
105+
&ent.User{ID: 1},
105106
&i.SearchDeploymentsOfUserOptions{
106-
ListOptions: i.ListOptions{Page: page, PerPage: perPage},
107-
Statuses: []deployment.Status{deployment.StatusWaiting},
108-
Owned: owned,
107+
ListOptions: i.ListOptions{Page: 1, PerPage: 30},
108+
Statuses: []deployment.Status{deployment.StatusCreated},
109+
Owned: false,
109110
From: time.Now().UTC().Add(-time.Minute),
110111
To: time.Now().UTC(),
111112
})
112113
if err != nil {
113114
t.Fatalf("SearchDeployments return an error: %s", err)
114115
}
115116

116-
expected := 2
117+
expected := 1
117118
if len(res) != expected {
118119
t.Fatalf("SearchDeployments = %v, wanted %v", len(res), expected)
119120
}
120121
})
121122

122-
t.Run("u1 searchs owned deployments of r1.", func(t *testing.T) {
123-
const (
124-
owned = true
125-
page = 1
126-
perPage = 30
127-
)
128-
123+
t.Run("Returns all deployment triggered by myself.", func(t *testing.T) {
129124
store := NewStore(client)
130125

131126
res, err := store.SearchDeploymentsOfUser(ctx,
132-
&ent.User{ID: u1},
127+
&ent.User{ID: 1},
133128
&i.SearchDeploymentsOfUserOptions{
134-
ListOptions: i.ListOptions{Page: page, PerPage: perPage},
129+
ListOptions: i.ListOptions{Page: 1, PerPage: 30},
135130
Statuses: []deployment.Status{},
136-
Owned: owned,
131+
Owned: true,
137132
From: time.Now().UTC().Add(-time.Minute),
138133
To: time.Now().UTC(),
139134
})
140135
if err != nil {
141136
t.Fatalf("SearchDeployments return an error: %s", err)
142137
}
143138

144-
expected := 1
139+
expected := 2
145140
if len(res) != expected {
146141
t.Fatalf("SearchDeployments = %v, wanted %v", res, expected)
147142
}

0 commit comments

Comments
 (0)