wikibase_rest_api 0.1.16

A Rust client for the Wikibase REST API.
Documentation
use crate::RevisionMatch;

#[derive(Debug, Clone, Default, PartialEq)]
pub struct EditMetadata {
    comment: Option<String>,
    bot: bool,
    minor: bool,
    tags: Vec<String>,
    revision_match: RevisionMatch,
}

impl EditMetadata {
    pub fn comment(&self) -> Option<String> {
        self.comment.to_owned()
    }

    pub const fn bot(&self) -> bool {
        self.bot
    }

    pub const fn minor(&self) -> bool {
        self.minor
    }

    pub fn tags(&self) -> &[String] {
        &self.tags
    }

    pub const fn revision_match(&self) -> &RevisionMatch {
        &self.revision_match
    }

    pub fn set_comment(&mut self, comment: Option<String>) {
        self.comment = comment;
    }

    pub const fn set_bot(&mut self, bot: bool) {
        self.bot = bot;
    }

    pub const fn set_minor(&mut self, minor: bool) {
        self.minor = minor;
    }

    pub fn set_tags(&mut self, tags: Vec<String>) {
        self.tags = tags;
    }

    pub fn set_revision_match(&mut self, revision_match: RevisionMatch) {
        self.revision_match = revision_match;
    }
}

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

    #[test]
    fn test_edit_metadata() {
        let mut edit_metadata = EditMetadata::default();
        assert_eq!(edit_metadata.comment(), None);
        assert!(!edit_metadata.bot());
        assert!(!edit_metadata.minor());
        assert!(edit_metadata.tags().is_empty());

        edit_metadata.set_comment(Some("Test".to_string()));
        assert_eq!(edit_metadata.comment(), Some("Test".to_string()));

        edit_metadata.set_bot(true);
        assert!(edit_metadata.bot());

        edit_metadata.set_minor(true);
        assert!(edit_metadata.minor());

        edit_metadata.set_tags(vec!["Test".to_string()]);
        assert_eq!(edit_metadata.tags(), &["Test".to_string()]);
    }

    #[test]
    fn test_set_revision_match() {
        let mut edit_metadata = EditMetadata::default();
        let mut revision_match = RevisionMatch::default();
        revision_match.set_modified_since_revisions(vec![1]);
        edit_metadata.set_revision_match(revision_match.clone());
        assert_eq!(edit_metadata.revision_match(), &revision_match);
    }
}