예제 #1
0
def test_empty_add_some_tags(basedir):
    controller = Controller(model=Model())
    assert controller._view._window.title() == "PicPick *"
    assert controller.images == []
    assert controller.tags == []
    assert controller.current_image is None

    # just want to add some tags
    for name in ("alpha", "beta", "gamma"):
        controller.add_tag(Tag(name=name))
    assert controller.tags == [
        Tag(name="alpha"),
        Tag(name="beta"),
        Tag(name="gamma")
    ]

    controller.save(basedir / 'save.picpick')
    assert controller._view._window.title() == "PicPick - save.picpick"

    # eventually wants to remove beta
    controller.delete_tag(Tag(name="beta"))
    assert controller.tags == [Tag(name="alpha"), Tag(name="gamma")]

    assert controller._view._window.title() == "PicPick - save.picpick*"
    controller.save(basedir / 'save.picpick')
    assert controller._view._window.title() == "PicPick - save.picpick"

    # renames alpha to delta
    controller.update_tag(old=Tag(name="alpha"), new=Tag(name="delta"))
    assert controller.tags == [Tag(name="delta"), Tag(name="gamma")]
    assert controller._view._window.title() == "PicPick - save.picpick*"
예제 #2
0
def test_add_tag():
    view = mock.MagicMock()
    controller = Controller(model=Model())
    controller._view = view
    assert controller.tags == []

    controller.add_tag(Tag(name="foo"))

    view.update_tags.assert_called_once_with()
    view.reset_mock()

    controller.add_tag(Tag(name="bar"))

    view.update_tags.assert_called_once_with()
    view.reset_mock()

    assert controller.tags == [Tag(name="bar"), Tag(name="foo")]
예제 #3
0
def test_empty_add_one_image_and_tag_it(basedir, image_factory):
    controller = Controller(model=Model())
    assert controller._view._window.title() == "PicPick *"
    assert controller.images == []
    assert controller.tags == []
    assert controller.current_image is None

    controller.save(basedir / 'save.picpick')
    assert controller._view._window.title() == "PicPick - save.picpick"

    controller.add_image(image_factory('foo.jpg'))
    assert [image.path.name for image in controller.images] == ['foo.jpg']
    assert controller.current_image is not None

    controller.add_tag(Tag(name='alpha'))
    controller.add_tag(Tag(name='beta'))
    assert controller.tags == [Tag(name='alpha'), Tag(name='beta')]

    assert controller._view._window.title() == "PicPick - save.picpick*"
    controller.save(basedir / 'save.picpick')
    assert controller._view._window.title() == "PicPick - save.picpick"

    assert controller.current_image.path.name == 'foo.jpg'
    assert controller.current_image.tags == set()

    controller.tag_current_image(Tag(name='alpha'))
    controller.tag_current_image(Tag(name='beta'))
    assert controller.current_image.tags == {
        Tag(name='alpha'), Tag(name='beta')
    }

    assert controller._view._window.title() == "PicPick - save.picpick*"
    controller.save(basedir / 'save.picpick')
    assert controller._view._window.title() == "PicPick - save.picpick"

    # eventually wants to rename the first tag and delete the second
    controller.update_tag(old=Tag(name="alpha"), new=Tag(name="gamma"))
    controller.delete_tag(Tag(name="beta"))

    assert controller.tags == [Tag(name="gamma")]

    # image tags must have also been updated
    assert controller.current_image.tags == {Tag(name="gamma")}
예제 #4
0
def test_tags():
    controller = Controller(model=Model())
    assert controller.tags == []

    controller.add_tag(Tag(name="red"))
    assert controller.tags == [Tag(name="red")]

    controller.add_tag(Tag(name="blue"))
    controller.add_tag(Tag(name="green"))
    controller.add_tag(Tag(name="yellow"))

    assert controller.tags == [
        Tag(name="blue"),
        Tag(name="green"),
        Tag(name="red"),
        Tag(name="yellow"),
    ]