Rev 959 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.test.composants.votes;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVotePresenteur;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.services.rest.VoteProtocoleService;
import com.google.gwt.user.client.ui.HasWidgets;
public class MoyenneVotePresenteurTest {
MoyenneVotePresenteur mvp;
HasWidgets container;
List<Protocole> tousLesProtocoles = new ArrayList<Protocole>();
MoyenneVotePresenteur.Vue vue;
Image imageCourante;
@Before
public void setUp() {
CacheClient.getInstance().getUtilisateur().setId(0+"");
Protocole protocol1 = new Protocole();
protocol1.setNom("esthétique");
protocol1.setId(0);
Protocole protocol2 = new Protocole();
protocol2.setNom("capitalisation de scan de feuilles");
protocol2.setId(1);
tousLesProtocoles.add(protocol1);
tousLesProtocoles.add(protocol2);
imageCourante = new Image();
Protocole protocole = tousLesProtocoles.get(0);
vue = Mockito.mock(MoyenneVotePresenteur.Vue.class,Mockito.RETURNS_DEEP_STUBS);
VoteProtocoleService voteProtocoleService=Mockito.mock(VoteProtocoleService.class);
mvp = new MoyenneVotePresenteur(imageCourante, protocole, vue, voteProtocoleService);
container = Mockito.mock(HasWidgets.class, Mockito.RETURNS_DEEP_STUBS);
mvp.go(container);
}
@Test
public void testerVoteMemeUtilisateur() {
// Un même utilisateur vote deux fois sur la même image, même protocole, en faisant des votes différents
assertEquals(1, imageCourante.getListeVotesProtocoles().size());
mvp.setValeurVoteUtilisateur(3);
mvp.enregistrerVote();
// la valeur du vote change mais le nombre de vote ne change pas, son vote est remplacé
mvp.setValeurVoteUtilisateur(1);
mvp.enregistrerVote();
assertEquals(1, imageCourante.getVotesProtocoles(0).size());
assertEquals(1, mvp.getValeurVoteTotal());
}
@Test
public void testerTroisVotesUtilisateursDifferents() {
// Trois utilisateur différents votent pour la même image et le même protocole
CacheClient.getInstance().getUtilisateur().setId(0+"");
assertEquals(1, imageCourante.getListeVotesProtocoles().size());
mvp.setValeurVoteUtilisateur(3);
mvp.enregistrerVote();
CacheClient.getInstance().getUtilisateur().setId(1+"");
mvp.setValeurVoteUtilisateur(1);
mvp.enregistrerVote();
assertEquals(2, imageCourante.getVotesProtocoles(0).size());
assertEquals(2, mvp.getValeurVoteTotal());
CacheClient.getInstance().getUtilisateur().setId(2+"");
mvp.setValeurVoteUtilisateur(5);
mvp.enregistrerVote();
assertEquals(3, imageCourante.getVotesProtocoles(0).size());
assertEquals(3, mvp.getValeurVoteTotal());
// Le premier utilisateur change d'avis et modifie son vote
CacheClient.getInstance().getUtilisateur().setId(0+"");
assertEquals(1, imageCourante.getListeVotesProtocoles().size());
mvp.setValeurVoteUtilisateur(5);
mvp.enregistrerVote();
// La moyenne des vote change mais le nombre de vote ne doit pas changer
assertEquals(3, imageCourante.getVotesProtocoles(0).size());
assertEquals(4, mvp.getValeurVoteTotal());
}
@Test
public void testerDeuxVotesMemeUtilisateursProtocolesDifferents() {
// Trois utilisateur différents votent pour la même image et le même protocole
CacheClient.getInstance().getUtilisateur().setId(0+"");
assertEquals(1, imageCourante.getListeVotesProtocoles().size());
mvp.setValeurVoteUtilisateur(3);
mvp.enregistrerVote();
}
}