github.com/oinume/lekcije@v0.0.0-20231017100347-5b4c5eb6ab24/backend/cmd/teacher_error_resetter/main_test.go (about) 1 package main 2 3 import ( 4 "io" 5 "net/http" 6 "os" 7 "testing" 8 9 "github.com/oinume/lekcije/backend/domain/config" 10 "github.com/oinume/lekcije/backend/internal/mock" 11 "github.com/oinume/lekcije/backend/model" 12 ) 13 14 var helper *model.TestHelper 15 16 func TestMain(m *testing.M) { 17 config.MustProcessDefault() 18 helper = model.NewTestHelper() 19 // NOTE: Avoid "Failed to FindByPK: id=1: record not found" 20 helper.TruncateAllTables(nil) 21 os.Exit(m.Run()) 22 } 23 24 func Test_teacherErrorResetterMain_run(t *testing.T) { 25 type fields struct { 26 outStream io.Writer 27 errStream io.Writer 28 } 29 30 tests := map[string]struct { 31 args []string 32 fields fields 33 wantErr bool 34 }{ 35 "normal": { 36 args: []string{"teacher_error_resetter", "-concurrency=1"}, 37 fields: fields{ 38 outStream: os.Stdout, 39 errStream: os.Stderr, 40 }, 41 wantErr: false, 42 }, 43 } 44 45 for name, test := range tests { 46 t.Run(name, func(t *testing.T) { 47 m := &teacherErrorResetterMain{ 48 outStream: test.fields.outStream, 49 errStream: test.fields.errStream, 50 db: helper.DB(t), 51 } 52 53 teacherService := model.NewTeacherService(helper.DB(t)) 54 teacher := helper.CreateRandomTeacher(t) 55 teacher.YearsOfExperience = 1 56 teacher.FavoriteCount = 10 57 teacher.Rating = 4.8 58 teacher.FetchErrorCount = 10 59 if err := teacherService.CreateOrUpdate(teacher); err != nil { 60 t.Fatalf("teacherService.CreateOrUpdate failed: err=%v", err) 61 } 62 63 mockTransport, err := mock.NewHTMLTransport("../../infrastructure/dmm_eikaiwa/testdata/49393.html") 64 if err != nil { 65 t.Fatalf("fetcher.NewMockTransport failed: err=%v", err) 66 } 67 m.httpClient = &http.Client{ 68 Transport: mockTransport, 69 } 70 71 if err := m.run(test.args); (err != nil) != test.wantErr { 72 t.Fatalf("teacherErrorResetterMain.run() error = %v, wantErr %v", err, test.wantErr) 73 } 74 75 gotTeacher, err := teacherService.FindByPK(teacher.ID) 76 if err != nil { 77 t.Fatalf("teacherService.FindByPK failed: err=%v", err) 78 } 79 if got, want := gotTeacher.FetchErrorCount, uint8(0); got != want { 80 t.Errorf("FetchErrorCount doesn't match: got=%v, want=%v", got, want) 81 } 82 }) 83 } 84 }