@@ -6,7 +6,7 @@ namespace AWS.AgentCore.SourceGenerator.UnitTests;
66public class AgentCoreStartupGeneratorTests
77{
88 [ Fact ]
9- public void Generator_WithStartupAndAgent_EmitsProgram ( )
9+ public async Task Generator_WithStartupAndAgent_EmitsProgram ( )
1010 {
1111 var source = @"
1212using AWS.AgentCore;
@@ -34,18 +34,14 @@ public Task<string> Handle(PromptRequest request, AgentCoreRuntimeContext contex
3434}" ;
3535
3636 var result = GeneratorTestHelper . RunGenerator ( source ) ;
37+ var expected = await ReadSnapshot ( "StartupAndAgent.g.cs" ) ;
3738
3839 Assert . NotNull ( result . GeneratedSource ) ;
39- Assert . Contains ( "var builder = WebApplication.CreateBuilder(args);" , result . GeneratedSource ) ;
40- Assert . Contains ( "var startup = new TestApp.Startup();" , result . GeneratedSource ) ;
41- Assert . Contains ( "startup.ConfigureServices(builder);" , result . GeneratedSource ) ;
42- Assert . Contains ( "builder.Services.AddTransient<TestApp.MyAgent>();" , result . GeneratedSource ) ;
43- Assert . Contains ( "app.MapAgentCore<TestApp.PromptRequest>(" , result . GeneratedSource ) ;
44- Assert . Contains ( "agent.Handle(request, context, ct)" , result . GeneratedSource ) ;
40+ Assert . Equal ( expected , result . GeneratedSource ) ;
4541 }
4642
4743 [ Fact ]
48- public void Generator_WithPingHandler_EmitsPingDelegate ( )
44+ public async Task Generator_WithPingHandler_EmitsPingDelegate ( )
4945 {
5046 var source = @"
5147using AWS.AgentCore;
@@ -70,14 +66,14 @@ public Task<string> Handle(PromptRequest request, CancellationToken ct)
7066}" ;
7167
7268 var result = GeneratorTestHelper . RunGenerator ( source ) ;
69+ var expected = await ReadSnapshot ( "WithPingHandler.g.cs" ) ;
7370
7471 Assert . NotNull ( result . GeneratedSource ) ;
75- Assert . Contains ( "pingHandler:" , result . GeneratedSource ) ;
76- Assert . Contains ( "agent.Ping()" , result . GeneratedSource ) ;
72+ Assert . Equal ( expected , result . GeneratedSource ) ;
7773 }
7874
7975 [ Fact ]
80- public void Generator_WithoutStartup_SkipsConfigureServices ( )
76+ public async Task Generator_WithoutStartup_SkipsConfigureServices ( )
8177 {
8278 var source = @"
8379using AWS.AgentCore;
@@ -99,14 +95,14 @@ public Task<string> Handle(PromptRequest request, CancellationToken ct)
9995}" ;
10096
10197 var result = GeneratorTestHelper . RunGenerator ( source ) ;
98+ var expected = await ReadSnapshot ( "WithoutStartup.g.cs" ) ;
10299
103100 Assert . NotNull ( result . GeneratedSource ) ;
104- Assert . DoesNotContain ( "ConfigureServices" , result . GeneratedSource ) ;
105- Assert . Contains ( "builder.Services.AddTransient<TestApp.MyAgent>();" , result . GeneratedSource ) ;
101+ Assert . Equal ( expected , result . GeneratedSource ) ;
106102 }
107103
108104 [ Fact ]
109- public void Generator_WithoutInvocation_EmitsNothing ( )
105+ public void Generator_WithoutHandler_EmitsNothing ( )
110106 {
111107 var source = @"
112108using AWS.AgentCore;
@@ -126,7 +122,7 @@ public void ConfigureServices(Microsoft.AspNetCore.Builder.WebApplicationBuilder
126122 }
127123
128124 [ Fact ]
129- public void Generator_StreamingHandler_DetectsReturnType ( )
125+ public async Task Generator_StreamingHandler_DetectsReturnType ( )
130126 {
131127 var source = @"
132128using AWS.AgentCore;
@@ -148,14 +144,14 @@ public IAsyncEnumerable<string> Handle(PromptRequest request, CancellationToken
148144}" ;
149145
150146 var result = GeneratorTestHelper . RunGenerator ( source ) ;
147+ var expected = await ReadSnapshot ( "StreamingHandler.g.cs" ) ;
151148
152149 Assert . NotNull ( result . GeneratedSource ) ;
153- Assert . Contains ( "app.MapAgentCore<TestApp.PromptRequest>(" , result . GeneratedSource ) ;
154- Assert . Contains ( "agent.Handle(request, ct)" , result . GeneratedSource ) ;
150+ Assert . Equal ( expected , result . GeneratedSource ) ;
155151 }
156152
157153 [ Fact ]
158- public void Generator_RequestOnlyParameter_IdentifiesRequestType ( )
154+ public async Task Generator_RequestOnlyParameter_IdentifiesRequestType ( )
159155 {
160156 var source = @"
161157using AWS.AgentCore;
@@ -176,13 +172,14 @@ public Task<string> Handle(MyRequest request)
176172}" ;
177173
178174 var result = GeneratorTestHelper . RunGenerator ( source ) ;
175+ var expected = await ReadSnapshot ( "RequestOnly.g.cs" ) ;
179176
180177 Assert . NotNull ( result . GeneratedSource ) ;
181- Assert . Contains ( "app.MapAgentCore<TestApp.MyRequest>(" , result . GeneratedSource ) ;
178+ Assert . Equal ( expected , result . GeneratedSource ) ;
182179 }
183180
184181 [ Fact ]
185- public void Generator_GlobalNamespace_HandlesCorrectly ( )
182+ public async Task Generator_GlobalNamespace_HandlesCorrectly ( )
186183 {
187184 var source = @"
188185using AWS.AgentCore;
@@ -200,9 +197,16 @@ public Task<string> Handle(PromptRequest request)
200197}" ;
201198
202199 var result = GeneratorTestHelper . RunGenerator ( source ) ;
200+ var expected = await ReadSnapshot ( "GlobalNamespace.g.cs" ) ;
203201
204202 Assert . NotNull ( result . GeneratedSource ) ;
205- Assert . Contains ( "builder.Services.AddTransient<MyAgent>();" , result . GeneratedSource ) ;
206- Assert . Contains ( "app.MapAgentCore<PromptRequest>(" , result . GeneratedSource ) ;
203+ Assert . Equal ( expected , result . GeneratedSource ) ;
204+ }
205+
206+ private static async Task < string > ReadSnapshot ( string fileName )
207+ {
208+ var path = Path . Combine ( "Snapshots" , fileName ) ;
209+ var content = await File . ReadAllTextAsync ( path ) ;
210+ return content . ReplaceLineEndings ( "\n " ) ;
207211 }
208212}
0 commit comments