Esempio n. 1
0
    def test_jump_backwards(self, exp):
        main = al.Section(name="main")
        smart = al.HideOnForwardSection(name="smart")

        main += al.Page(name="first")
        smart += al.Page(name="second")
        smart += al.Page(name="third")

        exp += main
        exp += smart

        exp.start()
        exp.forward()
        assert exp.current_page.name == "first"
        exp.forward()
        assert exp.current_page.name == "second"
        exp.backward()
        assert exp.current_page.name == "first"
        exp.forward()
        exp.forward()
        assert exp.current_page.name == "third"
        exp.backward()
        assert exp.current_page.name == "first"
        exp.forward()
        assert exp.current_page.name == "third"

        assert exp.second.is_closed
Esempio n. 2
0
    def test_allow_backward_to(self, exp, caplog):
        caplog.set_level(logging.DEBUG)
        exp.basic_section.allow_backward = False

        inner = al.Section(name="inner")
        outer = al.Section(name="outer")

        outer += inner
        inner += al.Page(name="inner_page")
        outer += al.Page(name="outer_page")

        exp += outer

        inner.allow_backward = False

        exp.start()
        exp.jump("inner_page")

        exp.movement_manager.move("forward")
        assert exp.current_page.name == "outer_page"

        exp.movement_manager.move("backward")
        assert exp.current_page.name == "outer_page"

        assert "inner_page" in caplog.text
        assert "does not allow movement in direction 'backward'" in caplog.text
Esempio n. 3
0
    def test_last_page(self):
        main = al.Section(name="main")

        main += al.Page(name="p1")
        main += al.Page(name="p2")

        assert main.p1 is not main.last_page
        assert main.p2 is main.last_page
Esempio n. 4
0
    def test_admin_without_password(self, tmp_path):
        exp = al.Experiment()
        exp.admin += al.Page(name="admin_test")

        config = ExperimentConfig(tmp_path)
        secrets = ExperimentSecrets(tmp_path)
        urlargs = {"admin": "true"}

        with pytest.raises(AlfredError):
            exp.create_session("sid1", config, secrets, **urlargs)
Esempio n. 5
0
def exp(tmp_path):
    script = "tests/res/script-hello_world.py"
    secrets = "tests/res/secrets-default.conf"
    exp = get_exp_session(tmp_path, script_path=script, secrets_path=secrets)

    exp += al.Page(title="Testpage", name="testpage")

    yield exp

    clear_db()
Esempio n. 6
0
    def test_admin_missing_password(self, tmp_path):
        exp = al.Experiment()
        exp.admin += al.Page(name="admin_test")

        config = ExperimentConfig(tmp_path)
        secrets = ExperimentSecrets(tmp_path)
        urlargs = {"admin": "true"}

        secrets.read_dict({"general": {"adminpass_lvl2": "test"}})

        with pytest.raises(AlfredError) as excinfo:
            exp.create_session("sid1", config, secrets, **urlargs)

        msg = str(excinfo.value)
        assert "lvl1" in msg and "lvl3" in msg and not "lvl2" in msg
Esempio n. 7
0
    def test_admin(self, tmp_path):
        exp = al.Experiment()
        exp.admin += al.Page(name="admin_test")

        config = ExperimentConfig(tmp_path)
        secrets = ExperimentSecrets(tmp_path)
        secrets.read_dict({
            "general": {
                "adminpass_lvl1": "test1",
                "adminpass_lvl2": "test2",
                "adminpass_lvl3": "test3"
            }
        })
        urlargs = {"admin": "true"}

        session = exp.create_session("sid1", config, secrets, **urlargs)
        assert session.admin_mode
Esempio n. 8
0
    def test_skip_on_hiding(self, blank_exp, caplog):
        caplog.set_level(logging.DEBUG)
        exp = blank_exp

        class TestPage(al.Page):
            def on_first_hide(self):
                self.log.info(f"{self.name}: on_first_hide executed")
                self.exp.my_target_test_page.should_be_shown = False

        exp += TestPage(name="test_page")
        exp += al.Page(name="my_target_test_page")

        exp.start()
        assert exp.current_page.name == "test_page"

        exp.forward()
        assert exp.finished
        assert not "my_target_test_page: on_first_show executed" in caplog.text
        assert not "my_target_test_page: on_each_show executed" in caplog.text
        assert not "my_target_test_page: on_first_hide executed" in caplog.text
        assert not "my_target_test_page: on_each_show executed" in caplog.text
Esempio n. 9
0
    def test_admin_equal_passwords(self, tmp_path):
        exp = al.Experiment()
        exp.admin += al.Page(name="admin_test")

        config = ExperimentConfig(tmp_path)
        secrets = ExperimentSecrets(tmp_path)
        urlargs = {"admin": "true"}

        secrets.read_dict({
            "general": {
                "adminpass_lvl1": "test",
                "adminpass_lvl2": "test",
                "adminpass_lvl3": "test1"
            }
        })

        with pytest.raises(AlfredError) as excinfo:
            exp.create_session("sid1", config, secrets, **urlargs)

        msg = str(excinfo.value)
        assert "Passwords must be unique to a level" in msg
Esempio n. 10
0
import alfred3 as al
exp = al.Experiment()
exp += al.Page(title="Page 1", name="p1")
Esempio n. 11
0
 def on_first_hide(self):
     self.log.info(f"{self.name}: on_first_hide executed")
     self.exp += al.Page(name="added_page")
     return super().on_first_hide()
Esempio n. 12
0
"""
You can run the experiment by executing the following command in a 
terminal from inside the experiment directory::

    $ alfred3 run

Refer to the alfred documentation for more guidance.
"""

import alfred3 as al
exp = al.Experiment()

exp += al.Page(title="Hello, world!", name="hello_world")

if __name__ == "__main__":
    exp.run()
Esempio n. 13
0
import alfred3 as al
from alfred3 import admin

exp = al.Experiment()


class MySpectatorPage(admin.SpectatorPage):
    def on_exp_access(self):
        self += al.Text("My spectator page")


class MyOperatorPage(admin.OperatorPage):
    def on_exp_access(self):
        self += al.Text("My operator page")


class MyManagerPage(admin.ManagerPage):
    def on_exp_access(self):
        self += al.Text("My manager page")


exp.admin += MySpectatorPage(title="Spectator", name="spectator")
exp.admin += MyOperatorPage(title="Operator", name="operator")
exp.admin += MyManagerPage(title="Manager", name="manager")

exp += al.Page(title="normal", name="normal")

if __name__ == "__main__":
    exp.run(open_browser=False)