Skip to content

Commit d21f12d

Browse files
committed
ListDetialsView: Unit test for item details losing focus
1 parent f18604f commit d21f12d

File tree

2 files changed

+114
-0
lines changed

2 files changed

+114
-0
lines changed
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
// See the LICENSE file in the project root for more information.
4+
5+
using Microsoft.Toolkit.Uwp;
6+
using Microsoft.Toolkit.Uwp.UI;
7+
using Microsoft.Toolkit.Uwp.UI.Controls;
8+
using Microsoft.VisualStudio.TestTools.UnitTesting;
9+
using System;
10+
using System.Collections.ObjectModel;
11+
using System.Threading.Tasks;
12+
using Windows.UI.Xaml;
13+
using Windows.UI.Xaml.Controls;
14+
using Windows.UI.Xaml.Markup;
15+
16+
namespace UnitTests.UWP.UI.Controls
17+
{
18+
[TestClass]
19+
public class Test_ListDetailsView_UI : VisualUITestBase
20+
{
21+
private const string SampleXaml = @"<controls:ListDetailsView
22+
xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
23+
xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""
24+
xmlns:controls=""using:Microsoft.Toolkit.Uwp.UI.Controls""
25+
NoSelectionContent=""No item selected"" >
26+
<controls:ListDetailsView.ItemTemplate>
27+
<DataTemplate>
28+
<TextBlock Text=""Item"" />
29+
</DataTemplate>
30+
</controls:ListDetailsView.ItemTemplate>
31+
<controls:ListDetailsView.DetailsTemplate>
32+
<DataTemplate>
33+
<TextBox Text=""{Binding}"" />
34+
</DataTemplate>
35+
</controls:ListDetailsView.DetailsTemplate>
36+
</controls:ListDetailsView>";
37+
38+
[TestCategory("ListDetailsView")]
39+
[TestMethod]
40+
public async Task Test_LoseFocusOnNoSelection()
41+
{
42+
await App.DispatcherQueue.EnqueueAsync(async () =>
43+
{
44+
var listDetailsView = XamlReader.Load(SampleXaml) as ListDetailsView;
45+
46+
listDetailsView.ItemsSource = new ObservableCollection<string>
47+
{
48+
"First",
49+
};
50+
51+
listDetailsView.SelectedIndex = 0;
52+
53+
await SetTestContentAsync(listDetailsView);
54+
55+
await Task.Delay(1000);
56+
57+
var firsttb = listDetailsView.FindDescendant<TextBox>();
58+
59+
firsttb.Focus(FocusState.Programmatic);
60+
61+
await Task.Delay(1000);
62+
63+
var firstLostFocus = false;
64+
65+
firsttb.LostFocus += (s, e) => firstLostFocus = true;
66+
67+
listDetailsView.SelectedIndex = -1;
68+
69+
await Task.Delay(1000);
70+
71+
Assert.IsTrue(firstLostFocus, "TextBox in the first item should have lost focus.");
72+
});
73+
}
74+
75+
[TestCategory("ListDetailsView")]
76+
[TestMethod]
77+
public async Task Test_LoseFocusOnSelectOther()
78+
{
79+
await App.DispatcherQueue.EnqueueAsync(async () =>
80+
{
81+
var listDetailsView = XamlReader.Load(SampleXaml) as ListDetailsView;
82+
83+
listDetailsView.ItemsSource = new ObservableCollection<string>
84+
{
85+
"First",
86+
"Second",
87+
};
88+
89+
listDetailsView.SelectedIndex = 0;
90+
91+
await SetTestContentAsync(listDetailsView);
92+
93+
await Task.Delay(1000);
94+
95+
var firsttb = listDetailsView.FindDescendant<TextBox>();
96+
97+
firsttb.Focus(FocusState.Programmatic);
98+
99+
await Task.Delay(1000);
100+
101+
var firstLostFocus = false;
102+
103+
firsttb.LostFocus += (s, e) => firstLostFocus = true;
104+
105+
listDetailsView.SelectedIndex = 1;
106+
107+
await Task.Delay(1000);
108+
109+
Assert.IsTrue(firstLostFocus, "TextBox in the first item should have lost focus.");
110+
});
111+
}
112+
}
113+
}

UnitTests/UnitTests.UWP/UnitTests.UWP.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@
237237
<Compile Include="UI\Controls\Test_ConstrainedBox.Multiple.cs" />
238238
<Compile Include="UI\Controls\Test_ConstrainedBox.Combined.cs" />
239239
<Compile Include="UI\Controls\Test_ImageEx.cs" />
240+
<Compile Include="UI\Controls\Test_ListDetailsView_UI.cs" />
240241
<Compile Include="UI\Controls\Test_RadialGauge.cs" />
241242
<Compile Include="UI\Controls\Test_RichSuggestBox.cs" />
242243
<Compile Include="UI\Controls\Test_TextToolbar_Localization.cs" />

0 commit comments

Comments
 (0)