Fix up page tests.

This commit is contained in:
Dorian 2018-08-13 01:37:36 -04:00
parent d2019f4c2c
commit 6704d6673a
3 changed files with 45 additions and 60 deletions

View File

@ -70,8 +70,8 @@ pub struct Page {
type_: Option<String>,
pub slug: String,
title: String,
content: String,
pub title: String,
pub content: String,
#[serde(rename = "created", skip_deserializing)]
created_at: Option<DateTime<Utc>>,
@ -79,6 +79,21 @@ pub struct Page {
links: HashMap<String, Value>,
}
impl Default for Page {
fn default() -> Page {
Page {
id: None,
revision: None,
type_: Some(String::from("page")),
title: Default::default(),
slug: Default::default(),
content: Default::default(),
created_at: None,
links: HashMap::new(),
}
}
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct MenuItems {
title: String,

View File

@ -1,42 +0,0 @@
"""
Unit tests for testing serving of page content.
:copyright: Copyright 2013-2017, Dorian Puła
<dorian.pula@amber-penguin-software.ca>
:license: AGPL v3+
"""
import http
from unittest import mock
import requests
import pytest
from tests import utils
TEST_PAGE_TITLE = 'Testing Page'
TEST_PAGE_CONTENT = '''
# Hello World
I'm a test page.
'''
@pytest.fixture(scope='module')
def test_page(db):
return utils.generate_test_page(
db, title=TEST_PAGE_TITLE, content=TEST_PAGE_CONTENT)
def test_serve_page_returns_journal_entry_as_json(api_base_uri, test_page):
expected_info = {
'slug': test_page.slug,
'title': TEST_PAGE_TITLE,
'content': TEST_PAGE_CONTENT,
'created': mock.ANY,
'links': {'self': f'/api/pages/{test_page.slug}'}
}
actual = requests.get(f'{api_base_uri}/api/pages/{test_page.slug}')
assert actual.status_code == http.HTTPStatus.OK
assert actual.json() == expected_info

View File

@ -1,9 +1,15 @@
#[macro_use]
extern crate fake;
extern crate regex;
extern crate reqwest;
extern crate rookeries;
#[macro_use]
extern crate serde_json;
use serde_json::Value;
use reqwest::{Client, StatusCode};
use rookeries::Page;
use rookeries::couchdb::Server;
mod common;
@ -13,33 +19,39 @@ const TEST_PAGE_CONTENT: &str = r#"
I'm a test page.
"#;
//@pytest.fixture(scope='module')
//def test_page(db):
// return utils.generate_test_page(
// db, title=TEST_PAGE_TITLE, content=TEST_PAGE_CONTENT)
fn test_page() -> Page {
let mut test_page = Page::default();
test_page.title = String::from(TEST_PAGE_TITLE);
test_page.content = String::from(TEST_PAGE_CONTENT);
test_page.slug = format!("{}", fake!(Lorem.word));
let couchdb = Server::configure_from_env().unwrap();
couchdb.update(test_page.clone()).unwrap();
test_page
}
#[test]
#[ignore]
fn test_serve_page_returns_journal_entry_as_json() {
let api_base_uri = common::api_base_url();
let test_client = Client::new();
// TODO: Generate a test page.
// let test_page = Page::
let test_page_slug = "random";
let test_page = test_page();
let page_url = format!("/api/pages/{}", test_page_slug);
let status_url = api_base_uri.join(&page_url).unwrap();
let page_url = format!("/api/pages/{}", test_page.slug);
let page_resource_url = api_base_uri.join(&page_url).unwrap();
let expected_json = json!({
"slug": test_page_slug,
"slug": test_page.slug,
"title": TEST_PAGE_TITLE,
"content": TEST_PAGE_CONTENT,
"created": "random",
"links'": {"self": page_url}
"created": Value::Null,
"links": {"self": page_url}
});
let mut actual_response = test_client.get(status_url).send().unwrap();
let mut actual_response = test_client.get(page_resource_url).send().unwrap();
assert_eq!(actual_response.status(), StatusCode::Ok);
let actual_response_json: serde_json::Value = actual_response.json().unwrap();
@ -51,7 +63,7 @@ fn test_serve_page_view_returns_404_when_no_content_found() {
let api_base_uri = common::api_base_url();
let test_client = Client::new();
let status_url = api_base_uri.join("/api/pages/missing").unwrap();
let missing_page_url = api_base_uri.join("/api/pages/missing").unwrap();
let expected_json = json!({
"error": {
@ -61,7 +73,7 @@ fn test_serve_page_view_returns_404_when_no_content_found() {
}
});
let mut actual_response = test_client.get(status_url).send().unwrap();
let mut actual_response = test_client.get(missing_page_url).send().unwrap();
assert_eq!(actual_response.status(), StatusCode::NotFound);
let actual_response_json: serde_json::Value = actual_response.json().unwrap();