added docs and tests

This commit is contained in:
P0lunin 2019-09-15 22:18:24 +03:00
parent d380f2696f
commit 0913857787
3 changed files with 51 additions and 4 deletions

View file

@ -1,5 +1,29 @@
#[derive(Debug, Deserialize, Hash, PartialEq, Eq, Clone)]
#[derive(Debug, Hash, PartialEq, Eq, Clone, Serialize)]
/// This object represents a portion of the price for goods or services.
pub struct LabeledPrice {
/// Portion label
pub label: String,
/// Price of the product in the smallest units of the
/// [currency](https://core.telegram.org/bots/payments#supported-currencies)
/// (integer, not float/double). For example, for a price of US$ 1.45 pass
/// amount = 145. See the exp parameter in [`currencies.json`](https://core.telegram.org/bots/payments/currencies.json),
/// it shows the number of digits past the decimal point for each currency
/// (2 for the majority of currencies).
pub amount: i64,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn serialize() {
let labeled_price = LabeledPrice {
label: "Label".to_string(),
amount: 60
};
let expected = r#"{"label":"Label","amount":60}"#;
let actual = serde_json::to_string(&labeled_price).unwrap();
assert_eq!(actual, expected);
}
}

View file

@ -1,6 +1,6 @@
use crate::core::types::{InlineKeyboardMarkup, LabeledPrice};
#[derive(Debug, Deserialize, Hash, PartialEq, Eq, Clone)]
#[derive(Debug, Hash, PartialEq, Eq, Clone)]
pub struct SendInvoice {
pub chat_id: i64,
pub title: String,

View file

@ -1,8 +1,31 @@
use crate::core::types::LabeledPrice;
#[derive(Debug, Deserialize, Hash, PartialEq, Eq, Clone)]
#[derive(Debug, Hash, PartialEq, Eq, Clone, Serialize)]
/// This object represents one shipping option.
pub struct ShippingOption {
pub id: i64,
/// Shipping option identifier
pub id: String,
/// Option title
pub title: String,
/// List of price portions
pub prices: Vec<LabeledPrice>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn serialize() {
let shipping_option = ShippingOption {
id: "0".to_string(),
title: "Option".to_string(),
prices: vec![
LabeledPrice { label: "Label".to_string(), amount: 60 }
]
};
let expected = r#"{"id":"0","title":"Option","prices":[{"label":"Label","amount":60}]}"#;
let actual = serde_json::to_string(&shipping_option).unwrap();
assert_eq!(actual, expected);
}
}