Пример #1
0
def test_page_list(browser, live_server):
    PageFactory.create()
    relative_url = reverse("page-list")
    browser.get(f"{live_server.url}{relative_url}")

    h1 = browser.find_element(By.CSS_SELECTOR, "h1")
    assert h1.text == "Pages"

    datatables_footer = browser.find_element(By.ID, "DataTables_Table_0_info")
    assert datatables_footer.text == "Showing 1 to 1 of 1 entries"
Пример #2
0
 def setUpTestData(cls):
     cls.page = PageFactory(keywords='python, django')
     cls.page2 = PageFactory(keywords='django')
     cls.page_unpublished = PageFactory(keywords='python',
                                        is_published=False)
     cls.staff_user = UserFactory(
         username='******',
         password='******',
         is_staff=True,
     )
     cls.Authorization = f'Token {cls.staff_user.auth_token.key}'
Пример #3
0
def test_search(client):
    page = PageFactory.create()
    response = client.get(f'{reverse("search")}?search=page')
    assert response.status_code == 200
    assert b"<title>Search Results</title>" in response.content
    assert bytes(f'<a href="{page.get_absolute_url()}">',
                 "utf-8") in response.content
Пример #4
0
    def test_post_release(self):
        release_page = PageFactory(
            title='python 3.3',
            path='/rels/3-3/',
            content='python 3.3. released'
        )
        release_page_url = self.create_url('page', release_page.pk, app_label='pages')
        response = self.client.get(release_page_url)
        self.assertEqual(response.status_code, 200)

        url = self.create_url('release')
        data = {
            'name': 'python 3.3',
            'slug': 'py3-3',
            'release_page': release_page_url,
        }
        response = self.json_client('post', url, data)
        self.assertEqual(response.status_code, 401)

        response = self.json_client('post', url, data, HTTP_AUTHORIZATION=self.Authorization)
        self.assertEqual(response.status_code, 201)

        # Test that the release is created.
        new_url = response['Location']
        # We'll get 401 because the default value of
        # 'Release.is_published' is False.
        response = self.client.get(new_url)
        # TODO: API v1 returns 401; and API v2 returns 404.
        self.assertIn(response.status_code, [401, 404])
        response = self.client.get(new_url, HTTP_AUTHORIZATION=self.Authorization)
        self.assertEqual(response.status_code, 200)
        content = self.get_json(response)
        self.assertEqual(content['name'], data['name'])
        self.assertEqual(content['slug'], data['slug'])
        self.assertIn(data['release_page'], content['release_page'])
Пример #5
0
def test_page_edit(admin_client_browser, live_server):
    page = PageFactory.create(content=f"# {PAGE_TITLE}")
    relative_url = reverse("page-detail", kwargs={"slug": page.slug})
    admin_client_browser.get(f"{live_server.url}{relative_url}")
    admin_client_browser.find_element(By.LINK_TEXT, "Edit").click()

    h1 = admin_client_browser.find_element(By.CSS_SELECTOR, "h1")
    assert h1.text == "Edit Markdown"

    # Edit page content
    textarea = admin_client_browser.find_element(By.ID, "markdown")
    textarea.clear()
    edited_content = f"## {PAGE_TITLE}"
    textarea.send_keys(edited_content)

    # Preview edited page content
    admin_client_browser.find_element(By.ID, "preview-button").click()
    h2 = admin_client_browser.find_element(By.CSS_SELECTOR, "h2")
    assert h2.text == PAGE_TITLE

    # Save edited page content
    admin_client_browser.find_element(By.XPATH,
                                      '//button[text()="Save"]').click()
    time.sleep(1)  # Wait for change to be saved to database
    page_from_database = Page.objects.get(pk=page.id)
    assert page_from_database.content == edited_content
Пример #6
0
def test_page_detail(browser, live_server):
    page = PageFactory.create(content=f"# {PAGE_TITLE}")
    relative_url = reverse("page-detail", kwargs={"slug": page.slug})
    browser.get(f"{live_server.url}{relative_url}")

    h1 = browser.find_element(By.CSS_SELECTOR, "h1")
    assert h1.text == PAGE_TITLE
Пример #7
0
def test_page_api_routes(client):
    page_one = PageFactory.create()
    page_two = PageFactory.create()

    response = client.get("/api/v1/pages/")
    assert response.status_code == 200
    assert isinstance(response.data, list)
    assert len(response.data) == 2
    assert "title" in response.data[0]
    assert response.data[0]["title"] == page_one.title
    assert response.data[1]["title"] == page_two.title

    response = client.get(
        "/api/v1/pages/{page_slug}/".format(page_slug=page_two.slug))
    assert response.status_code == 200
    assert isinstance(response.data, dict)
    assert "title" in response.data
    assert response.data["title"] == page_two.title
Пример #8
0
    def test_image_block_renditions_off(self):
        page = PageFactory()
        image = PHEImageFactory()
        body_content_string = '[{"type": "page_heading_shelf", "value": {"heading": "This is the heading",' \
                              ' "shelf_id": "1", "background_image": %d, "image_right": {' \
                              ' "image": %d, "meta_use_desktop_renditions": "false", ' \
                              ' "meta_use_mobile_renditions": "false"}},' \
                              ' "id": "a2d5e2e8-ae9d-46ef-92e6-27745a85df8c"}]' % (image.id, image.id)

        body_field = [
            field for field in page._meta.fields if field.name == 'body'
        ][0]
        page.body = body_field.to_python(body_content_string)

        page.save_revision()
        latest_revision_as_page = page.get_latest_revision_as_page()
        serialized_page = OneYou2PageSerializer(
            instance=latest_revision_as_page)
        image_block = serialized_page.data['body'][0]['value']['image_right']
        self.assertEqual(type(image_block['renditions']['desktop']), str)
        self.assertNotEqual(len(image_block['renditions']['desktop']), 0)
        self.assertIn('original', image_block['renditions']['desktop'])
        self.assertEqual(type(image_block['renditions']['mobile']), str)
        self.assertNotEqual(len(image_block['renditions']['mobile']), 0)
        self.assertIn('original', image_block['renditions']['mobile'])
Пример #9
0
    def test_image_block_renditions_on(self):
        page = PageFactory()
        image = PHEImageFactory()
        body_content_string = '[{"type": "page_heading_shelf", "value": {"heading": "This is the heading",' \
                              ' "shelf_id": "1", "background_image": %d, "image_right": {' \
                              ' "image": %d, "meta_use_desktop_renditions": "true", ' \
                              ' "meta_use_mobile_renditions": "true"}},' \
                              ' "id": "a2d5e2e8-ae9d-46ef-92e6-27745a85df8c"}]' % (image.id, image.id)

        body_field = [
            field for field in page._meta.fields if field.name == 'body'
        ][0]
        page.body = body_field.to_python(body_content_string)

        page.save_revision()
        latest_revision_as_page = page.get_latest_revision_as_page()
        serialized_page = OneYou2PageSerializer(
            instance=latest_revision_as_page)
        self.assertEqual(type(serialized_page.data), ReturnDict)
        self.assertEqual(type(serialized_page.data['body']), list)
        self.assertEqual(type(serialized_page.data['body'][0]), dict)
        image_block = serialized_page.data['body'][0]['value']['image_right']
        self.assertEqual(type(image_block), OrderedDict)
        self.assertEqual(sorted(image_block.keys()),
                         sorted(['layout', 'title', 'renditions']))
        self.assertEqual(image_block['title'], image.title)
        self.assertEqual(sorted(image_block['renditions'].keys()),
                         sorted(['mobile', 'desktop']))
        self.assertEqual(type(image_block['renditions']['desktop']), str)
        self.assertNotEqual(len(image_block['renditions']['desktop']), 0)
        self.assertIn("fill-1440x240", image_block['renditions']['desktop'])
        self.assertEqual(type(image_block['renditions']['mobile']), str)
        self.assertNotEqual(len(image_block['renditions']['mobile']), 0)
        self.assertIn("fill-375x143", image_block['renditions']['mobile'])
Пример #10
0
def test_minisite_page_access(client, settings):
    site = MinisiteFactory()
    page_host = '{}.aides-territoires'.format(site.slug)
    settings.ALLOWED_HOSTS = [page_host]

    page = PageFactory()
    url = reverse('page_detail_view', args=[page.url])

    # Page is not linked to any minisite
    res = client.get(url, HTTP_HOST=page_host)
    assert res.status_code == 404

    # Page is linked to another minisite
    page.minisite = MinisiteFactory()
    page.save()
    res = client.get(url, HTTP_HOST=page_host)
    assert res.status_code == 404

    # Page is linked to the correct minisite
    page.minisite = site
    page.save()
    res = client.get(url, HTTP_HOST=page_host)
    assert res.status_code == 200
Пример #11
0
def test_page():
    page = PageFactory.build()
    assert (page.content_type == MARKDOWN
            ), 'Expected content type to be "markdown" by default'