Use assert_called_once_with() instead of assert_called_once() to maintain compatibility with Python 3.5
To maintain backwards compatibility (and because I think it's an OK design choice), keep the widget concept (a single module can produce multiple widgets).