123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494 |
- package orm
- import (
- "testing"
- "time"
- "github.com/jinzhu/gorm"
- "github.com/remogatto/prettytest"
- )
- 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
- )
- connected := false
- for !connected {
- time.Sleep(10 * time.Second)
- db, err = New("karmen:karmen@/karmen_test?charset=utf8&parseTime=True&loc=Local")
- if err != nil {
- time.Sleep(5 * time.Second)
- continue
- }
- connected = true
- }
- Use(db)
- AutoMigrate()
- }
- func (t *testSuite) TestDB() {
- t.Not(t.Nil(DB()))
- }
- func (t *testSuite) TestGetTeachers() {
- teachers, err := GetTeachers()
- t.Nil(err)
- t.Equal(9, len(teachers))
- teacher := teachers[0]
- classes, err := teacher.GetClasses()
- t.Nil(err)
- t.Equal(1, len(classes))
- t.Equal(1, len(teacher.Classes))
- class := classes[0]
- t.Equal("1 A", class.Name)
- }
- func (t *testSuite) TestGetTeachersAll() {
- teachers, err := GetTeachersAll()
- t.Nil(err)
- t.Equal(9, len(teachers))
- t.Equal("1 A", teachers[0].Classes[0].Name)
- t.Equal("MATEMATICA", teachers[0].Subjects[0].Name)
- }
- func (t *testSuite) TestGetTeacherActivitiesByClass() {
- teacher, err := GetTeacher("1")
- t.Nil(err)
- if !t.Failed() {
- _, err := teacher.GetActivitiesByClass("1")
- t.Nil(err)
- if !t.Failed() {
- t.True(len(teacher.Activities) > 0)
- }
- }
- }
- func (t *testSuite) TestGetClasses() {
- classes, err := GetClasses()
- t.Nil(err)
- t.Equal(1, len(classes))
- class := classes[0]
- teachers, err := class.GetTeachers()
- t.Nil(err)
- t.Equal(9, len(teachers))
- t.Equal(9, len(class.Teachers))
- teacher := teachers[0]
- t.Equal("AGOSTINO", teacher.Surname)
- classes, err = GetClassesAll()
- t.True(len(classes[0].Teachers) > 0)
- if !t.Failed() {
- t.Equal("AGOSTINO", classes[0].Teachers[0].Surname)
- }
- }
- func (t *testSuite) TestGetClass() {
- class, err := GetClass("1")
- t.Nil(err)
- if !t.Failed() {
- t.Equal("1 A", class.Name)
- // Test teachers
- t.True(len(class.Teachers) > 0)
- t.Equal("AGOSTINO", class.Teachers[0].Surname)
- t.Equal("PETRUZZELLI", class.Teachers[8].Surname)
- t.Equal("LUNGA", class.Coordinator.Surname)
- t.Equal("DONADONI", class.Minuter.Surname)
- // Test activities
- t.True(len(class.Activities) > 0)
- t.Equal("1 A MATEMATICA 2h", class.Activities[0].Name)
- t.Equal("AGOSTINO", class.Activities[0].Teacher.Surname)
- t.Equal("MATEMATICA", class.Activities[0].Subject.Name)
- t.Equal(2, class.Activities[0].Hours)
- }
- }
- // func (t *testSuite) Before() {
- // var activities []Activity
- // if err := DB().Find(&activities).Error; err != nil {
- // panic(err)
- // }
- // for _, a := range activities {
- // DB().Unscoped().Delete(&a)
- // }
- // if err := DB().Exec("ALTER TABLE activities AUTO_INCREMENT = 1").Error; err != nil {
- // panic(err)
- // }
- // }
- // func (t *testSuite) TestCredential() {
- // var teacher Teacher
- // teacher.Name = "John"
- // teacher.Surname = "Doe"
- // if err := DB().Create(&teacher).Error; err != nil {
- // panic(err)
- // }
- // if err := DB().Find(&teacher).Error; err != nil {
- // panic(err)
- // }
- // t.Equal(teacher.Username, "john.doe")
- // t.Equal(teacher.Email, "john.doe@foo.org")
- // t.Equal(teacher.Password, "RKDb/GzQw8jzfAFwiAjclA81oBtzYWx0")
- // }
- // func (t *testSuite) TestCreateUpdateActivity() {
- // var (
- // class Class
- // subject Subject
- // )
- // activity := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
- // // Activity 1
- // if err := DB().Create(&activity).Error; err != nil {
- // panic(err)
- // }
- // // Marco Rossi
- // teacher := Teacher{}
- // if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
- // panic(err)
- // }
- // // 1A
- // if err := DB().Find(&class, 1).Error; err != nil {
- // panic(err)
- // }
- // // Italiano
- // if err := DB().Find(&subject, 1).Error; err != nil {
- // panic(err)
- // }
- // t.Equal(5, teacher.CurrHours)
- // t.Equal("1A", teacher.Classes[0].Name)
- // t.Equal("Italiano", teacher.Subjects[0].Name)
- // // Add another activity and check for teacher's hours, subjects and classes
- // // Subject: "Latino"
- // // Class: "1B"
- // activity = Activity{Hours: 3, TeacherID: 1, ClassID: 2, SubjectID: 2}
- // // Activity 2
- // if err := DB().Create(&activity).Error; err != nil {
- // panic(err)
- // }
- // // Marco Rossi
- // teacher = Teacher{}
- // if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
- // panic(err)
- // }
- // t.Equal(8, teacher.CurrHours)
- // t.Equal("1A", teacher.Classes[0].Name)
- // t.Equal("1B", teacher.Classes[1].Name)
- // t.Equal("Italiano", teacher.Subjects[0].Name)
- // t.Equal("Latino", teacher.Subjects[1].Name)
- // // Add an activity without teacher
- // // Subject: "Latino"
- // // Class: "2A"
- // activity = Activity{Hours: 3, TeacherID: 0, ClassID: 3, SubjectID: 2}
- // // Activity 3
- // if err := DB().Create(&activity).Error; err != nil {
- // panic(err)
- // }
- // // Test update activty
- // activity = Activity{}
- // if err := DB().Find(&activity, 1).Error; err != nil {
- // panic(err)
- // }
- // activity.Hours = 4
- // if err := DB().Save(&activity).Error; err != nil {
- // panic(err)
- // }
- // // Marco Rossi
- // teacher = Teacher{}
- // if err := DB().Find(&teacher, 1).Error; err != nil {
- // panic(err)
- // }
- // t.Equal(7, teacher.CurrHours)
- // // Delete an activity and check for the right number of hours and associations
- // if err := DB().Delete(&activity).Error; err != nil {
- // panic(err)
- // }
- // // Marco Rossi
- // teacher = Teacher{}
- // if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
- // panic(err)
- // }
- // t.Equal(3, teacher.CurrHours)
- // t.Equal(1, len(teacher.Classes))
- // t.Equal(1, len(teacher.Subjects))
- // t.Equal("1B", teacher.Classes[0].Name)
- // t.Equal("Latino", teacher.Subjects[0].Name)
- // // Remove teacher from activity and check for consistency
- // activity = Activity{}
- // teacher = Teacher{}
- // if err := DB().Find(&activity, 2).Error; err != nil {
- // panic(err)
- // }
- // activity.TeacherID = 0
- // if err := DB().Save(&activity).Error; err != nil {
- // panic(err)
- // }
- // // Marco Rossi
- // if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
- // panic(err)
- // }
- // t.Equal(0, teacher.CurrHours)
- // t.Equal(0, len(teacher.Classes))
- // t.Equal(0, len(teacher.Subjects))
- // // Change teacher in activity and check for consistency
- // // Subject: "Latino"
- // // Class: "1B"
- // activity = Activity{Hours: 3, TeacherID: 1, ClassID: 2, SubjectID: 2}
- // // Activity 3
- // if err := DB().Create(&activity).Error; err != nil {
- // panic(err)
- // }
- // activity.TeacherID = 2
- // if err := DB().Save(&activity).Error; err != nil {
- // panic(err)
- // }
- // // Marco Rossi
- // teacher = Teacher{}
- // if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
- // panic(err)
- // }
- // t.Equal(0, teacher.CurrHours)
- // t.Equal(0, len(teacher.Classes))
- // t.Equal(0, len(teacher.Subjects))
- // }
- // func (t *testSuite) TestClassTeachers() {
- // var class Class
- // activity_1 := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
- // if err := DB().Create(&activity_1).Error; err != nil {
- // panic(err)
- // }
- // activity_2 := Activity{Hours: 3, TeacherID: 1, ClassID: 2, SubjectID: 2}
- // if err := DB().Create(&activity_2).Error; err != nil {
- // panic(err)
- // }
- // if err := DB().Preload("Teachers").First(&class, 1).Error; err != nil {
- // panic(err)
- // }
- // subjects := class.Teachers[0].GetSubjectsByClassID(class.ID)
- // t.Equal(1, len(subjects))
- // t.Equal("Italiano", subjects[0].Name)
- // }
- // func (t *testSuite) TestCoordinatorMinuter() {
- // var (
- // class Class
- // teacher_1 Teacher
- // teacher_2 Teacher
- // )
- // activity_1 := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
- // if err := DB().Create(&activity_1).Error; err != nil {
- // panic(err)
- // }
- // activity_2 := Activity{Hours: 5, TeacherID: 2, ClassID: 1, SubjectID: 1}
- // if err := DB().Create(&activity_2).Error; err != nil {
- // panic(err)
- // }
- // if err := DB().First(&class, 1).Error; err != nil {
- // panic(err)
- // }
- // class.CoordinatorID = 1
- // class.MinuterID = 2
- // if err := DB().Save(&class).Error; err != nil {
- // panic(err)
- // }
- // if err := DB().Find(&teacher_1, 1).Error; err != nil {
- // panic(err)
- // }
- // if err := DB().Find(&teacher_2, 2).Error; err != nil {
- // panic(err)
- // }
- // classes_1 := teacher_1.IsCoordinator()
- // t.Equal(1, len(classes_1))
- // if len(classes_1) > 0 {
- // t.Equal("1A", classes_1[0].Name)
- // }
- // classes_2 := teacher_2.IsMinuter()
- // t.Equal(1, len(classes_2))
- // if len(classes_2) > 0 {
- // t.Equal("1A", classes_2[0].Name)
- // }
- // }
- // func (t *testSuite) TestTeacherHasClass() {
- // activity := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
- // // Activity 1
- // if err := DB().Create(&activity).Error; err != nil {
- // panic(err)
- // }
- // // Marco Rossi
- // teacher := Teacher{}
- // if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
- // panic(err)
- // }
- // t.True(teacher.HasClass("1A"))
- // }
- // func (t *testSuite) TestTeacherHasSubject() {
- // activity := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
- // // Activity 1
- // if err := DB().Create(&activity).Error; err != nil {
- // panic(err)
- // }
- // // Marco Rossi
- // teacher := Teacher{}
- // if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
- // panic(err)
- // }
- // t.True(teacher.HasSubject("Italiano"))
- // }
- // func (t *testSuite) TestTeacherHasSubjectInClass() {
- // activity := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
- // // Activity 1
- // if err := DB().Create(&activity).Error; err != nil {
- // panic(err)
- // }
- // // Marco Rossi
- // teacher := Teacher{}
- // if err := DB().Preload("Classes").Preload("Subjects").Find(&teacher, 1).Error; err != nil {
- // panic(err)
- // }
- // t.True(teacher.HasSubjectInClass("Italiano", "1A"))
- // }
- // func (t *testSuite) TestTeacherIsCoordinatorInClass() {
- // activity := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
- // // Activity 1
- // if err := DB().Create(&activity).Error; err != nil {
- // panic(err)
- // }
- // var class Class
- // if err := DB().First(&class, 1).Error; err != nil {
- // panic(err)
- // }
- // class.CoordinatorID = 1
- // // Marco Rossi
- // teacher := Teacher{}
- // if err := DB().Preload("Classes").Find(&teacher, 1).Error; err != nil {
- // panic(err)
- // }
- // t.True(teacher.IsCoordinatorInClass("1A"))
- // }
- // func (t *testSuite) TestTeacherIssues() {
- // // activity_1 := Activity{Hours: 5, TeacherID: 1, ClassID: 1, SubjectID: 1}
- // // activity_2 := Activity{Hours: 10, TeacherID: 1, ClassID: 2, SubjectID: 1}
- // // if err := DB().Create(&activity_1).Error; err != nil {
- // // panic(err)
- // // }
- // // if err := DB().Create(&activity_2).Error; err != nil {
- // // panic(err)
- // // }
- // // // Marco Rossi
- // // teacher := Teacher{}
- // // if err := DB().Preload("Issues").Find(&teacher, 1).Error; err != nil {
- // // panic(err)
- // // }
- // // t.Equal(1, len(teacher.Issues))
- // // t.Equal(IssueTeacherHours, teacher.Issues[0].Type)
- // }
|