core/tests/db_test.go

666 lines
21 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package tests
//import (
// "context"
// "github.com/pioz/faker"
// "math"
// "math/rand"
// "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal"
// "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
// "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/repository/quiz"
// "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/repository/result"
// "penahub.gitlab.yandexcloud.net/backend/quiz/core.git/clients/auth"
//
// //"database/sql"
// "fmt"
// "testing"
// "time"
//
// "github.com/stretchr/testify/assert"
// bdd "github.com/themakers/bdd"
//)
//
//const baseURL = "http://localhost:"
//const authClientUrl = "test.com"
//const postgresCred string = "host=localhost port=35432 user=squiz password=Redalert2 dbname=squiz sslmode=disable"
//const appPort = "1488"
//const storerPort = "1489"
//const answererPort = "1490"
//const healthChecksPort = "5489"
//
//var types4testing = []string{
// model.TypeVariant,
// model.TypeImages,
// model.TypeVarImages,
// model.TypeFile,
// model.TypeText,
// model.TypeEmoji,
// model.TypeSelect,
// model.TypeDate,
// model.TypeNumber,
// model.TypePage,
// model.TypeRating,
//}
//
//func TestDAL(t *testing.T) {
// //login := "D" + strconv.FormatInt(time.Now().Unix(), 10)
// //token := registerUser(login)
// //
// //m, ok := token.Claims.(jwt.MapClaims)
// //if !ok {
// // panic("malformed JWT")
// //}
// //
// //id, ok := m["id"].(string)
// //if !ok || id == "" {
// // panic("missing id claim in JWT")
// //}
//
// id := "123"
//
// ctx := context.Background()
// authClient := auth.NewAuthClient(authClientUrl)
// fmt.Println(id)
//
// bdd.Scenario(t, "DAL testing", func(t *testing.T, runID string) {
// var (
// err error
// d *dal.DAL
// records []model.Quiz
// questions []model.Question
// answersSession string
// )
// bdd.Act(t, "Postgres Tables Creating", func() {
//
// bdd.Test(t, "test dbconnect", func() {
// d, err = dal.New(ctx, postgresCred, authClient)
// assert.NoError(t, err, nil)
// assert.NotNil(t, d, nil)
// })
//
// //bdd.Test(t, "positive test of table creating", func() {
// // err = d.Init()
// // assert.NoError(t, err, nil)
// //})
// //
// //bdd.Test(t, "negative test of table creating", func() {
// // err = d.Init()
// // assert.NoError(t, err, nil)
// //})
// })
//
// bdd.Act(t, "create quiz testing", func() {
// record := model.Quiz{
// AccountId: id,
// Fingerprinting: true,
// Repeatable: true,
// NotePrevented: true,
// MailNotifications: true,
// UniqueAnswers: true,
// Name: "test",
// Description: "test",
// Config: `{"Mailing": {"When": "test","Theme": "Quiz test","Reply": "test","ReplName": "test"}}`,
// Status: model.StatusDraft,
// Limit: 100,
// DueTo: uint64(time.Now().Add(time.Hour).Unix()),
// TimeOfPassing: 60,
// Pausable: true,
// GroupId: 2,
// }
// statuses4creating := []string{
// model.StatusDraft,
// model.StatusStart,
// model.StatusStop,
// model.StatusOffLimit,
// model.StatusTimeout,
// model.StatusTemplate,
// }
//
// for i := 0; i < 100; i++ {
//
// record2 := model.Quiz{
// AccountId: id,
// Fingerprinting: true,
// Repeatable: true,
// NotePrevented: true,
// MailNotifications: true,
// UniqueAnswers: true,
// Name: record.Name + fmt.Sprint(i),
// Description: "test",
// Config: `{"Mailing": {"When": "test","Theme": "Quiz test","Reply": "test","ReplName": "test"}}`,
// Status: statuses4creating[rand.Intn(len(statuses4creating))],
// Limit: 100,
// DueTo: uint64(time.Now().Add(time.Hour).Unix()),
// ParentIds: []int32{},
// TimeOfPassing: 60,
// Pausable: true,
// GroupId: 1,
// }
//
// bdd.Test(t, "positive quiz storing", func() {
// err := d.QuizRepo.CreateQuiz(ctx, &record2)
// assert.NoError(t, err, nil)
// assert.NotZero(t, record2.Id, nil)
// assert.NotEqual(t, record2.CreatedAt, nil)
// assert.NotEqual(t, record2.UpdatedAt, nil)
// records = append(records, record2)
// })
// }
//
// for i := 0; i < len(records)-1; i++ {
// if records[i].Status == model.StatusStart {
//
// bdd.Test(t, "get quiz by qid", func() {
// qu, err := d.QuizRepo.GetQuizByQid(ctx, records[i].Qid)
// assert.Equal(t, records[i].Id, qu.Id)
// assert.NoError(t, err, nil)
// })
// }
//
// bdd.Test(t, "get quiz by id", func() {
// qu, err := d.QuizRepo.GetQuizById(ctx, id, records[i].Id)
// assert.Equal(t, records[i].Id, qu.Id)
// assert.Equal(t, records[i].Qid, qu.Qid)
// assert.NoError(t, err, nil)
// })
//
// bdd.Test(t, "get quiz config", func() {
// _, _, err := d.QuizRepo.GetQuizConfig(ctx, records[i].Id)
// assert.NoError(t, err, nil)
// })
// }
//
// for i := 0; i < len(records)%80; i++ {
// bdd.Test(t, "update quiz", func() {
// updquiz := model.Quiz{
// Id: records[i].Id,
// Qid: records[i].Qid,
// AccountId: id,
// Deleted: records[i].Deleted,
// Archived: records[i].Archived,
// Fingerprinting: records[i].Fingerprinting,
// Repeatable: records[i].Repeatable,
// NotePrevented: records[i].NotePrevented,
// MailNotifications: records[i].MailNotifications,
// UniqueAnswers: records[i].UniqueAnswers,
// Name: faker.String() + records[i].Name,
// Description: faker.String() + records[i].Description,
// Config: faker.String() + records[i].Config,
// Status: records[i].Status,
// Limit: records[i].Limit,
// DueTo: records[i].DueTo,
// TimeOfPassing: records[i].TimeOfPassing,
// Pausable: records[i].Pausable,
// Version: records[i].Version,
// VersionComment: records[i].VersionComment,
// ParentIds: records[i].ParentIds,
// CreatedAt: records[i].CreatedAt,
// UpdatedAt: records[i].UpdatedAt,
// QuestionsCount: records[i].QuestionsCount,
// SessionCount: records[i].SessionCount,
// PassedCount: records[i].PassedCount,
// AverageTime: records[i].AverageTime,
// Super: records[i].Super,
// GroupId: records[i].GroupId,
// }
// err := d.QuizRepo.UpdateQuiz(ctx, id, updquiz)
// assert.NoError(t, err, nil)
// })
// bdd.Test(t, "move to history quiz", func() {
// qu, err := d.QuizRepo.MoveToHistoryQuiz(ctx, records[i].Id, id)
// assert.Equal(t, records[i].Id+100, qu.Id)
// assert.NoError(t, err, nil)
// })
// }
//
// bdd.Test(t, "negative test quiz storing1", func() {
// record.Name = faker.StringWithSize(300)
// err := d.QuizRepo.CreateQuiz(ctx, &record)
// assert.Error(t, err, nil)
// })
//
// bdd.Test(t, "negative test quiz storing2", func() {
// record.Status = model.StatusTemplate
// err := d.QuizRepo.CreateQuiz(ctx, &record)
// assert.Error(t, err, nil)
// })
// })
//
// bdd.Act(t, "get list of quizes", func() {
// bdd.Test(t, "get list of quizes", func() {
// res, _, err := d.QuizRepo.GetQuizList(ctx, quiz.GetQuizListDeps{
// Limit: 10,
// Offset: 0,
// From: 0,
// To: 0,
// Group: 0,
// Deleted: false,
// Archived: false,
// Super: true,
// Search: "",
// Status: "",
// AccountId: id,
// })
// assert.NoError(t, err, nil)
// assert.Equal(t, 0, len(res), nil)
// //assert.Greater(t, cnt, uint64(0), nil)
// })
// })
//
// bdd.Act(t, "create question testing", func() {
// quix4filling := records[rand.Intn(len(records))]
// for _, questionType := range types4testing {
// bdd.Test(t, fmt.Sprintf("positive question creating: %s", questionType), func() {
// question := model.Question{
// Id: 0,
// QuizId: quix4filling.Id,
// Title: "testNone",
// Description: "sample text",
// Type: questionType,
// Required: true,
// Deleted: false,
// Page: 0,
// Content: "test",
// Version: 0,
// ParentIds: nil,
// CreatedAt: time.Now(),
// UpdatedAt: time.Now(),
// }
// err := d.QuestionRepo.CreateQuestion(ctx, &question)
// assert.NoError(t, err, nil)
// assert.NotZero(t, question.Id, nil)
// questions = append(questions, question)
//
// bdd.Test(t, "get question list", func() {
// ques, count, err := d.QuestionRepo.GetQuestionList(ctx, 0, 10, 1226358000, 1289430000, quix4filling.Id, false, true, "", questionType)
// fmt.Println(ques)
// fmt.Println(count)
// assert.NoError(t, err, nil)
// })
// })
// }
//
// bdd.Test(t, "test create answers", func() {
// testanswers := make([]model.Answer, 0)
// for i := 0; i < 15; i++ {
// recAns := model.Answer{
// Content: "test",
// QuestionId: questions[0].Id,
// Result: false,
// Email: faker.String(),
// QuizId: faker.Uint64(),
// }
// testanswers = append(testanswers, recAns)
// }
// answersSession = faker.String()
//
// anss, err := d.AnswerRepo.CreateAnswers(ctx, testanswers, answersSession, "seeeeeeeesssion", questions[0].QuizId)
// if len(err) != 0 {
// assert.NoError(t, err[0], nil)
// }
//
// if len(anss) != len(testanswers) {
// panic("test create answers crushed")
// }
// })
//
// bdd.Test(t, "Get All Answers By Quiz ID(session)", func() {
// ansss, err := d.AnswerRepo.GetAllAnswersByQuizID(ctx, answersSession)
// assert.NoError(t, err, nil)
// assert.Equal(t, 1, len(ansss))
// })
//
// bdd.Test(t, "update question", func() {
// for i := 0; i < len(questions)%80; i++ {
//
// bdd.Test(t, "get question title", func() {
// title, tipe, err := d.QuestionRepo.GetQuestionTitleByID(ctx, questions[i].Id)
// assert.NoError(t, err, nil)
// assert.Equal(t, questions[i].Title, title)
// assert.Equal(t, questions[i].Type, tipe)
// })
//
// updateques := model.Question{
// Id: questions[i].Id,
// QuizId: questions[i].QuizId,
// Title: faker.String() + questions[i].Title,
// Description: faker.String() + questions[i].Description,
// Type: questions[i].Type,
// Required: questions[i].Required,
// Deleted: questions[i].Deleted,
// Page: questions[i].Page,
// Content: faker.String() + questions[i].Content,
// Version: questions[i].Version,
// ParentIds: questions[i].ParentIds,
// CreatedAt: questions[i].CreatedAt,
// UpdatedAt: questions[i].UpdatedAt,
// }
//
// err := d.QuestionRepo.UpdateQuestion(ctx, updateques)
// assert.NoError(t, err, nil)
//
// bdd.Test(t, "move to history question", func() {
// que, err := d.QuestionRepo.MoveToHistoryQuestion(ctx, questions[i].Id)
// assert.NoError(t, err, nil)
// assert.Equal(t, questions[i].Id+11, que.Id)
// })
// }
// })
//
// bdd.Test(t, "negative question creating: overflow title", func() {
// question := model.Question{
// Id: 0,
// QuizId: quix4filling.Id,
// Title: faker.StringWithSize(1024),
// Description: "sample text",
// Type: model.TypeText,
// Required: true,
// Deleted: false,
// Page: 0,
// Content: "test",
// Version: 0,
// ParentIds: nil,
// CreatedAt: time.Time{},
// UpdatedAt: time.Time{},
// }
// err := d.QuestionRepo.CreateQuestion(ctx, &question)
// assert.Error(t, err, nil)
// })
// bdd.Test(t, "negative question creating: invalid status", func() {
// question := model.Question{
// Id: 0,
// QuizId: quix4filling.Id,
// Title: `testNonete`,
// Description: "sample text",
// Type: "test",
// Required: true,
// Deleted: true,
// Page: 0,
// Content: "test",
// Version: 0,
// ParentIds: nil,
// CreatedAt: time.Time{},
// UpdatedAt: time.Time{},
// }
// err := d.QuestionRepo.CreateQuestion(ctx, &question)
// assert.Error(t, err, nil)
// })
// })
//
// bdd.Act(t, "edit some questions", func() {
// bdd.Test(t, "positive delete question", func() {
// question, err := d.QuestionRepo.DeleteQuestion(ctx, questions[0].Id)
// assert.NoError(t, err)
// assert.True(t, question.Deleted)
// questions[0] = question
// })
// bdd.Test(t, "negative delete question", func() {
// question, err := d.QuestionRepo.DeleteQuestion(ctx, math.MaxUint64)
// assert.Error(t, err)
// assert.Zero(t, question.Id)
// })
// bdd.Test(t, "positive create new version of question", func() {
// questions[0].Deleted = true
// questions[0].Version += 1
// questions[0].ParentIds = append(questions[0].ParentIds, int32(questions[0].Id))
// questions[0].Title = faker.StringWithSize(100)
//
// err := d.QuestionRepo.CreateQuestion(ctx, &questions[0])
// assert.NoError(t, err)
// })
// })
//
// bdd.Act(t, "edit some quizes", func() {
// bdd.Test(t, "positive delete quiz", func() {
// quiz, err := d.QuizRepo.DeleteQuiz(ctx, id, records[0].Id)
// fmt.Println(quiz)
// assert.NoError(t, err)
// assert.True(t, quiz.Deleted)
// records[0].Id = quiz.Id
// })
// bdd.Test(t, "negative delete question", func() {
// quiz, err := d.QuizRepo.DeleteQuiz(ctx, id, math.MaxUint64)
// assert.Error(t, err)
// assert.Zero(t, quiz.Id)
// })
// bdd.Test(t, "positive create new version of question", func() {
// records[0].Deleted = true
// records[0].Version += 1
// records[0].ParentIds = append(records[0].ParentIds, int32(records[0].Id))
// records[0].Name = faker.StringWithSize(100)
//
// err := d.QuizRepo.CreateQuiz(ctx, &records[0])
// assert.NoError(t, err)
// })
// })
//
// bdd.Act(t, "update expired quizes", func() {
// bdd.Test(t, "check that we have quizes for expiration", func() {
// record2 := model.Quiz{
// AccountId: id,
// Fingerprinting: true,
// Repeatable: true,
// NotePrevented: true,
// MailNotifications: true,
// UniqueAnswers: true,
// Name: faker.StringWithSize(100),
// Description: "test",
// Config: "test",
// Status: model.StatusStart,
// Limit: 0,
// DueTo: uint64(time.Now().Add(-time.Hour).Unix()),
// TimeOfPassing: 0,
// Pausable: false,
// }
// err := d.QuizRepo.CreateQuiz(ctx, &record2)
// assert.NoError(t, err, nil)
// assert.NotZero(t, record2.Id, nil)
// assert.NotEqual(t, record2.CreatedAt, nil)
// assert.NotEqual(t, record2.UpdatedAt, nil)
// })
// })
//
// bdd.Act(t, "copy question flow", func() {
// bdd.Test(t, "duplicate question", func() {
// copiedQuestion, err := d.QuestionRepo.CopyQuestion(ctx, questions[4].Id, 0)
// assert.NoError(t, err)
// assert.Equal(t, questions[4].QuizId, copiedQuestion.QuizId)
// assert.NotEqual(t, questions[4].Id, copiedQuestion.Id)
// })
// bdd.Test(t, "copy question to another quiz", func() {
// copiedQuestion, err := d.QuestionRepo.CopyQuestion(ctx, questions[4].Id, records[10].Id)
// assert.NoError(t, err)
// assert.Equal(t, records[10].Id, copiedQuestion.QuizId)
// assert.NotEqual(t, questions[4].Id, copiedQuestion.Id)
// })
// })
//
// bdd.Act(t, "copy quiz flow", func() {
// bdd.Test(t, "quiz duplication", func() {
// copiesQuiz, err := d.QuizRepo.CopyQuiz(ctx, records[10].AccountId, records[10].Id)
// assert.NoError(t, err)
// assert.NotEqual(t, records[10].Id, copiesQuiz.Id)
// })
// })
//
// bdd.Act(t, "get history for quiz", func() {
// bdd.Test(t, "positive quiz history", func() {
// hist, err := d.QuizRepo.QuizHistory(ctx, quiz.QuizHistoryDeps{
// Id: records[0].Id,
// Limit: 100,
// Offset: 0,
// AccountId: id,
// })
// assert.NoError(t, err)
// assert.Equal(t, len(hist), 2)
// })
// bdd.Test(t, "negative quiz history", func() {
// _, err := d.QuizRepo.QuizHistory(ctx, quiz.QuizHistoryDeps{
// Id: math.MaxUint64,
// Limit: 100,
// Offset: 0,
// AccountId: id,
// })
// assert.NoError(t, err)
// assert.Equal(t, nil, nil)
// })
// })
//
// bdd.Act(t, "get history for question", func() {
// bdd.Test(t, "positive question history", func() {
// hist, err := d.QuestionRepo.QuestionHistory(ctx, questions[0].Id, 100, 0)
// assert.NoError(t, err)
// assert.Equal(t, len(hist), 2)
// })
// bdd.Test(t, "negative question history", func() {
// _, err := d.QuestionRepo.QuestionHistory(ctx, math.MaxUint64, 100, 0)
// assert.NoError(t, err)
// })
// })
//
// bdd.Act(t, "Worker Stat Process", func() {
// err := d.WorkerRepo.WorkerStatProcess(ctx)
// assert.NoError(t, err, nil)
// })
//
// bdd.Act(t, "Worker Timeout Process", func() {
// err := d.WorkerRepo.WorkerTimeoutProcess(ctx)
// assert.NoError(t, err, nil)
// })
// // todo нужно будет обновить эти тесты связать с выше стоящими
// bdd.Act(t, "Get Account By ID", func() {
// account, err := d.AccountRepo.GetAccountByID(ctx, "64eb6ce57047f28fdabf69ec")
// assert.NoError(t, err, nil)
// fmt.Println(account)
// })
//
// bdd.Act(t, "Get Privileges By Account ID", func() {
// privileges, err := d.AccountRepo.GetPrivilegesByAccountID(ctx, "64eb6ce57047f28fdabf69ec")
// assert.NoError(t, err, nil)
// fmt.Println(privileges)
// })
//
// bdd.Act(t, "Get Accounts", func() {
// accounts, count, err := d.AccountRepo.GetAccounts(ctx, 10, 0)
// assert.NoError(t, err, nil)
// fmt.Println(accounts)
// fmt.Println(len(accounts))
// fmt.Println(count)
// })
//
// bdd.Act(t, "Update Privilege", func() {
// priv := model.ShortPrivilege{
// PrivilegeID: "quizCnt",
// PrivilegeName: "Количество Заявок",
// Amount: 0,
// CreatedAt: time.Now(),
// }
// err := d.AccountRepo.UpdatePrivilege(ctx, &priv, "047c1109-1fba-47d8-b4ec-6ded153a2ea9")
// assert.NoError(t, err, nil)
//
// })
//
// bdd.Act(t, "Insert Privilege", func() {
// priv := model.ShortPrivilege{
// PrivilegeID: "quizCnt",
// PrivilegeName: "123",
// Amount: 123,
// CreatedAt: time.Now(),
// }
//
// err := d.AccountRepo.InsertPrivilege(ctx, &priv, "047c1109-1fba-47d8-b4ec-6ded153a2ea9")
// assert.NoError(t, err, nil)
// })
//
// bdd.Act(t, "Get Expired", func() {
//
// priv, err := d.AccountRepo.GetExpired(ctx, "quizCnt")
// fmt.Println(priv)
// assert.NoError(t, err, nil)
// })
//
// bdd.Act(t, "Delete Privilege By ID", func() {
// err := d.AccountRepo.DeletePrivilegeByID(ctx, "10")
// assert.NoError(t, err, nil)
// })
//
// bdd.Act(t, "Update Privilege Amount", func() {
// err := d.AccountRepo.UpdatePrivilegeAmount(ctx, "2", 100000)
// assert.NoError(t, err, nil)
// })
//
// bdd.Act(t, "Get Acc And Privilege By Email(userid)", func() {
// acc, priv, err := d.AccountRepo.GetAccAndPrivilegeByEmail(ctx, "650061935ad320604ff24cc2")
// fmt.Println(acc, priv)
// assert.NoError(t, err, nil)
// })
//
// bdd.Act(t, "Get Quiz Results", func() {
// now := time.Now()
//
// yearAgo := now.AddDate(-1, 0, 0)
//
// yearAhead := now.AddDate(1, 0, 0)
// ansexp, count, err := d.ResultRepo.GetQuizResults(ctx, 9422, result.GetQuizResDeps{
// To: yearAhead,
// From: yearAgo,
// New: false,
// Page: 1,
// Limit: 10,
// }, true)
// assert.NoError(t, err, nil)
// fmt.Println(ansexp)
// fmt.Println(count)
// })
//
// bdd.Act(t, "Update Answers Status", func() {
// err := d.ResultRepo.UpdateAnswersStatus(ctx, "64eb6ce57047f28fdabf69ec", []uint64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10})
// assert.NoError(t, err, nil)
// })
//
// bdd.Act(t, "Get Quiz Results CSV", func() {
// now := time.Now()
//
// yearAgo := now.AddDate(-1, 0, 0)
//
// yearAhead := now.AddDate(1, 0, 0)
// ans, err := d.ResultRepo.GetQuizResultsCSV(ctx, 14734, result.GetQuizResDeps{
// To: yearAhead,
// From: yearAgo,
// New: false,
// })
// fmt.Println(ans)
// assert.NoError(t, err, nil)
// })
//
// bdd.Act(t, "Get Questions", func() {
// ques, err := d.ResultRepo.GetQuestions(ctx, 14734)
// fmt.Println(ques)
// assert.NoError(t, err, nil)
// })
//
// bdd.Act(t, "Check Results Owner", func() {
// anss, err := d.ResultRepo.CheckResultsOwner(ctx, []int64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, "64eb6ce57047f28fdabf69ec")
// fmt.Println(anss)
// assert.NoError(t, err, nil)
// })
//
// bdd.Act(t, "Get Result Answers", func() {
// anss, err := d.ResultRepo.GetResultAnswers(ctx, 1)
// fmt.Println(anss)
// assert.NoError(t, err, nil)
// })
//
// bdd.Act(t, "Check Result Owner", func() {
// anss, err := d.ResultRepo.CheckResultOwner(ctx, 1, "64eb6ce57047f28fdabf69ec")
// assert.Equal(t, anss, true)
// assert.NoError(t, err, nil)
// })
//
// bdd.Act(t, "Soft Delete Result By ID", func() {
// err := d.ResultRepo.SoftDeleteResultByID(ctx, 10)
// assert.NoError(t, err, nil)
// })
// })
//}