Comments (7)
Also whatever we come up with should ideally be reusable outside of todoman, particularly khal.
from todoman.
It appears that #170 introduces some sort of UI test. I suspect an easier approach would be to create a fake urwid.MainLoop
.
from todoman.
My best idea so far is to implement a dummy Screen, and test against that (with some help from mock
, probably).
See here for more relevant documentation.
from todoman.
I had hoped that there already is a testing framework/library for urwid. This is why I tagged this as lv: hard
, because eventually we'd need to come up with our own.
from todoman.
So here's what I'm thinking right now:
- Implement a screen-like class that doesn't do any outputting. I might just subclass that implementation and point
output
to/dev/null
. If this turns out too complex, just write a class from scratch. - Instances of this class receive a list of keys, that it will simulate were pressed in that order (by returning them via
get_input
). - Write a test with a set of key-pressed, and check that the result (in the database) is the expected one, and that no exception were thrown.
This is a very high-level functional test, and not actual unit testing. Unit testing individual components can probably be done some other way.
We don't actually validate that thing look how we want them to, only that they behave how we want them to. The html_fragment display module can do that.
from todoman.
from todoman.
Maybe we can use/borrow this html comparison assertion code.
Otherwise yes, we could write our own display module based on the HTML one (I'm guessing lots of its logic would be reusable).
from todoman.
Related Issues (20)
- Docs are filing to build on readthedocs HOT 1
- Docs are filing to build on readthedocs HOT 1
- Docs are filing to build on readthedocs HOT 1
- Navigating tasks with vim keys HOT 6
- todoman 4.3.0 not on pypi HOT 4
- 4.3.0: test_ctrl_c_clears fails HOT 3
- Click repl doesn't show up HOT 2
- categories with diacritics not handled well HOT 5
- Subcommand to get current configuration parameters HOT 1
- Can't run v4.3.2 on Slackware64-15.0 HOT 2
- Please release 4.4.0 at PyPi HOT 2
- Tasks template && time tracking HOT 1
- Flags in config file donβt apply to default commands HOT 1
- crash when creating new todo and reading description from stdin HOT 2
- Show one-line summaries when deleting multiple items
- Remember latest creation
- `todo categories` should show all categories
- Rethink flushing
- Exclude fields in list command HOT 1
- Feature request: Any plans on adding recurring tasks? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from todoman.