package orm import ( "os" "testing" // "time" "github.com/jinzhu/gorm" "github.com/remogatto/prettytest" _ "github.com/jinzhu/gorm/dialects/sqlite" ) type testSuite struct { prettytest.Suite } func TestRunner(t *testing.T) { prettytest.Run( t, new(testSuite), ) } func (t *testSuite) BeforeAll() { var ( db *gorm.DB err error ) _, err = os.Stat("test.db") if err == nil { err := os.Remove("test.db") if err != nil { panic(err) } } db, err = gorm.Open("sqlite3", "test.db") if err != nil { panic(err) } Use(db) AutoMigrate() } func (t *testSuite) TestDB() { t.Not(t.Nil(DB())) } func (t *testSuite) TestGetActivityAll() { activity, err := new(Activity).Read(map[string]string{"id": "1"}, nil) t.Nil(err) if !t.Failed() { t.Equal("Amilcare", activity.(*Activity).Teacher.Name) } } // func (t *testSuite) TestGetActivityForUpdate() { // data, err := GetActivityForUpdate(map[string]string{"id": "1"}) // t.Nil(err) // if !t.Failed() { // t.Equal("Amilcare", data.(ActivityForUpdate).Activity.Teacher.Name) // t.Equal("1 A", data.(ActivityForUpdate).AllClasses[0].Name) // t.Equal("ITALIANO", data.(ActivityForUpdate).AllSubjects[1].Name) // t.Equal("Costanza", data.(ActivityForUpdate).AllTeachers[2].Name) // } // } // func (t *testSuite) TestSaveActivity() { // activity, err := GetActivity(map[string]string{"id": "1"}) // t.Nil(err) // t.Equal(uint(1), activity.(*Activity).SubjectID) // activity.(*Activity).SubjectID = 2 // _, err = SaveActivity(activity) // t.Nil(err) // if !t.Failed() { // activity, _ = GetActivity(map[string]string{"id": "1"}) // t.Equal(uint(2), activity.(*Activity).SubjectID) // } // } // func (t *testSuite) TestDeleteActivity() { // var activities []*Activity // err := DB().Find(&activities).Error // t.Nil(err) // numActivities := len(activities) // activity, err := CreateActivity( // &Activity{ // SubjectID: 1, // TeacherID: 1, // ClassID: 1, // }) // t.Nil(err) // err = DB().Find(&activities).Error // t.Nil(err) // t.Equal(numActivities+1, len(activities)) // act, err := DeleteActivity(map[string]string{"id": strconv.Itoa(int(activity.ID))}, nil) // t.Nil(err) // t.Equal(14, act.GetID()) // err = DB().Find(&activities).Error // t.Nil(err) // t.Equal(numActivities, len(activities)) // } // func (t *testSuite) TestGetTeacher() { // teacher, err := new(Teacher).Read(map[string]string{"id": "1"}) // t.Nil(err) // if !t.Failed() { // t.Equal("Amilcare", teacher.(*Teacher).Name) // t.Equal("AGOSTINO", teacher.(*Teacher).Surname) // } // } // func (t *testSuite) TestGetTeacherAll() { // teacher, err := GetTeacherAll(map[string]string{"id": "1"}) // t.Nil(err) // if !t.Failed() { // t.Equal("Amilcare", teacher.(*Teacher).Name) // t.Equal("AGOSTINO", teacher.(*Teacher).Surname) // t.Equal("1 A", teacher.(*Teacher).Activities[0].Class.Name) // t.Equal("1 B", teacher.(*Teacher).Activities[1].Class.Name) // t.Equal(4, teacher.(*Teacher).ActualHours) // } // teacher, err = GetTeacherAll(map[string]string{"id": "3"}) // t.Nil(err) // if !t.Failed() { // t.Equal("Costanza", teacher.(*Teacher).Name) // t.Equal("LUNGA", teacher.(*Teacher).Surname) // t.Equal(true, teacher.(*Teacher).IsCoordinator) // } // } // func (t *testSuite) TestGetStudentAll() { // student, err := GetStudentAll(map[string]string{"id": "1"}) // t.Nil(err) // if !t.Failed() { // t.Equal("Mario", student.(*Student).Name) // t.Equal("ROSSI", student.(*Student).Surname) // t.Equal("1 A", student.(*Student).Class.Name) // t.Equal("LUNGA", student.(*Student).Class.Coordinator.Surname) // } // } // func (t *testSuite) TestGetTeachers() { // teachers, err := new(Teacher).ReadAll(map[string]string{}) // t.Nil(err) // t.Equal(11, len(teachers.([]*Teacher))) // teacher := teachers.([]*Teacher)[0] // classes, err := teacher.GetClasses() // t.Nil(err) // t.Equal(2, len(classes)) // t.Equal(2, len(teacher.Classes)) // class := classes[0] // t.Equal("1 A", class.Name) // } // func (t *testSuite) TestGetTeachersAll() { // teachers, err := GetTeachersAll(map[string]string{}) // t.Nil(err) // t.Equal(11, len(teachers.([]*Teacher))) // t.Equal("1 A", teachers.([]*Teacher)[0].Classes[0].Name) // t.Equal("SCIENZE", teachers.([]*Teacher)[0].Subjects[0].Name) // t.Equal(1, len(teachers.([]*Teacher)[0].SubjectsByClass[1])) // } // func (t *testSuite) TestGetTeachersFast() { // teachers, err := GetTeachersFast(map[string]string{}) // t.Nil(err) // t.Equal(11, len(teachers.([]*Teacher))) // } // func (t *testSuite) TestGetTeacherActByClass() { // teacher, err := GetTeacher(map[string]string{"id": "1"}) // t.Nil(err) // if !t.Failed() { // _, err := teacher.(*Teacher).GetActivitiesByClass("1") // t.Nil(err) // if !t.Failed() { // t.True(len(teacher.(*Teacher).Activities) > 0) // } // } // } // func (t *testSuite) TestGetTeacherSubjByClass() { // teacher, err := GetTeacherAll(map[string]string{"id": "1"}) // t.Nil(err) // t.Equal(2, len(teacher.(*Teacher).Subjects)) // if !t.Failed() { // subjects, err := teacher.(*Teacher).GetSubjectsByClassID("1") // t.Nil(err) // if !t.Failed() { // t.Equal(1, len(subjects)) // } // } // } // func (t *testSuite) TestSaveTeacher() { // teacher, err := GetTeacher(map[string]string{"id": "1"}) // t.Nil(err) // teacher.(*Teacher).Name = "Roberto" // _, err = SaveTeacher(teacher) // t.Nil(err) // if !t.Failed() { // teacher, _ = GetTeacher(map[string]string{"id": "1"}) // t.Equal("Roberto", teacher.(*Teacher).Name) // } // } // func (t *testSuite) TestCreateDeleteTeacher() { // teacher, err := CreateTeacher(&Teacher{Credential: Credential{Name: "Giovanni", Surname: "GIACOBBE"}}) // t.Nil(err) // if !t.Failed() { // _, err = DeleteTeacher(map[string]string{"id": strconv.Itoa(int(teacher.ID))}, nil) // t.Nil(err) // teachers, _ := GetTeachers(map[string]string{}) // t.Equal(11, len(teachers.([]*Teacher))) // } // teacher, err = CreateTeacher(&Teacher{Credential: Credential{Name: "Amilcare", Surname: "AGOSTINO"}}) // t.Not(t.Nil(err)) // } // func (t *testSuite) TestGetDepartments() { // departments, err := GetDepartments(map[string]string{}) // t.Nil(err) // t.Equal(2, len(departments.([]*Department))) // if !t.Failed() { // department := departments.([]*Department)[0] // subjects, err := department.GetSubjects() // t.Nil(err) // t.Equal(1, len(subjects)) // t.Equal(1, len(department.Subjects)) // subject := subjects[0] // t.Equal("FRANCESE", subject.Name) // } // } // func (t *testSuite) TestGetDepartment() { // department, err := GetDepartment(map[string]string{"id": "1"}) // t.Nil(err) // if !t.Failed() { // t.Equal("LINGUE STRANIERE", department.(*Department).Name) // } // } // func (t *testSuite) TestGetDepartmentAll() { // department, err := GetDepartmentAll(map[string]string{"id": "1"}) // t.Nil(err) // if !t.Failed() { // t.Equal("FRANCESE", department.(*Department).Subjects[0].Name) // t.Equal("DELLE ROSE", department.(*Department).Teachers[0].Surname) // } // } // func (t *testSuite) TestGetSubjectForAdd() { // data, err := GetSubjectForAdd(nil) // t.Nil(err) // if !t.Failed() { // t.Equal("LINGUE STRANIERE", data.(SubjectForAdd).AllDepartments[0].Name) // } // } // func (t *testSuite) TestSaveStudent() { // student, err := GetStudentAll(map[string]string{"id": "1"}) // t.Nil(err) // t.Equal(uint(1), student.(*Student).ClassID) // student.(*Student).ClassID = 2 // student.(*Student).Handicap = true // _, err = SaveStudent(student) // t.Nil(err) // if !t.Failed() { // student, _ = GetStudent(map[string]string{"id": "1"}) // t.Equal(uint(2), student.(*Student).ClassID) // t.Equal(true, student.(*Student).Handicap) // } // } // // Groups // func (t *testSuite) TestGetGroups() { // groups, err := GetGroups(map[string]string{}) // t.Nil(err) // t.Equal(1, len(groups.([]*Group))) // } // func (t *testSuite) TestGetGroup() { // group, err := GetGroup(map[string]string{"id": "1"}) // t.Nil(err) // if !t.Failed() { // t.Equal("Gruppo", group.(*Group).Name) // } // } // func (t *testSuite) TestTeacherQuery() { // group := new(Group) // // Select all // group.Query = "surname:*" // teachers, err := group.executeTeacherQuery() // t.Nil(err) // if !t.Failed() { // t.Equal(11, len(teachers)) // } // // Select teacher with surname beginning with the letter A // group.Query = "surname:A*" // teachers, err = group.executeTeacherQuery() // t.Nil(err) // if !t.Failed() { // t.Equal(2, len(teachers)) // } // // Select teacher with surname beginning with the letter A // group.Query = "coordinator:true" // teachers, err = group.executeTeacherQuery() // t.Nil(err) // if !t.Failed() { // t.Equal(1, len(teachers)) // } // }