Skip to content

Commit

Permalink
Add basic tests for archiving comments
Browse files Browse the repository at this point in the history
  • Loading branch information
uklotzde committed Mar 8, 2019
1 parent 0297dfc commit bd19de7
Showing 1 changed file with 120 additions and 0 deletions.
120 changes: 120 additions & 0 deletions src/infrastructure/flows/archive_comments.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,123 @@ pub fn archive_comments(connections: &sqlite::Connections, ids: &[&str]) -> Resu
}
})?)
}

#[cfg(test)]
mod tests {
use super::super::tests::prelude::*;

fn archive_comments(fixture: &EnvFixture, ids: &[&str]) -> super::Result<()> {
super::archive_comments(
&fixture.db_connections,
ids,
)
}

#[test]
fn should_archive_multiple_comments_only_once() {
let fixture = EnvFixture::new();

let entry_ids = vec![
fixture.create_entry(0.into()),
fixture.create_entry(1.into()),
];
let rating_comment_ids = vec![
fixture.create_rating(new_entry_rating(
0,
&entry_ids[0],
RatingContext::Diversity,
RatingValue::new(-1),
)),
fixture.create_rating(new_entry_rating(
1,
&entry_ids[0],
RatingContext::Fairness,
RatingValue::new(0),
)),
fixture.create_rating(new_entry_rating(
2,
&entry_ids[1],
RatingContext::Transparency,
RatingValue::new(1),
)),
fixture.create_rating(new_entry_rating(
3,
&entry_ids[1],
RatingContext::Renewable,
RatingValue::new(2),
)),
];

assert!(fixture.entry_exists(&entry_ids[0]));
assert!(fixture.entry_exists(&entry_ids[1]));
assert!(fixture.rating_exists(&rating_comment_ids[0].0));
assert!(fixture.rating_exists(&rating_comment_ids[1].0));
assert!(fixture.rating_exists(&rating_comment_ids[2].0));
assert!(fixture.rating_exists(&rating_comment_ids[3].0));

assert!(fixture.comment_exists(&rating_comment_ids[0].1));
assert!(fixture.comment_exists(&rating_comment_ids[1].1));
assert!(fixture.comment_exists(&rating_comment_ids[2].1));
assert!(fixture.comment_exists(&rating_comment_ids[3].1));

// Archive comments 1 and 2
assert!(archive_comments(
&fixture,
&vec![&*rating_comment_ids[1].1, &*rating_comment_ids[2].1]
)
.is_ok());

// Entries and ratings still exist
assert!(fixture.entry_exists(&entry_ids[0]));
assert!(fixture.entry_exists(&entry_ids[1]));
assert!(fixture.rating_exists(&rating_comment_ids[0].0));
assert!(fixture.rating_exists(&rating_comment_ids[1].0));
assert!(fixture.rating_exists(&rating_comment_ids[2].0));
assert!(fixture.rating_exists(&rating_comment_ids[3].0));

// Comments 1 and 2 disappeared
assert!(fixture.comment_exists(&rating_comment_ids[0].1));
assert!(!fixture.comment_exists(&rating_comment_ids[1].1));
assert!(!fixture.comment_exists(&rating_comment_ids[2].1));
assert!(fixture.comment_exists(&rating_comment_ids[3].1));

// Try to archive comments 0 and 1 (already archived)
assert_not_found(archive_comments(
&fixture,
&vec![&*rating_comment_ids[0].1, &*rating_comment_ids[1].1],
));

// No changes due to rollback
assert!(fixture.entry_exists(&entry_ids[0]));
assert!(fixture.entry_exists(&entry_ids[1]));
assert!(fixture.rating_exists(&rating_comment_ids[0].0));
assert!(fixture.rating_exists(&rating_comment_ids[1].0));
assert!(fixture.rating_exists(&rating_comment_ids[2].0));
assert!(fixture.rating_exists(&rating_comment_ids[3].0));
assert!(fixture.comment_exists(&rating_comment_ids[0].1));
assert!(!fixture.comment_exists(&rating_comment_ids[1].1));
assert!(!fixture.comment_exists(&rating_comment_ids[2].1));
assert!(fixture.comment_exists(&rating_comment_ids[3].1));

// Archive remaining comments
assert!(archive_comments(
&fixture,
&vec![&*rating_comment_ids[0].1, &*rating_comment_ids[3].1]
)
.is_ok());

// Entries and ratings still exist
assert!(fixture.entry_exists(&entry_ids[0]));
assert!(fixture.entry_exists(&entry_ids[1]));
assert!(fixture.rating_exists(&rating_comment_ids[0].0));
assert!(fixture.rating_exists(&rating_comment_ids[1].0));
assert!(fixture.rating_exists(&rating_comment_ids[2].0));
assert!(fixture.rating_exists(&rating_comment_ids[3].0));

// All comments disappeared
assert!(!fixture.comment_exists(&rating_comment_ids[0].1));
assert!(!fixture.comment_exists(&rating_comment_ids[1].1));
assert!(!fixture.comment_exists(&rating_comment_ids[2].1));
assert!(!fixture.comment_exists(&rating_comment_ids[3].1));
}
}

0 comments on commit bd19de7

Please sign in to comment.