Commit Graph

17 Commits

Author SHA1 Message Date
Dave Pearson
2b2f19381b Fix test of alpha keys so they match how we test movement keys 2022-12-13 12:42:33 +00:00
Dave Pearson
09fd71e8f6 Improve the name of one of the tests
Just to make it a bit more clear what's going on and why. There's a fair bit
goes into each of these tests and this module is in danger of getting quite
messy. I may revisit the layout at some point just to make it all a lot more
readable.
2022-12-13 12:28:23 +00:00
Dave Pearson
a44c0f5d7f Add a test for widget bindings with binding inheritance turned off 2022-12-13 11:32:09 +00:00
Dave Pearson
a01ab65264 Add a module docstring to the binding inheritance tests
I feel that, for now anyway, these needs a bit more background for the
reader.
2022-12-13 10:48:28 +00:00
Dave Pearson
fc4ee698ca Remove redundant app check in test relating to a widget
It made sense to do this extra step as I was finding my way with these
tests, but I don't think it's necessary now.
2022-12-13 10:44:55 +00:00
Dave Pearson
f0eb284edb Correct a test description 2022-12-13 10:42:48 +00:00
Dave Pearson
4554904f2b Sort the two key lists before comparing
We're coming from a dictionary for one of them, so let's give ourselves a
fighting chance here.
2022-12-13 10:27:33 +00:00
Dave Pearson
3bb7a99a0a Rework the basic Screen binding test
Rather than test that it has zero bindings (although that is a legitimate
test too), test for the thing we're really concerned about here: that it
doesn't have movement keys. That's what this is all about.
2022-12-13 10:25:43 +00:00
Dave Pearson
4a1a78819e Correct a copy/paste-o in the key test
Not that this made a change to its passing/failing state right at the moment
-- it's going to fail anyway -- but it kinda needs to be in its proper "this
should pass" state.
2022-12-13 10:18:46 +00:00
Dave Pearson
e75f784b2c Add a test for a screen binding movement, wrapping a focusable widget
This is the heart of the issue introduced by
b48a1402b8
and which is being investigated in
https://github.com/Textualize/textual/issues/1343 -- the child widget can be
focused, but (as far as the author of the code is concerned) it has no
bindings. Bindings for movement-oriented keys exist on the screen which
composes up the widget into it. Up until 0.5.0 this worked just fine. As of
0.6.0, because binding inheritance was introduced, the bindings for movement
that live at the `Widget` level cause the widget that has no bindings to
appear to have bindings.

While this can potentially be worked around with the use of
inherit_bindings, this isn't a very satisfying solution and also breaks the
rule of least astonishment.

This test is going to be key to all of this. This is the test that should be
made to work without breaking any of the other currently-passing tests.
2022-12-13 10:12:16 +00:00
Dave Pearson
06e45c709e Add an alpha binding and key press to the focused widget test
This is going to become important in the next test I'm intending to add, so
it feels sensible to mirror the intended addition here too.
2022-12-13 10:02:44 +00:00
Dave Pearson
4955a28ab1 Keep black happy (again)
Need to sort out the pre-commit hooks for this machine
2022-12-13 09:48:09 +00:00
Dave Pearson
c52ea0bdf2 Add a test for a focused child widget with its own bindings 2022-12-13 09:46:27 +00:00
Dave Pearson
b48acc0bd5 Update the movement binding tests to use all movement keys
Rather than just test a single specific movement key (in this case "up"), go
with all the affected keys. The cost to doing so is zero and it means we get
a full coverage of testing for all the keys that have become a problem with
0.6.0.
2022-12-13 08:27:22 +00:00
Dave Pearson
751042f9d7 Add a test for actions being fired from bound keys
Do this with a focus on detecting a bound alpha key, and a bound movement key
2022-12-12 21:53:23 +00:00
Dave Pearson
f32937641a Add binding inheritance tests for Static widgets 2022-12-12 21:04:56 +00:00
Dave Pearson
6b77e73558 Start unit tests for live key bindings plus inheriting
Up until now there doesn't seem to have been any unit tests aimed squarely
at setting up bindings, as part of a running application, which are only
about testing the bindings. As such there was no way of slotting in tests
for how inheritance of bindings works.

This starts that process with a view to testing how inheriting
likely *should* work.

See #1343 for some background to this.
2022-12-12 20:49:19 +00:00