assertj / assertj/assertj-generator
Feature: Create "unwrapped" overload for `hasX` if X is a value type
- Langage dominant
- Java
- Étoiles
- 72
- Forks
- 47
- Merge moyen
- 1 j 16 h
- PR mergées (30 j)
- 2
Description
This is potentially a little vague in its broadness, but here goes.
Say we have a value class like e.g.
```java
@Value
class AccountNumber {
String rawValue;
}
```
If another class (for which we generate assertions) has a property of this type, we can assert:
```java
assertThat(someObject).hasAccountNumber(new AccountNumber("abc"))
```
Nicer would be:
```java
assertThat(someObject).hasAccountNumber("abc")
```
The generator could look for constructors, static `_.of` methods, and other popular patterns. It's not clear to me if there should be a limit on the length of the parameter list. Anyway, the desired implementation seems straight-forward:
```java
public S hasAccountNumber(String accountNumberRawValue) {
return hasAccountNumber(new AccountNumber(fooRawValue));
}
```
As an alternative, there could be an annotation like e.g.
```java
@AssertionAlias
static Foo of(String rawValue) { ... }
```
On a property `Foo bar`, this would cause additional generation of something like
```java
public S hasBar(String fooRawValue) {
return hasBar(Foo.of(fooRawValue));
}
```
PS: This is probably easily done for specific use cases in any given project using templates, but I don't see documentation for a way to inject custom templates when using the generator through the Maven plugin.
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Aucun fichier source ni test n’est indiqué. Commencez par le chemin du plugin Maven du générateur et le mécanisme existant de personnalisation des templates mentionné dans l’issue, puis examinez comment les méthodes hasX générées sont définies. Avant l’implémentation, mettez-vous d’accord sur les modèles de construction de types valeur pris en charge, les limites de paramètres et la question de savoir si les alias basés sur des annotations sont dans le périmètre ; le travail est considéré comme terminé lorsque le comportement choisi est spécifié et couvert par des tests de la sortie générée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java
- Domaine
- tooling
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100