Skip to content

Commit 0915d9c

Browse files
committed
nostr/nips: add test for Profile Badges Event
1 parent 6b3ae77 commit 0915d9c

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

crates/nostr/src/nips/nip58.rs

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,4 +402,66 @@ mod tests {
402402
assert_eq!(badge_award.kind, Kind::BadgeAward);
403403
assert_eq!(badge_award.tags, example_event.tags);
404404
}
405+
406+
#[test]
407+
fn test_profile_badges() {
408+
let keys = Keys::generate();
409+
let pub_key = keys.public_key();
410+
411+
let relay_url = UncheckedUrl::from_str("wss://relay").unwrap();
412+
413+
let awarded_pub_keys = vec![
414+
Tag::PubKey(pub_key.clone(), Some(relay_url.clone())),
415+
Tag::PubKey(pub_key.clone(), Some(relay_url.clone())),
416+
];
417+
let bravery_badge_event = get_badge_with_id_only("bravery".to_owned(), &keys).0;
418+
let bravery_badge_award =
419+
BadgeAward::new(&bravery_badge_event, awarded_pub_keys.clone(), &keys)
420+
.unwrap()
421+
.0;
422+
423+
let honor_badge_event = get_badge_with_id_only("honor".to_owned(), &keys).0;
424+
let honor_badge_award = BadgeAward::new(&honor_badge_event, awarded_pub_keys, &keys)
425+
.unwrap()
426+
.0;
427+
let badge_definitions = vec![bravery_badge_event, honor_badge_event];
428+
429+
let badge_awards = vec![bravery_badge_award.clone(), honor_badge_award.clone()];
430+
431+
let (bravery_badge_award_event_id, honor_badge_award_event_id) =
432+
(bravery_badge_award.id, honor_badge_award.id);
433+
let example_event_json = format!(
434+
r#"{{
435+
"content":"",
436+
"id": "378f145897eea948952674269945e88612420db35791784abf0616b4fed56ef7",
437+
"kind": 30008,
438+
"pubkey": "{}",
439+
"sig":"fd0954de564cae9923c2d8ee9ab2bf35bc19757f8e328a978958a2fcc950eaba0754148a203adec29b7b64080d0cf5a32bebedd768ea6eb421a6b751bb4584a8",
440+
"created_at":1671739153,
441+
"tags":[
442+
["d", "profile_badges"],
443+
["a", "30009:{}:bravery"],
444+
["e", "{}", "wss://relay"],
445+
["a", "30009:{}:honor"],
446+
["e", "{}", "wss://relay"]]
447+
}}"#,
448+
pub_key.to_string(),
449+
pub_key.to_string(),
450+
bravery_badge_award_event_id.to_string(),
451+
pub_key.to_string(),
452+
honor_badge_award_event_id.to_string(),
453+
);
454+
let example_event: Event = serde_json::from_str(&example_event_json).unwrap();
455+
456+
assert_eq!(badge_awards.len(), 2);
457+
assert_eq!(badge_definitions.len(), 2);
458+
459+
let profile_badges =
460+
ProfileBadgesEvent::new(badge_definitions, badge_awards, &pub_key, &keys)
461+
.unwrap()
462+
.0;
463+
464+
assert_eq!(profile_badges.kind, Kind::ProfileBadges);
465+
assert_eq!(profile_badges.tags, example_event.tags);
466+
}
405467
}

0 commit comments

Comments
 (0)