@@ -83,288 +83,6 @@ public void MerchantsNew_CreateMerchantButton_Exists()
8383 createButton . TextContent . ShouldContain ( "Create Merchant" ) ;
8484 }
8585
86- [ Fact ( Skip = "CountrySelector component rendering issue in test environment - covered by unit tests" ) ]
87- public void MerchantsNew_SuccessfulCreation_ShowsSuccessMessage ( )
88- {
89- // Arrange
90- this . MerchantUIService . Setup ( m => m . CreateMerchant (
91- It . IsAny < CorrelationId > ( ) ,
92- It . IsAny < Guid > ( ) ,
93- It . IsAny < Guid > ( ) ,
94- It . IsAny < MerchantModels . CreateMerchantModel > ( ) ) )
95- . ReturnsAsync ( Result . Success ) ;
96-
97- var cut = RenderComponent < MerchantsNew > ( ) ;
98- cut . Instance . SetDelayOverride ( 0 ) ;
99-
100- // Wait for the component to finish initial rendering and the CountrySelector to appear
101- cut . WaitForState ( ( ) => cut . FindAll ( "button[aria-label='Select country']" ) . Any ( ) , timeout : TimeSpan . FromSeconds ( 10 ) ) ;
102-
103- // Act - Fill in form and submit
104- var merchantNameInput = cut . Find ( "input[name='MerchantName']" ) ;
105- merchantNameInput . Change ( "Test Merchant" ) ;
106-
107- var settlementScheduleSelect = cut . Find ( "select[name='SettlementSchedule']" ) ;
108- settlementScheduleSelect . Change ( "Weekly" ) ;
109-
110- var addressLine1Input = cut . Find ( "input[name='AddressLine1']" ) ;
111- addressLine1Input . Change ( "123 Test Street" ) ;
112-
113- var townInput = cut . Find ( "input[name='Town']" ) ;
114- townInput . Change ( "Test Town" ) ;
115-
116- var regionInput = cut . Find ( "input[name='Region']" ) ;
117- regionInput . Change ( "Test Region" ) ;
118-
119- var postCodeInput = cut . Find ( "input[name='PostCode']" ) ;
120- postCodeInput . Change ( "12345" ) ;
121-
122- // Interact with CountrySelector - find the button that opens the dropdown
123- var countryButton = cut . Find ( "button[aria-label='Select country']" ) ;
124- countryButton . Click ( ) ;
125-
126- // Find and click a country option (e.g., United Kingdom)
127- var ukButton = cut . FindAll ( "button" ) . FirstOrDefault ( b => b . TextContent . Contains ( "United Kingdom" ) ) ;
128- ukButton . ShouldNotBeNull ( ) ;
129- ukButton . Click ( ) ;
130-
131- var contactNameInput = cut . Find ( "input[name='ContactName']" ) ;
132- contactNameInput . Change ( "John Doe" ) ;
133-
134- var emailInput = cut . Find ( "input[name='EmailAddress']" ) ;
135- emailInput . Change ( "john@example.com" ) ;
136-
137- var phoneInput = cut . Find ( "input[name='PhoneNumber']" ) ;
138- phoneInput . Change ( "1234567890" ) ;
139-
140- var createButton = cut . Find ( "#createMerchantButton" ) ;
141- createButton . Click ( ) ;
142-
143- // Assert
144- cut . WaitForAssertion ( ( ) => cut . Markup . ShouldContain ( "Merchant created successfully" ) , timeout : TimeSpan . FromSeconds ( 5 ) ) ;
145- }
146-
147- [ Fact ( Skip = "CountrySelector component rendering issue in test environment - covered by unit tests" ) ]
148- public void MerchantsNew_SuccessfulCreation_NavigatesToMerchantsList ( )
149- {
150- // Arrange
151- this . MerchantUIService . Setup ( m => m . CreateMerchant (
152- It . IsAny < CorrelationId > ( ) ,
153- It . IsAny < Guid > ( ) ,
154- It . IsAny < Guid > ( ) ,
155- It . IsAny < MerchantModels . CreateMerchantModel > ( ) ) )
156- . ReturnsAsync ( Result . Success ) ;
157-
158- var cut = RenderComponent < MerchantsNew > ( ) ;
159- cut . Instance . SetDelayOverride ( 0 ) ;
160-
161- // Wait for the component to finish initial rendering and the CountrySelector to appear
162- cut . WaitForState ( ( ) => cut . FindAll ( "button[aria-label='Select country']" ) . Any ( ) , timeout : TimeSpan . FromSeconds ( 10 ) ) ;
163-
164- // Act - Fill in form and submit
165- var merchantNameInput = cut . Find ( "input[name='MerchantName']" ) ;
166- merchantNameInput . Change ( "Test Merchant" ) ;
167-
168- var settlementScheduleSelect = cut . Find ( "select[name='SettlementSchedule']" ) ;
169- settlementScheduleSelect . Change ( "Weekly" ) ;
170-
171- var addressLine1Input = cut . Find ( "input[name='AddressLine1']" ) ;
172- addressLine1Input . Change ( "123 Test Street" ) ;
173-
174- var townInput = cut . Find ( "input[name='Town']" ) ;
175- townInput . Change ( "Test Town" ) ;
176-
177- var regionInput = cut . Find ( "input[name='Region']" ) ;
178- regionInput . Change ( "Test Region" ) ;
179-
180- var postCodeInput = cut . Find ( "input[name='PostCode']" ) ;
181- postCodeInput . Change ( "12345" ) ;
182-
183- // Interact with CountrySelector - find the button that opens the dropdown
184- var countryButton = cut . Find ( "button[aria-label='Select country']" ) ;
185- countryButton . Click ( ) ;
186-
187- // Find and click a country option (e.g., United Kingdom)
188- var ukButton = cut . FindAll ( "button" ) . FirstOrDefault ( b => b . TextContent . Contains ( "United Kingdom" ) ) ;
189- ukButton . ShouldNotBeNull ( ) ;
190- ukButton . Click ( ) ;
191-
192- var contactNameInput = cut . Find ( "input[name='ContactName']" ) ;
193- contactNameInput . Change ( "John Doe" ) ;
194-
195- var emailInput = cut . Find ( "input[name='EmailAddress']" ) ;
196- emailInput . Change ( "john@example.com" ) ;
197-
198- var phoneInput = cut . Find ( "input[name='PhoneNumber']" ) ;
199- phoneInput . Change ( "1234567890" ) ;
200-
201- var createButton = cut . Find ( "#createMerchantButton" ) ;
202- createButton . Click ( ) ;
203-
204- // Assert - Wait for navigation
205- cut . WaitForAssertion ( ( ) => _fakeNavigationManager . Uri . ShouldContain ( "/merchants" ) , timeout : TimeSpan . FromSeconds ( 5 ) ) ;
206- }
207-
208- [ Fact ( Skip = "Form submission tests require CountrySelector interaction - tracked in separate issue" ) ]
209- public void MerchantsNew_FailedCreation_ShowsErrorMessage ( )
210- {
211- // Arrange
212- this . MerchantUIService . Setup ( m => m . CreateMerchant (
213- It . IsAny < CorrelationId > ( ) ,
214- It . IsAny < Guid > ( ) ,
215- It . IsAny < Guid > ( ) ,
216- It . IsAny < MerchantModels . CreateMerchantModel > ( ) ) )
217- . ReturnsAsync ( Result . Failure ) ;
218-
219- var cut = RenderComponent < MerchantsNew > ( ) ;
220-
221- // Act - Fill in form and submit
222- var merchantNameInput = cut . Find ( "input[name='MerchantName']" ) ;
223- merchantNameInput . Change ( "Test Merchant" ) ;
224-
225- var settlementScheduleSelect = cut . Find ( "select[name='SettlementSchedule']" ) ;
226- settlementScheduleSelect . Change ( "Weekly" ) ;
227-
228- var addressLine1Input = cut . Find ( "input[name='AddressLine1']" ) ;
229- addressLine1Input . Change ( "123 Test Street" ) ;
230-
231- var townInput = cut . Find ( "input[name='Town']" ) ;
232- townInput . Change ( "Test Town" ) ;
233-
234- var regionInput = cut . Find ( "input[name='Region']" ) ;
235- regionInput . Change ( "Test Region" ) ;
236-
237- var postCodeInput = cut . Find ( "input[name='PostCode']" ) ;
238- postCodeInput . Change ( "12345" ) ;
239-
240- var contactNameInput = cut . Find ( "input[name='ContactName']" ) ;
241- contactNameInput . Change ( "John Doe" ) ;
242-
243- var emailInput = cut . Find ( "input[name='EmailAddress']" ) ;
244- emailInput . Change ( "john@example.com" ) ;
245-
246- var phoneInput = cut . Find ( "input[name='PhoneNumber']" ) ;
247- phoneInput . Change ( "1234567890" ) ;
248-
249- var createButton = cut . Find ( "#createMerchantButton" ) ;
250- createButton . Click ( ) ;
251-
252- // Assert
253- cut . WaitForAssertion ( ( ) => cut . Markup . ShouldContain ( "Failed to create merchant" ) , timeout : TimeSpan . FromSeconds ( 5 ) ) ;
254- }
255-
256- [ Fact ( Skip = "Form submission tests require CountrySelector interaction - tracked in separate issue" ) ]
257- public void MerchantsNew_FailedCreation_DoesNotNavigate ( )
258- {
259- // Arrange
260- this . MerchantUIService . Setup ( m => m . CreateMerchant (
261- It . IsAny < CorrelationId > ( ) ,
262- It . IsAny < Guid > ( ) ,
263- It . IsAny < Guid > ( ) ,
264- It . IsAny < MerchantModels . CreateMerchantModel > ( ) ) )
265- . ReturnsAsync ( Result . Failure ) ;
266-
267- var cut = RenderComponent < MerchantsNew > ( ) ;
268-
269- // Act - Fill in form and submit
270- var merchantNameInput = cut . Find ( "input[name='MerchantName']" ) ;
271- merchantNameInput . Change ( "Test Merchant" ) ;
272-
273- var settlementScheduleSelect = cut . Find ( "select[name='SettlementSchedule']" ) ;
274- settlementScheduleSelect . Change ( "Weekly" ) ;
275-
276- var addressLine1Input = cut . Find ( "input[name='AddressLine1']" ) ;
277- addressLine1Input . Change ( "123 Test Street" ) ;
278-
279- var townInput = cut . Find ( "input[name='Town']" ) ;
280- townInput . Change ( "Test Town" ) ;
281-
282- var regionInput = cut . Find ( "input[name='Region']" ) ;
283- regionInput . Change ( "Test Region" ) ;
284-
285- var postCodeInput = cut . Find ( "input[name='PostCode']" ) ;
286- postCodeInput . Change ( "12345" ) ;
287-
288- var contactNameInput = cut . Find ( "input[name='ContactName']" ) ;
289- contactNameInput . Change ( "John Doe" ) ;
290-
291- var emailInput = cut . Find ( "input[name='EmailAddress']" ) ;
292- emailInput . Change ( "john@example.com" ) ;
293-
294- var phoneInput = cut . Find ( "input[name='PhoneNumber']" ) ;
295- phoneInput . Change ( "1234567890" ) ;
296-
297- var createButton = cut . Find ( "#createMerchantButton" ) ;
298- createButton . Click ( ) ;
299-
300- // Assert - Should not navigate to /merchants
301- cut . WaitForAssertion ( ( ) => cut . Markup . ShouldContain ( "Failed to create merchant" ) , timeout : TimeSpan . FromSeconds ( 5 ) ) ;
302- _fakeNavigationManager . Uri . ShouldNotContain ( "/merchants" ) ;
303- }
304-
305- [ Fact ( Skip = "Form submission tests require CountrySelector interaction - tracked in separate issue" ) ]
306- public void MerchantsNew_SavingState_ShowsLoadingIndicator ( )
307- {
308- // Arrange
309- var tcs = new TaskCompletionSource < Result > ( ) ;
310- this . MerchantUIService . Setup ( m => m . CreateMerchant (
311- It . IsAny < CorrelationId > ( ) ,
312- It . IsAny < Guid > ( ) ,
313- It . IsAny < Guid > ( ) ,
314- It . IsAny < MerchantModels . CreateMerchantModel > ( ) ) )
315- . Returns ( tcs . Task ) ;
316-
317- var cut = RenderComponent < MerchantsNew > ( ) ;
318-
319- // Act - Fill in form and submit
320- var merchantNameInput = cut . Find ( "input[name='MerchantName']" ) ;
321- merchantNameInput . Change ( "Test Merchant" ) ;
322-
323- var settlementScheduleSelect = cut . Find ( "select[name='SettlementSchedule']" ) ;
324- settlementScheduleSelect . Change ( "Weekly" ) ;
325-
326- var addressLine1Input = cut . Find ( "input[name='AddressLine1']" ) ;
327- addressLine1Input . Change ( "123 Test Street" ) ;
328-
329- var townInput = cut . Find ( "input[name='Town']" ) ;
330- townInput . Change ( "Test Town" ) ;
331-
332- var regionInput = cut . Find ( "input[name='Region']" ) ;
333- regionInput . Change ( "Test Region" ) ;
334-
335- var postCodeInput = cut . Find ( "input[name='PostCode']" ) ;
336- postCodeInput . Change ( "12345" ) ;
337-
338- // Interact with CountrySelector - find the button that opens the dropdown
339- var countryButtons = cut . FindAll ( "button[aria-label='Select country']" ) ;
340- if ( countryButtons . Any ( ) )
341- {
342- countryButtons . First ( ) . Click ( ) ;
343- // Find and click a country option (e.g., United Kingdom)
344- var countryOptions = cut . FindAll ( "button" ) ;
345- var ukButton = countryOptions . FirstOrDefault ( b => b . TextContent . Contains ( "United Kingdom" ) ) ;
346- ukButton ? . Click ( ) ;
347- }
348-
349- var contactNameInput = cut . Find ( "input[name='ContactName']" ) ;
350- contactNameInput . Change ( "John Doe" ) ;
351-
352- var emailInput = cut . Find ( "input[name='EmailAddress']" ) ;
353- emailInput . Change ( "john@example.com" ) ;
354-
355- var phoneInput = cut . Find ( "input[name='PhoneNumber']" ) ;
356- phoneInput . Change ( "1234567890" ) ;
357-
358- var createButton = cut . Find ( "#createMerchantButton" ) ;
359- createButton . Click ( ) ;
360-
361- // Assert - Should show "Saving..." text
362- cut . WaitForAssertion ( ( ) => cut . Markup . ShouldContain ( "Saving..." ) , timeout : TimeSpan . FromSeconds ( 5 ) ) ;
363-
364- // Complete the task
365- tcs . SetResult ( Result . Success ( ) ) ;
366- }
367-
36886 [ Fact ]
36987 public async Task HandleSubmit_SuccessfulCreation_SetsSuccessMessage ( )
37088 {
0 commit comments