assertj / assertj/assertj-generator

Feature: Create "unwrapped" overload for `hasX` if X is a value type

Ouverte
#159 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.