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>,
|
type_: Option<String>,
|
||||||
|
|
||||||
pub slug: String,
|
pub slug: String,
|
||||||
title: String,
|
pub title: String,
|
||||||
content: String,
|
pub content: String,
|
||||||
#[serde(rename = "created", skip_deserializing)]
|
#[serde(rename = "created", skip_deserializing)]
|
||||||
created_at: Option<DateTime<Utc>>,
|
created_at: Option<DateTime<Utc>>,
|
||||||
|
|
||||||
|
@ -79,6 +79,21 @@ pub struct Page {
|
||||||
links: HashMap<String, Value>,
|
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)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
pub struct MenuItems {
|
pub struct MenuItems {
|
||||||
title: String,
|
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 regex;
|
||||||
extern crate reqwest;
|
extern crate reqwest;
|
||||||
|
extern crate rookeries;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate serde_json;
|
extern crate serde_json;
|
||||||
|
|
||||||
|
use serde_json::Value;
|
||||||
use reqwest::{Client, StatusCode};
|
use reqwest::{Client, StatusCode};
|
||||||
|
use rookeries::Page;
|
||||||
|
use rookeries::couchdb::Server;
|
||||||
|
|
||||||
mod common;
|
mod common;
|
||||||
|
|
||||||
|
@ -13,33 +19,39 @@ const TEST_PAGE_CONTENT: &str = r#"
|
||||||
I'm a test page.
|
I'm a test page.
|
||||||
"#;
|
"#;
|
||||||
|
|
||||||
//@pytest.fixture(scope='module')
|
|
||||||
//def test_page(db):
|
fn test_page() -> Page {
|
||||||
// return utils.generate_test_page(
|
let mut test_page = Page::default();
|
||||||
// db, title=TEST_PAGE_TITLE, content=TEST_PAGE_CONTENT)
|
|
||||||
|
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]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn test_serve_page_returns_journal_entry_as_json() {
|
fn test_serve_page_returns_journal_entry_as_json() {
|
||||||
let api_base_uri = common::api_base_url();
|
let api_base_uri = common::api_base_url();
|
||||||
let test_client = Client::new();
|
let test_client = Client::new();
|
||||||
|
|
||||||
// TODO: Generate a test page.
|
let test_page = test_page();
|
||||||
// let test_page = Page::
|
|
||||||
let test_page_slug = "random";
|
|
||||||
|
|
||||||
let page_url = format!("/api/pages/{}", test_page_slug);
|
let page_url = format!("/api/pages/{}", test_page.slug);
|
||||||
let status_url = api_base_uri.join(&page_url).unwrap();
|
let page_resource_url = api_base_uri.join(&page_url).unwrap();
|
||||||
|
|
||||||
let expected_json = json!({
|
let expected_json = json!({
|
||||||
"slug": test_page_slug,
|
"slug": test_page.slug,
|
||||||
"title": TEST_PAGE_TITLE,
|
"title": TEST_PAGE_TITLE,
|
||||||
"content": TEST_PAGE_CONTENT,
|
"content": TEST_PAGE_CONTENT,
|
||||||
"created": "random",
|
"created": Value::Null,
|
||||||
"links'": {"self": page_url}
|
"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);
|
assert_eq!(actual_response.status(), StatusCode::Ok);
|
||||||
let actual_response_json: serde_json::Value = actual_response.json().unwrap();
|
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 api_base_uri = common::api_base_url();
|
||||||
let test_client = Client::new();
|
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!({
|
let expected_json = json!({
|
||||||
"error": {
|
"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);
|
assert_eq!(actual_response.status(), StatusCode::NotFound);
|
||||||
let actual_response_json: serde_json::Value = actual_response.json().unwrap();
|
let actual_response_json: serde_json::Value = actual_response.json().unwrap();
|
||||||
|
|
Loading…
Reference in New Issue