use serde::{Deserialize, Serialize};
use serde_repr::{Deserialize_repr, Serialize_repr};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum TaobaoSignUrlType {
Official = 0,
Official1 = 1,
Official2 = 2,
WithParse = 3,
WithSimpleDetail = 4,
WithFullDetail = 5,
}
impl Default for TaobaoSignUrlType {
fn default() -> Self {
TaobaoSignUrlType::Official
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum TaobaoPlatformType {
#[serde(rename = "1")]
Taobao,
#[serde(rename = "2")]
Tmall,
#[serde(rename = "3")]
TmallSupermarket,
}
impl Default for TaobaoPlatformType {
fn default() -> Self {
TaobaoPlatformType::Taobao
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum TaobaoShopType {
#[serde(rename = "0")]
Taobao,
#[serde(rename = "1")]
Tmall,
}
impl Default for TaobaoShopType {
fn default() -> Self {
TaobaoShopType::Taobao
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum TaobaoOrderQueryType {
CreateTime = 1,
SettleTime = 2,
PayTime = 3,
}
impl Default for TaobaoOrderQueryType {
fn default() -> Self {
TaobaoOrderQueryType::CreateTime
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(i8)]
pub enum TaobaoOrderStatus {
All = -1,
Paid = 3,
Received = 12,
Settled = 14,
Invalid = 13,
}
impl Default for TaobaoOrderStatus {
fn default() -> Self {
TaobaoOrderStatus::All
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_taobao_sign_url_type_serialize() {
let value = TaobaoSignUrlType::WithFullDetail;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "5");
}
#[test]
fn test_taobao_sign_url_type_deserialize() {
let value: TaobaoSignUrlType = serde_json::from_str("3").unwrap();
assert_eq!(value, TaobaoSignUrlType::WithParse);
}
#[test]
fn test_taobao_platform_type_serialize() {
let value = TaobaoPlatformType::Tmall;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "\"2\"");
}
#[test]
fn test_taobao_shop_type_serialize() {
let value = TaobaoShopType::Tmall;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "\"1\"");
}
#[test]
fn test_taobao_order_query_type_serialize() {
let value = TaobaoOrderQueryType::SettleTime;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "2");
}
#[test]
fn test_taobao_order_status_serialize() {
let value = TaobaoOrderStatus::Settled;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "14");
}
}