Skip to main content

api_bones_test/builders/
etag.rs

1use api_bones::etag::ETag;
2use chrono::{DateTime, Utc};
3
4/// Convenience constructors for fake [`ETag`] values.
5///
6/// # Quick start
7///
8/// ```rust
9/// use chrono::Utc;
10/// use api_bones_test::builders::FakeETag;
11///
12/// let tag = FakeETag::for_updated_at(Utc::now());
13/// assert!(!tag.weak);
14///
15/// let weak = FakeETag::weak("abc");
16/// assert!(weak.weak);
17/// ```
18pub struct FakeETag;
19
20impl FakeETag {
21    /// Build a strong `ETag` whose value is the RFC 3339 timestamp string.
22    #[must_use]
23    pub fn for_updated_at(dt: DateTime<Utc>) -> ETag {
24        ETag::strong(dt.to_rfc3339())
25    }
26
27    /// Build a weak `ETag` with the given opaque value.
28    #[must_use]
29    pub fn weak(value: impl Into<String>) -> ETag {
30        ETag::weak(value)
31    }
32}