22// Licensed under the MIT License.
33
44using System ;
5+ using System . Text . Json ;
56using System . Threading ;
67using System . Threading . Tasks ;
78using Azure ;
8- using Azure . Core ;
99using Azure . ResourceManager ;
1010using Azure . ResourceManager . Resources ;
1111using Bicep . Core . Registry ;
@@ -25,14 +25,14 @@ public class TemplateSpecRepositoryTests
2525 [ TestMethod ]
2626 public async Task FindTemplateSpecByIdAsync_TemplateSpecNotFound_ThrowsTemplateSpecException ( )
2727 {
28- var templateSpecVersionMock = CreateMockTemplateSpecVersion ( templateSpecVersionMock => templateSpecVersionMock
29- . Setup ( x => x . GetAsync ( It . IsAny < CancellationToken > ( ) ) )
30- . ThrowsAsync ( new RequestFailedException ( 404 , "Not found." ) ) ) ;
28+ var templateSpecVersionResourceMock = CreateMockTemplateSpecVersionResource (
29+ mock => mock
30+ . Setup ( x => x . GetAsync ( It . IsAny < CancellationToken > ( ) ) )
31+ . ThrowsAsync ( new RequestFailedException ( 404 , "Not found." ) ) ) ;
3132
32- var clientMock = CreateMockClient ( ) ;
33- var templateSpecVersionProviderMock = CreateMockTemplateSpecVersionProvider ( clientMock , templateSpecVersionMock ) ;
33+ var clientMock = CreateMockClient ( templateSpecVersionResourceMock ) ;
3434
35- var repository = new TemplateSpecRepository ( clientMock , templateSpecVersionProviderMock ) ;
35+ var repository = new TemplateSpecRepository ( clientMock ) ;
3636
3737 await Invoking ( async ( ) => await repository . FindTemplateSpecByIdAsync ( TestTemplateSpecId ) )
3838 . Should ( )
@@ -43,14 +43,13 @@ await Invoking(async () => await repository.FindTemplateSpecByIdAsync(TestTempla
4343 [ TestMethod ]
4444 public async Task FindTemplateSpecByIdAsync_GotUnexpectedRequestFailedException_ConvertsToTemplateSpecException ( )
4545 {
46- var templateSpecVersionMock = CreateMockTemplateSpecVersion ( templateSpecVersionMock => templateSpecVersionMock
47- . Setup ( x => x . GetAsync ( It . IsAny < CancellationToken > ( ) ) )
48- . ThrowsAsync ( new RequestFailedException ( "Unexpected error." ) ) ) ;
46+ var templateSpecVersionResourceMock = CreateMockTemplateSpecVersionResource ( mock =>
47+ mock . Setup ( x => x . GetAsync ( It . IsAny < CancellationToken > ( ) ) )
48+ . ThrowsAsync ( new RequestFailedException ( "Unexpected error." ) ) ) ;
4949
50- var clientMock = CreateMockClient ( ) ;
51- var templateSpecVersionProviderMock = CreateMockTemplateSpecVersionProvider ( clientMock , templateSpecVersionMock ) ;
50+ var clientMock = CreateMockClient ( templateSpecVersionResourceMock ) ;
5251
53- var repository = new TemplateSpecRepository ( clientMock , templateSpecVersionProviderMock ) ;
52+ var repository = new TemplateSpecRepository ( clientMock ) ;
5453
5554 await Invoking ( async ( ) => await repository . FindTemplateSpecByIdAsync ( TestTemplateSpecId ) )
5655 . Should ( )
@@ -61,42 +60,42 @@ await Invoking(async () => await repository.FindTemplateSpecByIdAsync(TestTempla
6160 [ TestMethod ]
6261 public async Task FindTemplateSpecByIdAsync_TemlateSpecFound_ReturnsTemplateSpec ( )
6362 {
64- var data = new TemplateSpecVersionData ( "westus" )
65- {
66- MainTemplate = new BinaryData ( "{}" )
67- } ;
68-
69- var templateSpecVersionMock = CreateMockTemplateSpecVersion (
70- templateSpecVersionMock => templateSpecVersionMock
71- . SetupGet ( x => x . Data )
72- . Returns ( data ) ,
73- templateSpecVersionMock => templateSpecVersionMock
63+ var data = new TemplateSpecVersionData ( "westus" ) ;
64+ var content = JsonSerializer . Serialize ( data , new JsonSerializerOptions { WriteIndented = true } ) ;
65+
66+ var templateSpecVersionResourceMock = CreateMockTemplateSpecVersionResource (
67+ mock => mock
7468 . Setup ( x => x . GetAsync ( It . IsAny < CancellationToken > ( ) ) )
75- . ReturnsAsync ( CreateMockResponse ( templateSpecVersionMock . Object ) ) ) ;
69+ . ReturnsAsync ( CreateMockResponse ( content ) ) ) ;
7670
77- var clientMock = CreateMockClient ( ) ;
78- var templateSpecVersionProviderMock = CreateMockTemplateSpecVersionProvider ( clientMock , templateSpecVersionMock ) ;
71+ var clientMock = CreateMockClient ( templateSpecVersionResourceMock ) ;
7972
80- var repository = new TemplateSpecRepository ( clientMock , templateSpecVersionProviderMock ) ;
73+ var repository = new TemplateSpecRepository ( clientMock ) ;
8174
8275 var templateSpec = await repository . FindTemplateSpecByIdAsync ( TestTemplateSpecId ) ;
8376
84- templateSpec . MainTemplate . GetRawText ( ) . Should ( ) . Be ( "{}" ) ;
77+ templateSpec . Content . ReplaceLineEndings ( ) . Should ( ) . Be ( @"{
78+ ""Location"": {
79+ ""Name"": ""westus"",
80+ ""DisplayName"": ""West US""
81+ },
82+ ""Tags"": {},
83+ ""Description"": null,
84+ ""LinkedTemplates"": [],
85+ ""Metadata"": null,
86+ ""MainTemplate"": null,
87+ ""UiFormDefinition"": null,
88+ ""Id"": null,
89+ ""Name"": null,
90+ ""ResourceType"": {
91+ ""Namespace"": null,
92+ ""Type"": null
93+ },
94+ ""SystemData"": null
95+ }" . ReplaceLineEndings ( ) ) ;
8596 }
8697
87- private ITemplateSpecVersionProvider CreateMockTemplateSpecVersionProvider (
88- ArmClient armClient ,
89- TemplateSpecVersionResource templateSpecVersion )
90- {
91- var templateSpecVersionProvider = StrictMock . Of < ITemplateSpecVersionProvider > ( ) ;
92- templateSpecVersionProvider
93- . Setup ( x => x . GetTemplateSpecVersion ( armClient , It . IsAny < ResourceIdentifier > ( ) ) )
94- . Returns ( templateSpecVersion ) ;
95-
96- return templateSpecVersionProvider . Object ;
97- }
98-
99- private static TemplateSpecVersionResource CreateMockTemplateSpecVersion ( params Action < Mock < TemplateSpecVersionResource > > [ ] setUpTemplateSpecVersionMockActions )
98+ private static TemplateSpecVersionResource CreateMockTemplateSpecVersionResource ( params Action < Mock < TemplateSpecVersionResource > > [ ] setUpTemplateSpecVersionMockActions )
10099 {
101100 var templateSpecVersionMock = StrictMock . Of < TemplateSpecVersionResource > ( ) ;
102101
@@ -108,18 +107,23 @@ private static TemplateSpecVersionResource CreateMockTemplateSpecVersion(params
108107 return templateSpecVersionMock . Object ;
109108 }
110109
111- private static ArmClient CreateMockClient ( )
110+ private static ArmClient CreateMockClient ( TemplateSpecVersionResource resource )
112111 {
113112 var clientMock = StrictMock . Of < ArmClient > ( ) ;
114113
114+ clientMock . Setup ( x => x . GetResourceClient ( It . IsAny < Func < TemplateSpecVersionResource > > ( ) ) )
115+ . Returns ( resource ) ;
116+
115117 return clientMock . Object ;
116118 }
117119
118- private static Response < T > CreateMockResponse < T > ( T value )
120+ private static Response < TemplateSpecVersionResource > CreateMockResponse ( string content )
119121 {
120- var responseMock = StrictMock . Of < Response < T > > ( ) ;
121- responseMock . SetupGet ( m => m . Value ) . Returns ( value ) ;
122- responseMock . Setup ( m => m . GetRawResponse ( ) ) . Returns ( StrictMock . Of < Response > ( ) . Object ) ;
122+ var rawResponseMock = StrictMock . Of < Response > ( ) ;
123+ rawResponseMock . SetupGet ( x => x . Content ) . Returns ( BinaryData . FromString ( content ) ) ;
124+
125+ var responseMock = StrictMock . Of < Response < TemplateSpecVersionResource > > ( ) ;
126+ responseMock . Setup ( m => m . GetRawResponse ( ) ) . Returns ( rawResponseMock . Object ) ;
123127
124128 return responseMock . Object ;
125129 }
0 commit comments