@@ -7,7 +7,8 @@ defmodule EphemeralEnvironments.Grpc.EphemeralEnvironmentsServerTest do
77 alias InternalApi.EphemeralEnvironments . {
88 CreateRequest ,
99 EphemeralEnvironmentType ,
10- EphemeralEnvironments
10+ EphemeralEnvironments ,
11+ ListRequest
1112 }
1213
1314 @ org_id Ecto.UUID . generate ( )
@@ -26,6 +27,58 @@ defmodule EphemeralEnvironments.Grpc.EphemeralEnvironmentsServerTest do
2627 end
2728
2829 describe "list/2" do
30+ test "returns empty list when no environment types exist" , % { channel: channel } do
31+ request = % ListRequest { org_id: @ org_id }
32+ { :ok , response } = EphemeralEnvironments.Stub . list ( channel , request )
33+ assert response . environment_types == [ ]
34+ end
35+
36+ test "returns all environment types for a specific org" , % { channel: channel } do
37+ # Create environment types for the test org
38+ { :ok , env1 } =
39+ Support.Factories.EphemeralEnvironmentsType . insert ( org_id: @ org_id , name: "Development" )
40+
41+ { :ok , env1 } =
42+ Support.Factories.EphemeralEnvironmentsType . insert ( org_id: @ org_id , name: "Staging" )
43+
44+ # Create environment type for a different org (should not be returned)
45+ { :ok , _ } = Support.Factories.EphemeralEnvironmentsType . insert ( org_id: Ecto.UUID . generate ( ) )
46+
47+ request = % ListRequest { org_id: @ org_id }
48+ { :ok , response } = EphemeralEnvironments.Stub . list ( channel , request )
49+
50+ assert length ( response . environment_types ) == 2
51+
52+ dev_env = Enum . find ( response . environment_types , & ( & 1 . name == "Development" ) )
53+ assert dev_env . org_id == @ org_id
54+ assert dev_env . name == "Development"
55+
56+ staging_env = Enum . find ( response . environment_types , & ( & 1 . name == "Staging" ) )
57+ assert staging_env . org_id == @ org_id
58+ assert staging_env . name == "Staging"
59+ end
60+
61+ test "handles multiple orgs correctly" , % { channel: channel } do
62+ org2_id = Ecto.UUID . generate ( )
63+
64+ { :ok , _ } = Support.Factories.EphemeralEnvironmentsType . insert ( org_id: @ org_id )
65+ { :ok , _ } = Support.Factories.EphemeralEnvironmentsType . insert ( org_id: @ org_id )
66+
67+ # Create environment types for org2
68+ { :ok , _ } = Support.Factories.EphemeralEnvironmentsType . insert ( org_id: org2_id )
69+
70+ # Request for org1
71+ request1 = % ListRequest { org_id: @ org_id }
72+ { :ok , response1 } = EphemeralEnvironments.Stub . list ( channel , request1 )
73+ assert length ( response1 . environment_types ) == 2
74+ assert Enum . all? ( response1 . environment_types , & ( & 1 . org_id == @ org_id ) )
75+
76+ # Request for org2
77+ request2 = % ListRequest { org_id: org2_id }
78+ { :ok , response2 } = EphemeralEnvironments.Stub . list ( channel , request2 )
79+ assert length ( response2 . environment_types ) == 1
80+ assert Enum . all? ( response2 . environment_types , & ( & 1 . org_id == org2_id ) )
81+ end
2982 end
3083
3184 describe "describe/2" do
0 commit comments