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"
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}'
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
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'])
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
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
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
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'])
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'])
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
def test_page(): page = PageFactory.build() assert (page.content_type == MARKDOWN ), 'Expected content type to be "markdown" by default'