TP08 : class CreditCardServiceImpl
Modérateurs : graffiop, jmdouin, agoncal, mlebihan
Re: TP08 : class CreditCardServiceImpl
J'ai réussi à reproduire ce bug en passant null à HTTPSender.send
donc le problème est peut être du à : que dans ta méthode verifyCreditCard ...
Tu passe un json creditCardJSON qui est null comme paramètre à ta méthode HTTPSender.send
il faut convertir ton objet java creditCard comme ça :
public void verifyCreditCard(CreditCard creditCard) throws CheckException {
ObjectMapper mapper = new ObjectMapper();
try {
String creditCardJSON = mapper.writeValueAsString(creditCard);
String status = HTTPSender.send(creditCardJSON);
if(!CreditCardStatus.VALID_CREDIT_CARD.equals(status)) {
throw new CheckException(status);
}
.
donc le problème est peut être du à : que dans ta méthode verifyCreditCard ...
Tu passe un json creditCardJSON qui est null comme paramètre à ta méthode HTTPSender.send
il faut convertir ton objet java creditCard comme ça :
public void verifyCreditCard(CreditCard creditCard) throws CheckException {
ObjectMapper mapper = new ObjectMapper();
try {
String creditCardJSON = mapper.writeValueAsString(creditCard);
String status = HTTPSender.send(creditCardJSON);
if(!CreditCardStatus.VALID_CREDIT_CARD.equals(status)) {
throw new CheckException(status);
}
.
Dernière édition par harrak_z le 19 déc. 2019 0:30, édité 1 fois.
Re: TP08 : class CreditCardServiceImpl
Si c'est aucun donc c'est rassurant ... ton json creditCardJSON que tu passe est null ..
Re: TP08 : class CreditCardServiceImpl
Je faisais :
J'ai remplacé par ton code pour voir, ça ne change rien.
Par contre du coup, une question me vient : J'ai ajouté l'attribut status à la classe CreditCard, ainsi que le setter et le getter et donc la méthode toJsonString(). C'était peut-être pas la bonne manière ?
Code : Tout sélectionner
String creditCardJSON = creditCard.toJsonString();
Par contre du coup, une question me vient : J'ai ajouté l'attribut status à la classe CreditCard, ainsi que le setter et le getter et donc la méthode toJsonString(). C'était peut-être pas la bonne manière ?
Re: TP08 : class CreditCardServiceImpl
pourquoi t'as rajouté statut dans CreditCard ?
Re: TP08 : class CreditCardServiceImpl
J'ai vérifié l'attribut creditCardJSON produit avec et malheureusement, il n'est pas null, c'est bien le JSON de la CreditCard. D'où ma panne sèche là...
Code : Tout sélectionner
String creditCardJSON = creditCard.toJsonString();
Re: TP08 : class CreditCardServiceImpl
est ce que juste tu peux poster l'implemntation de la méthode toJsonString qui dans ton objetc CreditCard ?
Re: TP08 : class CreditCardServiceImpl
Est ce que tu peux afficher la valeur de creditCardJSON .. System.out.println(creditCardJSON)
Re: TP08 : class CreditCardServiceImpl
Pour accéder au statut parce que je ne capte pas comment on y accède sinon vu que la méthode public void verifyCreditCard(CreditCard creditCard) throws CheckException {} ne retourne pas de résultat ?
Il y a un peu de fatigue, c'est peut-être ça le soucis de mon code ?
Il y a un peu de fatigue, c'est peut-être ça le soucis de mon code ?
Re: TP08 : class CreditCardServiceImpl
T'en a pas besoin ;
"statut" c'est une réponse du web service Bank TBB que tu invoque dans ce service ... et dans tous les cas si tu as besoin de status d'une carte bancaire tu dois appeler le web service ... c'est comme quand tu insere ta carte dans un distributeur le systeme informatique va appelé un web service qui va vérifier le statut de ta carte et va te dire si c'est ok ou non ok ... et terminé ... et si tu refais l'opération le systeme va faire appel de nouveau à ce web service ... et te donner la réponse ...
Sinnon pour un objet que tu vas le convertir en json tu ne peux pas ajouter un champ ou meme une méthode sans ajouter l'annotaton @JsonIgnore sinon le json va la prendre en compte donc ça va pas fonctionner
"statut" c'est une réponse du web service Bank TBB que tu invoque dans ce service ... et dans tous les cas si tu as besoin de status d'une carte bancaire tu dois appeler le web service ... c'est comme quand tu insere ta carte dans un distributeur le systeme informatique va appelé un web service qui va vérifier le statut de ta carte et va te dire si c'est ok ou non ok ... et terminé ... et si tu refais l'opération le systeme va faire appel de nouveau à ce web service ... et te donner la réponse ...
Sinnon pour un objet que tu vas le convertir en json tu ne peux pas ajouter un champ ou meme une méthode sans ajouter l'annotaton @JsonIgnore sinon le json va la prendre en compte donc ça va pas fonctionner
Re: TP08 : class CreditCardServiceImpl
Je pense qu'on tiens l'erreur, j'avais ni vu ni pensé que l'attribut status allait être dans le JSON...
{"creditCardNumber":"4564 1231 4564 2222","creditCardType":"Visa","creditCardExpiryDate":"01/deux mille trente","status":null}
Je viens aussi de capter au passage comment le retour se fait. On progresse ! :) Merci !
Alors, le verdict, il ne reste que 5 tests qui ne passent pas sur 9, les 4 tests de CreditCardServiceTest passent.
Ceux qui restent à valider : testServiceCreateCustomerWithInvalidCreditCard(), testServiceCreateCustomerWithInvalidValues(), testServiceUpdateCustomerWithInvalidCreditCard(), testServiceCreateOrder() et testServiceCreateOrderWithInvalidValues()
Au niveau de la classe UserServiceImpl, je teste les attributs ainsi :
{"creditCardNumber":"4564 1231 4564 2222","creditCardType":"Visa","creditCardExpiryDate":"01/deux mille trente","status":null}
Je viens aussi de capter au passage comment le retour se fait. On progresse ! :) Merci !
Alors, le verdict, il ne reste que 5 tests qui ne passent pas sur 9, les 4 tests de CreditCardServiceTest passent.
Ceux qui restent à valider : testServiceCreateCustomerWithInvalidCreditCard(), testServiceCreateCustomerWithInvalidValues(), testServiceUpdateCustomerWithInvalidCreditCard(), testServiceCreateOrder() et testServiceCreateOrderWithInvalidValues()
Au niveau de la classe UserServiceImpl, je teste les attributs ainsi :
Code : Tout sélectionner
if((ccType != null || !"".equals(ccType)) && (ccNumber != null || !"".equals(ccNumber)) && (ccExpiryDate != null || !"".equals(ccExpiryDate))){
creditCardService.verifyCreditCard(creditCard);
}
Re: TP08 : class CreditCardServiceImpl
plutôt :
if((ccType != null &&"".equals(ccType)) && (ccNumber != null && !"".equals(ccNumber)) && (ccExpiryDate != null && !"".equals(ccExpiryDate))){
creditCardService.verifyCreditCard(creditCard);
}
if((ccType != null &&"".equals(ccType)) && (ccNumber != null && !"".equals(ccNumber)) && (ccExpiryDate != null && !"".equals(ccExpiryDate))){
creditCardService.verifyCreditCard(creditCard);
}
Re: TP08 : class CreditCardServiceImpl
Cette vérification dois aussi etre ajouté dans com.yaps.petstore.domain.service.OrderServiceImpl.createOrder(OrderDTO)
Re: TP08 : class CreditCardServiceImpl
Victoire !!! Junit et mark, tout passe, vraiment un grand merci pour ton aide précieuse ! C'était franchement pas gagné avec une migraine carabinée...
(C'était ce que j'avais fait au début avant de remplacer par || comme dans checkData(), mais j'avais modifié pensant que ça venait de là...)
Je te souhaite une bonne fin de soirée et merci encore !
(C'était ce que j'avais fait au début avant de remplacer par || comme dans checkData(), mais j'avais modifié pensant que ça venait de là...)
Je te souhaite une bonne fin de soirée et merci encore !
Re: TP08 : class CreditCardServiceImpl
Super ... Bravo!
Bonne soiré
Bonne soiré