use crate::prelude::*;
#[derive(Clone, Debug, Serialize, PartialEq, Eq, Hash, Deserialize, Getters, Builder)]
pub struct InvoiceInfoFull {
#[getset(get = "pub")]
number: InvoiceNumber,
#[getset(get = "pub")]
invoice_date: Date,
#[getset(get = "pub")]
due_date: Date,
#[getset(get = "pub")]
purchase_order: Option<PurchaseOrder>,
#[getset(get = "pub")]
footer_text: Option<FooterText>,
#[builder(default)]
#[getset(get = "pub")]
emphasize_color_hex: HexColor,
}
impl HasSample for InvoiceInfoFull {
fn sample() -> Self {
Self::builder()
.number(InvoiceNumber::sample())
.invoice_date(Date::sample())
.due_date(Date::sample())
.purchase_order(PurchaseOrder::sample())
.footer_text(FooterText::sample())
.emphasize_color_hex(HexColor::sample())
.build()
}
fn sample_other() -> Self {
Self::builder()
.number(InvoiceNumber::sample_other())
.invoice_date(Date::sample_other())
.due_date(Date::sample_other())
.purchase_order(PurchaseOrder::sample_other())
.footer_text(FooterText::sample_other())
.emphasize_color_hex(HexColor::sample_other())
.build()
}
}
#[cfg(test)]
mod tests {
use super::*;
use test_log::test;
type Sut = InvoiceInfoFull;
#[test]
fn equality() {
assert_eq!(Sut::sample(), Sut::sample());
assert_eq!(Sut::sample_other(), Sut::sample_other());
}
#[test]
fn inequality() {
assert_ne!(Sut::sample(), Sut::sample_other());
}
#[test]
fn test_invoice_info_full_sample() {
let sample = Sut::sample();
assert!(sample.footer_text().is_some());
}
}