(Almost) full test coverage
This commit is contained in:
parent
0639c5ca12
commit
544e380835
8 changed files with 417 additions and 100 deletions
|
|
@ -124,39 +124,96 @@ impl Feed {
|
|||
mod tests {
|
||||
use super::*;
|
||||
use crate::{
|
||||
Adapter,
|
||||
AdapterBuilder,
|
||||
db::User,
|
||||
test_utils::{
|
||||
FEED_TITLE, USERNAME, FEED1, FEED2,
|
||||
setup_adapter,
|
||||
setup_feed,
|
||||
setup_channel,
|
||||
}
|
||||
};
|
||||
use reqwest::Url;
|
||||
|
||||
async fn setup_adapter() -> Adapter {
|
||||
AdapterBuilder::new()
|
||||
.database_url("sqlite::memory:")
|
||||
.create().await.unwrap()
|
||||
#[test]
|
||||
fn parse() {
|
||||
const FID: i64 = 1;
|
||||
let uf = UnparsedFeed {
|
||||
id: FID,
|
||||
title: FEED_TITLE.to_string(),
|
||||
};
|
||||
|
||||
let f = uf.parse().unwrap();
|
||||
|
||||
assert_eq!(f.id.0, FID);
|
||||
assert_eq!(f.title, FEED_TITLE);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn get() {
|
||||
let adapter = setup_adapter().await;
|
||||
let pool = adapter.get_pool();
|
||||
let feed = setup_feed(pool).await;
|
||||
|
||||
let gotten_feed = Feed::get(pool, feed.id).await.unwrap();
|
||||
|
||||
assert_eq!(feed.id, gotten_feed.id);
|
||||
assert_eq!(feed.title, gotten_feed.title);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn create_feed() {
|
||||
async fn create() {
|
||||
let adapter = setup_adapter().await;
|
||||
let pool = adapter.get_pool();
|
||||
let user = User::create(pool, "Alice").await.unwrap();
|
||||
let user = User::create(pool, USERNAME).await.unwrap();
|
||||
let feed = Feed::create(pool, user.id(), FEED_TITLE).await.unwrap();
|
||||
|
||||
let feed = Feed::create(pool, user.id(), "Tech News").await.unwrap();
|
||||
|
||||
assert_eq!(feed.title(), "Tech News");
|
||||
assert!(feed.id().0 > 0);
|
||||
assert_eq!(feed.title(), FEED_TITLE);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_update_title() {
|
||||
async fn update_title() {
|
||||
const NEW_FEED_TITLE: &str = "My NEW feed!";
|
||||
let adapter = setup_adapter().await;
|
||||
let pool = adapter.get_pool();
|
||||
let user = User::create(pool, "Alice").await.unwrap();
|
||||
let feed = Feed::create(pool, user.id(), "Tech News").await.unwrap();
|
||||
let feed = setup_feed(pool).await;
|
||||
|
||||
Feed::update_title(pool, feed.id(), "Technology").await.unwrap();
|
||||
Feed::update_title(pool, feed.id(), NEW_FEED_TITLE).await.unwrap();
|
||||
|
||||
let updated = Feed::get(pool, feed.id()).await.unwrap();
|
||||
assert_eq!(updated.title(), "Technology");
|
||||
assert_eq!(updated.title(), NEW_FEED_TITLE);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn add_channel() {
|
||||
let adapter = setup_adapter().await;
|
||||
let pool = adapter.get_pool();
|
||||
let feed = setup_feed(pool).await;
|
||||
let channel = setup_channel(pool).await;
|
||||
|
||||
feed.add_channel(pool, channel.id()).await.unwrap();
|
||||
|
||||
let channels = feed.get_channels(pool).await.unwrap();
|
||||
let gotten_channel = &channels[0];
|
||||
|
||||
assert_eq!(gotten_channel.id().0, channel.id().0);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn get_channels() {
|
||||
let adapter = setup_adapter().await;
|
||||
let pool = adapter.get_pool();
|
||||
let feed = setup_feed(pool).await;
|
||||
let url1 = Url::parse(FEED1).unwrap();
|
||||
let channel1 = Channel::get_or_create(pool, url1).await.unwrap();
|
||||
let url2 = Url::parse(FEED2).unwrap();
|
||||
let channel2 = Channel::get_or_create(pool, url2).await.unwrap();
|
||||
|
||||
feed.add_channel(pool, channel1.id()).await.unwrap();
|
||||
feed.add_channel(pool, channel2.id()).await.unwrap();
|
||||
|
||||
let channels = feed.get_channels(pool).await.unwrap();
|
||||
|
||||
assert_eq!(channels.len(), 2);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue