github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/server/core/rawdata/composites/participants_test.go (about)

     1  package composites
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/benoitkugler/goACVE/logs"
     8  	"github.com/benoitkugler/goACVE/server/core/rawdata"
     9  	rd "github.com/benoitkugler/goACVE/server/core/rawdata"
    10  )
    11  
    12  func newDate(jour uint8, mois time.Month, annee int) rd.Date {
    13  	return rd.Date(time.Date(annee, mois, int(jour), 0, 0, 0, 0, time.UTC))
    14  }
    15  
    16  func TestAgeValide(t *testing.T) {
    17  	type testCase struct {
    18  		dateNaissance            rd.Date
    19  		expectedMin, expectedMax rd.StatutAttente
    20  	}
    21  
    22  	var c rd.Camp
    23  	c.DateDebut = newDate(8, time.August, 2020)
    24  	c.AgeMin = 6
    25  	c.AgeMax = 12
    26  	datesNaissances := []testCase{
    27  		{dateNaissance: newDate(2, time.April, 1994), expectedMin: rd.Inscrit, expectedMax: rd.Attente},
    28  		{dateNaissance: newDate(2, time.April, 2010), expectedMin: rd.Inscrit, expectedMax: rd.Inscrit},
    29  		{dateNaissance: newDate(8, time.August, 2014), expectedMin: rd.Inscrit, expectedMax: rd.Inscrit},
    30  		{dateNaissance: newDate(9, time.August, 2007), expectedMin: rd.Inscrit, expectedMax: rd.Inscrit},
    31  		{dateNaissance: newDate(9, time.August, 2014), expectedMin: rd.Refuse, expectedMax: rd.Inscrit}, // moins de 6ans
    32  	}
    33  	for _, testC := range datesNaissances {
    34  		minOk, maxOk := c.HasAgeValide(rd.BasePersonne{DateNaissance: testC.dateNaissance})
    35  		if minOk != testC.expectedMin {
    36  			t.Errorf("test %v : expected min status %s, got %s", testC, testC.expectedMin, minOk)
    37  		}
    38  		if maxOk != testC.expectedMax {
    39  			t.Errorf("test %v : expected max status %s, got %s", testC, testC.expectedMax, maxOk)
    40  		}
    41  	}
    42  }
    43  
    44  func TestLoadCamps(t *testing.T) {
    45  	db, err := rawdata.ConnectDB(logs.DBDev)
    46  	if err != nil {
    47  		t.Fatal(err)
    48  	}
    49  	defer db.Close()
    50  	rows, err := db.Query("SELECT * FROM participants LIMIT 100")
    51  	if err != nil {
    52  		t.Fatal(err)
    53  	}
    54  	parts, err := rd.ScanParticipants(rows)
    55  	if err != nil {
    56  		t.Fatal(err)
    57  	}
    58  	var ps ParticipantPersonnes
    59  	for _, part := range parts {
    60  		ps = append(ps, ParticipantPersonne{Participant: part})
    61  	}
    62  	pc, err := ps.LoadCamps(db)
    63  	if err != nil {
    64  		t.Fatal(err)
    65  	}
    66  	if len(pc) != len(ps) {
    67  		t.Error("expected same length")
    68  	}
    69  }