package tests import ( "context" _ "embed" "encoding/json" "fmt" "github.com/gofiber/fiber/v2" "github.com/pioz/faker" "github.com/stretchr/testify/assert" "io/ioutil" "os" "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/clients" "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal" "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" "penahub.gitlab.yandexcloud.net/backend/quiz/worker/internal/answerwc" senders2 "penahub.gitlab.yandexcloud.net/backend/quiz/worker/internal/senders" "strings" "testing" "time" ) //go:embed mail/to_client.tmpl var toClientTemplate string //go:embed mail/reminder.tmpl var reminderTemplate string //go:embed mail/client_tg.tmpl var tgClientTemplate string func TestProcessMessageToSMTP(t *testing.T) { clientDeps := clients.Deps{ SmtpHost: "connect.mailclient.bz", SmtpPort: "587", SmtpSender: "skeris@mailing.pena.digital", ApiKey: "P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev", SmtpApiUrl: "https://api.smtp.bz/v1/smtp/send", FiberClient: &fiber.Client{}, } client := clients.NewSmtpClient(clientDeps) recipient := "pashamullin2001@gmail.com" subject := "Test" data := senders2.TemplateData{ QuizConfig: model.ResultInfo{ Theme: "

Taemplste Quiz

", }, AnswerContent: model.ResultContent{ Name: "Pasha", Phone: "
+723456789@test
", Wechat: "test_wechat", Viber: "+723456789", Vk: "test_vk", Skype: "test_skype", Whatsup: "test_whatsup", Messenger: "test_messenger", }, AllAnswers: []model.ResultAnswer{ {AnswerID: 1, QuestionID: 1, Content: "https://www.google.com/search?sca_esv=c51a80de1a7d45f0&sxsrf=ACQVn08xG-a0eH1Vds246-fONoSvvjzVMw:1707762485524&q=ku,n&tbm=isch&source=lnms&sa=X&ved=2ahUKEwi7ub2Ct6aEAxVVb_UHHQIQBVoQ0pQJegQIDRAB&biw=1536&bih=703&dpr=1.25#imgrc=0PWwTuuH2uBQ3M|html", CreatedAt: time.Now()}, {AnswerID: 2, QuestionID: 2, Content: "From a friend", CreatedAt: time.Now()}, {AnswerID: 3, QuestionID: 3, Content: "From a friend", CreatedAt: time.Now()}, {AnswerID: 4, QuestionID: 4, Content: `{"Image":"https://letsenhance.io/static/8f5e523ee6b2479e26ecc91b9c25261e/1015f/MainAfter.jpg","Description":"Gekon"}`, CreatedAt: time.Now()}, }, QuestionsMap: map[uint64]string{ 1: "?", 2: "How did you hear about us?", 3: "que 3", 4: "que 4", }, AnswerTime: time.Now().Format("Monday, 2 January 2006 г., 15:04 UTC-07:00"), } mailSender := senders2.NewMailLeadSender(client) err := mailSender.SendMailWithAttachment(recipient, subject, toClientTemplate, data, nil) if err != nil { t.Errorf("Error sending email: %v", err) } } func TestProcessReminderToClient(t *testing.T) { clientDeps := clients.Deps{ SmtpHost: "connect.mailclient.bz", SmtpPort: "587", SmtpSender: "skeris@mailing.pena.digital", ApiKey: "P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev", FiberClient: &fiber.Client{}, } client := clients.NewSmtpClient(clientDeps) recipient := "mullinp@internet.ru" subject := "Test Reminder" quizConfig := model.ResultInfo{ ReplName: "Test Quiz", Reply: "mullinp@internet.ru", Theme: "Reminder Theme", } mailSender := senders2.NewMailLeadSender(client) err := mailSender.SendMailWithAttachment(recipient, subject, reminderTemplate, senders2.TemplateData{ QuizConfig: quizConfig, AnswerContent: model.ResultContent{}, AllAnswers: []model.ResultAnswer{}, QuestionsMap: nil, }, nil) if err != nil { t.Errorf("Error sending email: %v", err) } } func TestProcessMessageToClient(t *testing.T) { smtpData := clients.Deps{ SmtpApiUrl: "https://api.smtp.bz/v1/smtp/send", SmtpHost: "connect.mailclient.bz", SmtpPort: "587", SmtpSender: "skeris@mailing.pena.digital", ApiKey: "P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev", FiberClient: &fiber.Client{}, } mailClient := clients.NewSmtpClient(smtpData) mailSender := senders2.NewMailLeadSender(mailClient) tgSender, err := senders2.NewTgSender("6712573453:AAFqTOsgwe_j48ZQ1GzWKQDT5Nwr-SAWjz8") assert.NoError(t, err) ctx := context.Background() repo, err := dal.New(ctx, "host=localhost port=35432 user=squiz password=Redalert2 dbname=squiz sslmode=disable", nil) assert.NoError(t, err) deps := answerwc.DepsSendToClient{ Redis: nil, Dal: repo, LeadSenders: []senders2.LeadSender{mailSender, tgSender}, CustomerService: nil, } errChan := make(chan<- error) w := answerwc.NewSendToClient(deps, errChan) quizConfig := model.QuizConfig{ Mailing: model.ResultInfo{ Theme: faker.String(), }, } questionsMap := map[uint64]string{ 1: faker.String(), 2: faker.String(), } account := model.Account{ UserID: "64f2cd7a7047f28fdabf6d9e", } file, err := os.Open("img_contents.json") if err != nil { fmt.Println("Failed to open file", err) return } defer file.Close() bytes, err := ioutil.ReadAll(file) if err != nil { fmt.Println("Failed to read file", err) return } var items []model.ImageContent err = json.Unmarshal(bytes, &items) if err != nil { fmt.Println("Failed to unmarshal JSON:", err) return } fmt.Println(len(items)) allAnswers := []model.ResultAnswer{ { Content: "", AnswerID: 2, QuestionID: 2, }, } answersIMG := model.ResultAnswer{ Content: "", AnswerID: 1, QuestionID: 1, } var imageLinks []string for _, item := range items { str, err := json.Marshal(item) if err != nil { fmt.Println("error marshal item to str:", err) return } imageLinks = append(imageLinks, fmt.Sprintf("`%s`", string(str))) } fmt.Println(len(imageLinks)) answersIMG.Content = strings.Join(imageLinks, ",") allAnswers = append(allAnswers, answersIMG) answerContent := model.ResultContent{ Name: "Pasha", Phone: "+723456789", Email: "test@example.com", //Adress: "chtoto tam", Telegram: "@test", Wechat: "test_wechat", Viber: "+723456789", Vk: "test_vk", Skype: "test_skype", Whatsup: "test_whatsup", Messenger: "test_messenger", } answerTime := time.Now() err = w.ProcessMessageToClient(ctx, answerwc.DepsProcessMsgToClient{ QuizConfig: quizConfig, QuestionsMap: questionsMap, Account: account, AllAnswers: allAnswers, AnswerContent: answerContent, AnswerTime: answerTime, Quiz: &model.Quiz{ Id: 26324, AccountId: "64f2cd7a7047f28fdabf6d9e", }, }) err = w.ProcessReminderToClient(ctx, account, model.QuizConfig{ Mailing: model.ResultInfo{ When: "email", Theme: fmt.Sprintf("не удалось отправить заявку по опросу\"%s\"", "test"), Reply: "noreply@pena.digital", ReplName: "Reminder", }, }, &model.Quiz{ Id: 26324, AccountId: "64f2cd7a7047f28fdabf6d9e", }) assert.NoError(t, err) } //func TestManyImg(t *testing.T) { // smtpData := clients.Deps{ // SmtpApiUrl: "https://api.smtp.bz/v1/smtp/send", // SmtpHost: "connect.mailclient.bz", // SmtpPort: "587", // SmtpSender: "skeris@mailing.pena.digital", // ApiKey: "P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev", // FiberClient: &fiber.Client{}, // } // // mailClient := clients.NewSmtpClient(smtpData) // mailSender := senders.NewMailLeadSender(mailClient) // tgSender, err := senders.NewTgSender("6712573453:AAFqTOsgwe_j48ZQ1GzWKQDT5Nwr-SAWjz8") // assert.NoError(t, err) // // ctx := context.Background() // // repo, err := dal.New(ctx, "host=localhost port=35432 user=squiz password=Redalert2 dbname=squiz sslmode=disable", nil) // assert.NoError(t, err) // // deps := answerwc.DepsSendToClient{ // Redis: nil, // Dal: repo, // LeadSenders: []senders.LeadSender{mailSender, tgSender}, // CustomerService: nil, // } // // errChan := make(chan<- error) // // w := answerwc.NewSendToClient(deps, errChan) //}