Fix up page tests.
This commit is contained in:
parent
d2019f4c2c
commit
6704d6673a
19
src/lib.rs
19
src/lib.rs
|
@ -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,
|
||||
|
|
|
@ -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
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue