github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/server/inscriptions/controller_test.go (about)

     1  package inscriptions
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"net/url"
     7  	"testing"
     8  
     9  	"github.com/benoitkugler/goACVE/logs"
    10  	rd "github.com/benoitkugler/goACVE/server/core/rawdata"
    11  )
    12  
    13  var ct Controller
    14  
    15  func init() {
    16  	db, err := rd.ConnectDB(logs.DBDev)
    17  	if err != nil {
    18  		log.Fatal(err)
    19  	}
    20  	ct.DB = db
    21  	ct.Signing = logs.PASSPHRASE_DEV
    22  }
    23  
    24  func TestCamps(t *testing.T) {
    25  	data, err := ct.loadCamps()
    26  	if err != nil {
    27  		t.Fatal(err)
    28  	}
    29  	fmt.Println(data.camps.Ids())
    30  	fmt.Println(data.groupes.Ids())
    31  }
    32  
    33  func TestPreinscription(t *testing.T) {
    34  	mail := "x.ben.x@free.fr"
    35  	out, err := ct.chercheMail(mail)
    36  	if err != nil {
    37  		t.Fatal(err)
    38  	}
    39  	fmt.Println("responsables: ", len(out.responsables))
    40  	fmt.Println("participants :", len(out.idsParticipantPersonnes))
    41  
    42  	liens, err := ct.buildLiensPreinscription(out, "http://acve.fr/inscription")
    43  	if err != nil {
    44  		t.Fatal(err)
    45  	}
    46  	if len(liens) != len(out.responsables) {
    47  		fmt.Println(liens)
    48  		t.Error()
    49  	}
    50  	if len(liens) == 0 {
    51  		t.Fatal("pas de mail trouvés")
    52  	}
    53  	lien := liens[0].Lien
    54  	u, err := url.Parse(lien)
    55  	if err != nil {
    56  		t.Fatal("lien invalide :", err)
    57  	}
    58  
    59  	insc, err := ct.decodePreinscription(u.Query().Get("preinscription"))
    60  	if err != nil {
    61  		t.Fatal(err)
    62  	}
    63  	if m := insc.Responsable.Mail.String(); m != mail {
    64  		t.Errorf("unexpected mail : got %s", m)
    65  	}
    66  
    67  	if err := ct.decodeLienId(&insc.Responsable.Lienid); err != nil {
    68  		t.Fatal(err)
    69  	}
    70  }
    71  
    72  func TestInscription(t *testing.T) {
    73  	data, err := ct.loadCamps()
    74  	if err != nil {
    75  		t.Fatal(err)
    76  	}
    77  	camps, _ := data.triCamps()
    78  	if len(camps) == 0 {
    79  		t.Fatal("Aucun camp ouvert")
    80  	}
    81  
    82  	campId := camps[0].Id
    83  	insc := rd.Inscription{
    84  		Info: "Ceci est un test !",
    85  		Participants: rd.ParticipantInscriptions{
    86  			{IdCamp: campId},
    87  			{IdCamp: campId},
    88  			{IdCamp: campId},
    89  		},
    90  		CopiesMails: []string{"lmksd", "sdlsmkdsmkd"},
    91  	}
    92  	fac, _, err := ct.enregistreInscription(insc, false, data)
    93  	if err != nil {
    94  		t.Fatal(err)
    95  	}
    96  	if fac.IsValidated {
    97  		t.Error("shouldn't be validated")
    98  	}
    99  	rows, err := ct.DB.Query("SELECT * FROM messages WHERE id_facture = $1", fac.Id)
   100  	if err != nil {
   101  		t.Fatal(err)
   102  	}
   103  	messages, err := rd.ScanMessages(rows)
   104  	if err != nil {
   105  		t.Fatal(err)
   106  	}
   107  	if len(messages) != 2 {
   108  		t.Fatal("2 messages (heure et info) attendus")
   109  	}
   110  	contenus, err := rd.SelectMessageMessagesByIdMessages(ct.DB, messages.Ids()...)
   111  	if err != nil {
   112  		t.Fatal(err)
   113  	}
   114  	if len(contenus) != 1 {
   115  		t.Fatal("un seul message avec contenu est attendu")
   116  	}
   117  	if contenus[0].Contenu != insc.Info {
   118  		t.Error("messages are different")
   119  	}
   120  	rows, err = ct.DB.Query("SELECT * FROM participants WHERE id_facture = $1", fac.Id)
   121  	if err != nil {
   122  		t.Fatal(err)
   123  	}
   124  	parts, err := rd.ScanParticipants(rows)
   125  	if err != nil {
   126  		t.Fatal(err)
   127  	}
   128  	if len(parts) != len(insc.Participants) {
   129  		t.Fatal("participant manquant")
   130  	}
   131  }
   132  
   133  func TestInscriptionSimple(t *testing.T) {
   134  	data, err := ct.loadCamps()
   135  	if err != nil {
   136  		t.Fatal(err)
   137  	}
   138  	_, cs := data.triCamps()
   139  	if len(cs) == 0 {
   140  		t.Fatal("aucun camp simple")
   141  	}
   142  	var camp CampSimple
   143  	for _, c := range cs {
   144  		camp = c
   145  		break
   146  	}
   147  
   148  	if err = ct.enregistreInscriptionSimple(InscriptionSimple{}, camp); err != nil {
   149  		t.Fatal(err)
   150  	}
   151  }