etcd-txn-parser 0.2.0

An etcd transaction parser
Documentation
use etcd_txn_parser::compare::{Compare, ModRevision, OpType};
use etcd_txn_parser::operation::{Operation, PutData};
use etcd_txn_parser::{parse, TxnData};

#[test]
fn test_transaction() {
    let transaction = include_bytes!("fixtures/simple.txt");
    let result = parse(transaction).expect("Failed to parse");
    assert_eq!(
        result,
        TxnData {
            compares: vec![Compare::ModRevision(ModRevision {
                key: b"key1",
                value: 0,
                op: OpType::GreaterThan
            })],
            success: vec![Operation::Put(PutData {
                key: b"key1",
                value: b"overwrote-key1"
            })],
            failure: vec![
                Operation::Put(PutData {
                    key: b"key1",
                    value: b"created-key1"
                }),
                Operation::Put(PutData {
                    key: b"key2",
                    value: b"some extra key"
                })
            ]
        }
    )
}

#[test]
fn test_transaction_no_compare() {
    let transaction = include_bytes!("fixtures/no_compare.txt");
    let result = parse(transaction).expect("Failed to parse");
    assert_eq!(
        result,
        TxnData {
            compares: vec![],
            success: vec![Operation::Put(PutData {
                key: b"key1",
                value: b"overwrote-key1"
            })],
            failure: vec![
                Operation::Put(PutData {
                    key: b"key1",
                    value: b"created-key1"
                }),
                Operation::Put(PutData {
                    key: b"key2",
                    value: b"some extra key"
                })
            ]
        }
    )
}

#[test]
fn test_transaction_no_success() {
    let transaction = include_bytes!("fixtures/no_success.txt");
    let result = parse(transaction).expect("Failed to parse");
    assert_eq!(
        result,
        TxnData {
            compares: vec![Compare::ModRevision(ModRevision {
                key: b"key1",
                value: 0,
                op: OpType::GreaterThan
            })],
            success: vec![],
            failure: vec![
                Operation::Put(PutData {
                    key: b"key1",
                    value: b"created-key1"
                }),
                Operation::Put(PutData {
                    key: b"key2",
                    value: b"some extra key"
                })
            ]
        }
    )
}

#[test]
fn test_transaction_no_failure() {
    let transaction = include_bytes!("fixtures/no_failure.txt");
    let result = parse(transaction).expect("Failed to parse");
    assert_eq!(
        result,
        TxnData {
            compares: vec![Compare::ModRevision(ModRevision {
                key: b"key1",
                value: 0,
                op: OpType::GreaterThan
            })],
            success: vec![Operation::Put(PutData {
                key: b"key1",
                value: b"overwrote-key1"
            })],
            failure: vec![]
        }
    )
}