Exemplo n.º 1
0
def test_user_view_with_different_names(transactional_db, client, username,
                                        first_name, last_name):
    test_user = User.objects.create(
        username=username,
        first_name=first_name,
        last_name=last_name,
        email="*****@*****.**",
        password="******",
    )
    notebook = Notebook.objects.create(owner=test_user, title="Fake notebook")
    revision = NotebookRevision.objects.create(
        notebook=notebook,
        title="First revision",
        content="*fake notebook content*")
    resp = client.get(reverse("user", kwargs={"name": test_user.username}))
    assert resp.status_code == 200
    if test_user.get_full_name():
        assert (get_title_block(resp.content) ==
                f"{test_user.username} ({test_user.get_full_name()})")
    else:
        assert get_title_block(resp.content) == f"{test_user.username}"

    assert get_script_block_json(resp.content, "pageData") == {
        "notebookList": [{
            "id": notebook.id,
            "last_revision": revision.created.isoformat(),
            "title": revision.title,
        }],
        "thisUser": {
            "avatar": None,
            "full_name": test_user.get_full_name(),
            "name": username
        },
        "userInfo": {},
    }
Exemplo n.º 2
0
def test_notebook_view(client, test_notebook):
    initial_revision = NotebookRevision.objects.filter(
        notebook=test_notebook).last()
    resp = client.get(reverse("notebook-view", args=[str(test_notebook.id)]))
    assert resp.status_code == 200
    assert get_title_block(resp.content) == initial_revision.title
    expected_content = '<script id="iomd" type="text/iomd">{}</script>'.format(
        initial_revision.content)
    assert expected_content in str(resp.content)
    assert get_script_block_json(resp.content, "notebookInfo") == {
        "connectionMode": "SERVER",
        "files": [],
        "forked_from": False,
        "notebook_id": test_notebook.id,
        "revision_id": initial_revision.id,
        "revision_is_latest": True,
        "title": "First revision",
        "user_can_save": False,
        "username": "******",
        "max_filename_length": MAX_FILENAME_LENGTH,
        "max_file_size": MAX_FILE_SIZE,
    }

    # add a new revision, verify that a fresh load gets it
    new_revision_content = "My new fun content"
    new_revision = NotebookRevision.objects.create(
        content=new_revision_content,
        notebook=test_notebook,
        title="Second revision")
    resp = client.get(reverse("notebook-view", args=[str(test_notebook.id)]))
    assert resp.status_code == 200
    assert get_title_block(resp.content) == new_revision.title
    new_expected_content = '<script id="iomd" type="text/iomd">{}</script>'.format(
        new_revision_content)
    assert new_expected_content in str(resp.content)
Exemplo n.º 3
0
def test_notebook_view_old_revision(client, test_notebook):
    initial_revision = NotebookRevision.objects.filter(
        notebook=test_notebook).last()
    new_revision_content = "My new fun content"
    NotebookRevision.objects.create(content=new_revision_content,
                                    notebook=test_notebook,
                                    title="Second revision")
    resp = client.get(
        reverse("notebook-view", args=[str(test_notebook.id)]) +
        f"?revision={initial_revision.id}")
    assert resp.status_code == 200
    assert get_title_block(resp.content) == initial_revision.title
    print(str(resp.content))
    assert get_script_block(resp.content, "iomd",
                            "text/iomd") == initial_revision.content
    assert get_script_block_json(resp.content, "notebookInfo") == {
        "connectionMode": "SERVER",
        "files": [],
        "forked_from": False,
        "notebook_id": test_notebook.id,
        "revision_id": initial_revision.id,
        "revision_is_latest": False,
        "title": "First revision",
        "user_can_save": False,
        "username": "******",
        "max_filename_length": MAX_FILENAME_LENGTH,
        "max_file_size": MAX_FILE_SIZE,
    }
Exemplo n.º 4
0
def test_notebook_revisions_page(fake_user, test_notebook, client):
    # create another notebook revision
    NotebookRevision.objects.create(notebook=test_notebook,
                                    title="second revision",
                                    content="*fake notebook content 2*")
    resp = client.get(
        reverse("notebook-revisions", args=[str(test_notebook.id)]))
    assert get_title_block(
        resp.content) == f"Revisions - {test_notebook.title}"
    assert get_script_block_json(resp.content, "pageData") == {
        "files": [],
        "ownerInfo": {
            "avatar": None,
            "full_name": fake_user.get_full_name(),
            "notebookId": test_notebook.id,
            "title": test_notebook.title,
            "username": fake_user.username,
        },
        "revisions":
        [{
            "date": r.created.isoformat(),
            "id": r.id,
            "notebookId": test_notebook.id,
            "title": r.title,
        }
         for r in NotebookRevision.objects.filter(notebook_id=test_notebook.id)
         ],
        "userInfo": {},
    }
Exemplo n.º 5
0
def test_index_view(client, ten_test_notebooks, fake_user, logged_in):
    if logged_in:
        client.force_login(fake_user)
    resp = client.get(reverse("index"))
    assert resp.status_code == 200

    # if user logged in, they should have an avatar defined
    fake_user.refresh_from_db()
    if logged_in:
        assert fake_user.avatar.startswith("https://www.gravatar.com/avatar/")
    else:
        assert fake_user.avatar is None

    listed_notebooks = ten_test_notebooks[::2]
    revisions = NotebookRevision.objects
    expected_gravatar_url = (
        "https://www.gravatar.com/avatar/eaee5961bc7ad96538a4933cb069fda9?d=identicon"
    )
    # assert that the pageData element has the expected structure
    assert get_title_block(resp.content) == "Iodide"
    assert get_script_block_json(resp.content, "pageData") == {
        "notebookList": [{
            "avatar":
            fake_user.avatar,
            "id":
            test_notebook.id,
            "latestRevision":
            (revisions.filter(notebook=test_notebook)[0].created.isoformat()),
            "owner":
            test_notebook.owner.username,
            "title":
            test_notebook.title,
        } for test_notebook in reversed(listed_notebooks)],
        "userInfo": {
            "name":
            fake_user.username,
            "avatar":
            expected_gravatar_url,
            "notebooks": [{
                "id":
                test_notebook.id,
                "latestRevision": (revisions.filter(
                    notebook=test_notebook)[0].created.isoformat()),
                "title":
                test_notebook.title,
            } for test_notebook in reversed(ten_test_notebooks)],
        } if logged_in else {},
    }