Add category to badges

This commit is contained in:
Ehren Kret 2021-09-15 17:34:16 -05:00
parent ce3835e176
commit 08c6a8c2e5
6 changed files with 34 additions and 13 deletions

View File

@ -263,3 +263,4 @@ badges:
badges:
- id: TEST
imageUrl: https://example.com/test-badge
category: other

View File

@ -90,11 +90,15 @@ public class ConfiguredProfileBadgeConverter implements ProfileBadgeConverter {
.filter(accountBadge -> accountBadge.isVisible()
&& now.isBefore(accountBadge.getExpiration())
&& knownBadges.containsKey(accountBadge.getId()))
.map(accountBadge -> new Badge(
accountBadge.getId(),
knownBadges.get(accountBadge.getId()).getImageUrl(),
resourceBundle.getString(accountBadge.getId() + "_name"),
resourceBundle.getString(accountBadge.getId() + "_description")))
.map(accountBadge -> {
BadgeConfiguration configuration = knownBadges.get(accountBadge.getId());
return new Badge(
accountBadge.getId(),
configuration.getCategory(),
configuration.getImageUrl(),
resourceBundle.getString(accountBadge.getId() + "_name"),
resourceBundle.getString(accountBadge.getId() + "_description"));
})
.collect(Collectors.toList());
}
}

View File

@ -16,13 +16,16 @@ import javax.validation.constraints.NotNull;
public class BadgeConfiguration {
private final String id;
private final URL imageUrl;
private final String category;
@JsonCreator
public BadgeConfiguration(
@JsonProperty("id") final String id,
@JsonProperty("imageUrl") @JsonDeserialize(converter = URLDeserializationConverter.class) final URL imageUrl) {
@JsonProperty("imageUrl") @JsonDeserialize(converter = URLDeserializationConverter.class) final URL imageUrl,
@JsonProperty("category") final String category) {
this.id = id;
this.imageUrl = imageUrl;
this.category = category;
}
@NotEmpty
@ -35,4 +38,9 @@ public class BadgeConfiguration {
public URL getImageUrl() {
return imageUrl;
}
@NotEmpty
public String getCategory() {
return category;
}
}

View File

@ -12,6 +12,7 @@ import java.util.Objects;
public class Badge {
private final String id;
private final String category;
private final URL imageUrl;
private final String name;
private final String description;
@ -19,10 +20,12 @@ public class Badge {
@JsonCreator
public Badge(
@JsonProperty("id") final String id,
@JsonProperty("category") final String category,
@JsonProperty("imageUrl") final URL imageUrl,
@JsonProperty("name") final String name,
@JsonProperty("description") final String description) {
this.id = id;
this.category = category;
this.imageUrl = imageUrl;
this.name = name;
this.description = description;
@ -32,6 +35,10 @@ public class Badge {
return id;
}
public String getCategory() {
return category;
}
public URL getImageUrl() {
return imageUrl;
}
@ -53,13 +60,14 @@ public class Badge {
return false;
}
Badge badge = (Badge) o;
return Objects.equals(id, badge.id) && Objects.equals(imageUrl,
badge.imageUrl) && Objects.equals(name, badge.name) && Objects.equals(
description, badge.description);
return Objects.equals(id, badge.id) && Objects.equals(category,
badge.category) && Objects.equals(imageUrl, badge.imageUrl)
&& Objects.equals(name, badge.name) && Objects.equals(description,
badge.description);
}
@Override
public int hashCode() {
return Objects.hash(id, imageUrl, name, description);
return Objects.hash(id, category, imageUrl, name, description);
}
}

View File

@ -72,7 +72,7 @@ public class ConfiguredProfileBadgeConverterTest {
}
private static BadgeConfiguration newBadge(int i) {
return new BadgeConfiguration(idFor(i), imageUrlFor(i));
return new BadgeConfiguration(idFor(i), imageUrlFor(i), "other");
}
private BadgesConfiguration createBadges(int count) {
@ -140,7 +140,7 @@ public class ConfiguredProfileBadgeConverterTest {
arguments(idFor(0), expired, false, null),
arguments(idFor(0), notExpired, false, null),
arguments(idFor(0), expired, true, null),
arguments(idFor(0), notExpired, true, new Badge(idFor(0), imageUrlFor(0), nameFor(0), desriptionFor(0))),
arguments(idFor(0), notExpired, true, new Badge(idFor(0), "other", imageUrlFor(0), nameFor(0), desriptionFor(0))),
arguments(idFor(1), expired, false, null),
arguments(idFor(1), notExpired, false, null),
arguments(idFor(1), expired, true, null),

View File

@ -104,7 +104,7 @@ class ProfileControllerTest {
(acceptableLanguages, accountBadges) -> {
try {
return List.of(
new Badge("TEST1", new URL("https://example.com/badge/1"), "Test Badge", "This badge is in unit tests.")
new Badge("TEST1", "other", new URL("https://example.com/badge/1"), "Test Badge", "This badge is in unit tests.")
);
} catch (MalformedURLException e) {
throw new AssertionError(e);