Skip to content

Commit 5e8a9f3

Browse files
committed
Test of KeyDown and KeyUp with special keys
1 parent b905a9f commit 5e8a9f3

2 files changed

Lines changed: 135 additions & 1 deletion

File tree

src/bunit.web/EventDispatchExtensions/KeysEventFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ internal static class KeysEventFactory
8989
}
9090
}
9191

92-
if (KeyEvents.TryGetValue(key, out var keyArguments))
92+
if (KeyEvents.TryGetValue(keyWithoutControlKeys, out var keyArguments))
9393
{
9494
return new KeyboardEventArgs
9595
{

tests/bunit.web.tests/EventDispatchExtensions/KeyboardEventDispatchExtensionsTest.cs

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Linq;
33
using System.Reflection;
44
using Microsoft.AspNetCore.Components.Web;
5+
using Shouldly;
56
using Xunit;
67

78
namespace Bunit
@@ -10,6 +11,115 @@ public class KeyboardEventDispatchExtensionsTest : EventDispatchExtensionsTest<K
1011
{
1112
public static IEnumerable<MethodInfo[]> Helpers { get; } = GetEventHelperMethods(typeof(KeyboardEventDispatchExtensions), x => x.GetParameters().All(p => p.ParameterType != typeof(Key)));
1213

14+
public static IEnumerable<object?[]> KeyTestData { get; } = new[]
15+
{
16+
new object?[]
17+
{
18+
Key.Null,
19+
null
20+
},
21+
new object[]
22+
{
23+
Key.Enter,
24+
new KeyboardEventArgs
25+
{
26+
Key = "Enter",
27+
Code = "Enter"
28+
}
29+
},
30+
new object[]
31+
{
32+
Key.Right,
33+
new KeyboardEventArgs
34+
{
35+
Key = "ArrowRight",
36+
Code = "ArrowRight"
37+
}
38+
},
39+
new object[]
40+
{
41+
Key.Add,
42+
new KeyboardEventArgs
43+
{
44+
Key = "+",
45+
Code = "NumpadAdd"
46+
}
47+
},
48+
new object[]
49+
{
50+
Key.Shift,
51+
new KeyboardEventArgs
52+
{
53+
Key = "Shift",
54+
Code = "ShiftLeft",
55+
ShiftKey = true
56+
}
57+
},
58+
new object[]
59+
{
60+
Key.Control,
61+
new KeyboardEventArgs
62+
{
63+
Key = "Control",
64+
Code = "ControlLeft",
65+
CtrlKey = true
66+
}
67+
},
68+
new object[]
69+
{
70+
Key.Alt,
71+
new KeyboardEventArgs
72+
{
73+
Key = "Alt",
74+
Code = "AltLeft",
75+
AltKey = true
76+
}
77+
},
78+
new object[]
79+
{
80+
Key.Enter | Key.Alt,
81+
new KeyboardEventArgs
82+
{
83+
Key = "Enter",
84+
Code = "Enter",
85+
AltKey = true
86+
}
87+
},
88+
new object[]
89+
{
90+
Key.Right | Key.Control,
91+
new KeyboardEventArgs
92+
{
93+
Key = "ArrowRight",
94+
Code = "ArrowRight",
95+
CtrlKey = true
96+
}
97+
},
98+
new object[]
99+
{
100+
Key.Add | Key.Shift | Key.Control,
101+
new KeyboardEventArgs
102+
{
103+
Key = "+",
104+
Code = "NumpadAdd",
105+
ShiftKey = true,
106+
CtrlKey = true
107+
}
108+
},
109+
new object[]
110+
{
111+
Key.Control | Key.Alt | Key.Shift,
112+
new KeyboardEventArgs
113+
{
114+
Key = "Shift",
115+
Code = "ShiftLeft",
116+
ShiftKey = true,
117+
CtrlKey = true,
118+
AltKey = true
119+
}
120+
}
121+
};
122+
13123
protected override string ElementName => "input";
14124

15125
[Theory(DisplayName = "Keyboard events are raised correctly through helpers")]
@@ -31,5 +141,29 @@ public void CanRaiseEvents(MethodInfo helper)
31141

32142
VerifyEventRaisesCorrectly(helper, expected);
33143
}
144+
145+
[Theory(DisplayName = "KeyDown event is raised correctly through helper using special keys")]
146+
[MemberData(nameof(KeyTestData))]
147+
public void CanRaiseKeyDownWithSpecialKey(Key key, KeyboardEventArgs expected)
148+
{
149+
var spy = CreateTriggerSpy(ElementName, "onkeydown");
150+
spy.Trigger(element =>
151+
{
152+
element.KeyDown(key);
153+
});
154+
spy.RaisedEvent.ShouldBeEquivalentTo(expected);
155+
}
156+
157+
[Theory(DisplayName = "KeyDown event is raised correctly through helper using special keys")]
158+
[MemberData(nameof(KeyTestData))]
159+
public void CanRaiseKeyUpWithSpecialKey(Key key, KeyboardEventArgs expected)
160+
{
161+
var spy = CreateTriggerSpy(ElementName, "onkeyup");
162+
spy.Trigger(element =>
163+
{
164+
element.KeyUp(key);
165+
});
166+
spy.RaisedEvent.ShouldBeEquivalentTo(expected);
167+
}
34168
}
35169
}

0 commit comments

Comments
 (0)