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}