2024-03-27 15:29:50 +00:00
|
|
|
|
package tests
|
|
|
|
|
|
|
|
|
|
import (
|
2024-06-24 15:46:00 +00:00
|
|
|
|
"context"
|
2024-03-27 15:29:50 +00:00
|
|
|
|
_ "embed"
|
2024-09-17 10:34:07 +00:00
|
|
|
|
"encoding/json"
|
2024-06-24 15:46:00 +00:00
|
|
|
|
"fmt"
|
2025-02-24 17:58:46 +00:00
|
|
|
|
"gitea.pena/SQuiz/common/clients"
|
|
|
|
|
"gitea.pena/SQuiz/common/dal"
|
|
|
|
|
"gitea.pena/SQuiz/common/model"
|
|
|
|
|
"gitea.pena/SQuiz/worker/internal/answerwc"
|
|
|
|
|
senders2 "gitea.pena/SQuiz/worker/internal/senders"
|
2024-03-27 15:29:50 +00:00
|
|
|
|
"github.com/gofiber/fiber/v2"
|
2024-06-24 15:46:00 +00:00
|
|
|
|
"github.com/pioz/faker"
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
2024-10-21 21:06:02 +00:00
|
|
|
|
"io/ioutil"
|
|
|
|
|
"os"
|
|
|
|
|
"strings"
|
2024-03-27 15:29:50 +00:00
|
|
|
|
"testing"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
//go:embed mail/to_client.tmpl
|
|
|
|
|
var toClientTemplate string
|
|
|
|
|
|
|
|
|
|
//go:embed mail/reminder.tmpl
|
|
|
|
|
var reminderTemplate string
|
|
|
|
|
|
2024-07-04 20:23:12 +00:00
|
|
|
|
//go:embed mail/client_tg.tmpl
|
|
|
|
|
var tgClientTemplate string
|
|
|
|
|
|
2024-03-27 15:29:50 +00:00
|
|
|
|
func TestProcessMessageToSMTP(t *testing.T) {
|
2024-06-24 10:31:08 +00:00
|
|
|
|
clientDeps := clients.Deps{
|
|
|
|
|
SmtpHost: "connect.mailclient.bz",
|
|
|
|
|
SmtpPort: "587",
|
|
|
|
|
SmtpSender: "skeris@mailing.pena.digital",
|
2024-03-27 15:29:50 +00:00
|
|
|
|
ApiKey: "P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev",
|
2024-06-17 15:23:43 +00:00
|
|
|
|
SmtpApiUrl: "https://api.smtp.bz/v1/smtp/send",
|
2024-03-27 15:29:50 +00:00
|
|
|
|
FiberClient: &fiber.Client{},
|
|
|
|
|
}
|
|
|
|
|
|
2024-06-24 10:31:08 +00:00
|
|
|
|
client := clients.NewSmtpClient(clientDeps)
|
2024-03-27 15:29:50 +00:00
|
|
|
|
|
2024-03-28 12:03:41 +00:00
|
|
|
|
recipient := "pashamullin2001@gmail.com"
|
2024-03-27 15:29:50 +00:00
|
|
|
|
subject := "Test"
|
|
|
|
|
|
2024-11-03 11:20:52 +00:00
|
|
|
|
data := senders2.TemplateData{
|
2024-03-27 15:29:50 +00:00
|
|
|
|
QuizConfig: model.ResultInfo{
|
2024-03-28 12:03:41 +00:00
|
|
|
|
Theme: "<h1>Taemplste Quiz</h1>",
|
2024-03-27 15:29:50 +00:00
|
|
|
|
},
|
|
|
|
|
AnswerContent: model.ResultContent{
|
2024-03-28 12:03:41 +00:00
|
|
|
|
Name: "<a>Pasha</a>",
|
|
|
|
|
Phone: "<div>+723456789<div",
|
2024-03-27 15:29:50 +00:00
|
|
|
|
Email: "test@example.com",
|
|
|
|
|
//Adress: "chtoto tam",
|
2024-03-28 12:03:41 +00:00
|
|
|
|
Telegram: "<br>@test</br>",
|
|
|
|
|
Wechat: "<span>test_wechat</span>",
|
|
|
|
|
Viber: "<span><span>+723456789</span></span>",
|
|
|
|
|
Vk: "<body>test_vk<body>",
|
2024-03-27 15:29:50 +00:00
|
|
|
|
Skype: "test_skype",
|
|
|
|
|
Whatsup: "test_whatsup",
|
|
|
|
|
Messenger: "test_messenger",
|
|
|
|
|
},
|
|
|
|
|
AllAnswers: []model.ResultAnswer{
|
2024-03-28 12:03:41 +00:00
|
|
|
|
{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()},
|
2024-03-27 15:29:50 +00:00
|
|
|
|
},
|
|
|
|
|
QuestionsMap: map[uint64]string{
|
2024-03-28 12:03:41 +00:00
|
|
|
|
1: "?",
|
2024-03-27 15:29:50 +00:00
|
|
|
|
2: "How did you hear about us?",
|
2024-03-28 12:03:41 +00:00
|
|
|
|
3: "que 3",
|
|
|
|
|
4: "que 4",
|
2024-03-27 15:29:50 +00:00
|
|
|
|
},
|
|
|
|
|
AnswerTime: time.Now().Format("Monday, 2 January 2006 г., 15:04 UTC-07:00"),
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-03 11:20:52 +00:00
|
|
|
|
mailSender := senders2.NewMailLeadSender(client)
|
2024-06-24 10:31:08 +00:00
|
|
|
|
err := mailSender.SendMailWithAttachment(recipient, subject, toClientTemplate, data, nil)
|
2024-03-27 15:29:50 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("Error sending email: %v", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestProcessReminderToClient(t *testing.T) {
|
2024-06-24 10:31:08 +00:00
|
|
|
|
clientDeps := clients.Deps{
|
|
|
|
|
SmtpHost: "connect.mailclient.bz",
|
|
|
|
|
SmtpPort: "587",
|
|
|
|
|
SmtpSender: "skeris@mailing.pena.digital",
|
2024-03-27 15:29:50 +00:00
|
|
|
|
ApiKey: "P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev",
|
|
|
|
|
FiberClient: &fiber.Client{},
|
|
|
|
|
}
|
|
|
|
|
|
2024-06-24 10:31:08 +00:00
|
|
|
|
client := clients.NewSmtpClient(clientDeps)
|
2024-03-27 15:29:50 +00:00
|
|
|
|
|
|
|
|
|
recipient := "mullinp@internet.ru"
|
|
|
|
|
subject := "Test Reminder"
|
|
|
|
|
|
|
|
|
|
quizConfig := model.ResultInfo{
|
|
|
|
|
ReplName: "Test Quiz",
|
|
|
|
|
Reply: "mullinp@internet.ru",
|
|
|
|
|
Theme: "Reminder Theme",
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-03 11:20:52 +00:00
|
|
|
|
mailSender := senders2.NewMailLeadSender(client)
|
2024-06-24 10:31:08 +00:00
|
|
|
|
|
2024-11-03 11:20:52 +00:00
|
|
|
|
err := mailSender.SendMailWithAttachment(recipient, subject, reminderTemplate, senders2.TemplateData{
|
2024-03-27 15:29:50 +00:00
|
|
|
|
QuizConfig: quizConfig,
|
|
|
|
|
AnswerContent: model.ResultContent{},
|
|
|
|
|
AllAnswers: []model.ResultAnswer{},
|
|
|
|
|
QuestionsMap: nil,
|
|
|
|
|
}, nil)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("Error sending email: %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-06-24 15:46:00 +00:00
|
|
|
|
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)
|
2024-11-03 11:20:52 +00:00
|
|
|
|
mailSender := senders2.NewMailLeadSender(mailClient)
|
|
|
|
|
tgSender, err := senders2.NewTgSender("6712573453:AAFqTOsgwe_j48ZQ1GzWKQDT5Nwr-SAWjz8")
|
2024-07-16 14:35:02 +00:00
|
|
|
|
assert.NoError(t, err)
|
2024-06-24 15:46:00 +00:00
|
|
|
|
|
|
|
|
|
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,
|
2024-11-03 11:20:52 +00:00
|
|
|
|
LeadSenders: []senders2.LeadSender{mailSender, tgSender},
|
2024-06-24 15:46:00 +00:00
|
|
|
|
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",
|
|
|
|
|
}
|
|
|
|
|
|
2024-10-21 21:06:02 +00:00
|
|
|
|
file, err := os.Open("img_contents.json")
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("Failed to open file", err)
|
|
|
|
|
return
|
2024-09-17 10:34:07 +00:00
|
|
|
|
}
|
2024-10-21 21:06:02 +00:00
|
|
|
|
defer file.Close()
|
2024-09-17 10:34:07 +00:00
|
|
|
|
|
2024-10-21 21:06:02 +00:00
|
|
|
|
bytes, err := ioutil.ReadAll(file)
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("Failed to read file", err)
|
|
|
|
|
return
|
2024-09-17 10:34:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
2024-10-21 21:06:02 +00:00
|
|
|
|
var items []model.ImageContent
|
|
|
|
|
err = json.Unmarshal(bytes, &items)
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("Failed to unmarshal JSON:", err)
|
|
|
|
|
return
|
2024-09-17 10:34:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
2024-10-21 21:06:02 +00:00
|
|
|
|
fmt.Println(len(items))
|
2024-09-17 10:34:07 +00:00
|
|
|
|
|
2024-06-24 15:46:00 +00:00
|
|
|
|
allAnswers := []model.ResultAnswer{
|
|
|
|
|
{
|
|
|
|
|
Content: "",
|
|
|
|
|
AnswerID: 2,
|
|
|
|
|
QuestionID: 2,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
2024-10-21 21:06:02 +00:00
|
|
|
|
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)
|
2024-09-17 10:34:07 +00:00
|
|
|
|
|
2024-06-24 15:46:00 +00:00
|
|
|
|
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{
|
2024-07-16 14:35:02 +00:00
|
|
|
|
Id: 26324,
|
2024-06-24 15:46:00 +00:00
|
|
|
|
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{
|
2024-07-16 14:35:02 +00:00
|
|
|
|
Id: 26324,
|
2024-06-24 15:46:00 +00:00
|
|
|
|
AccountId: "64f2cd7a7047f28fdabf6d9e",
|
|
|
|
|
})
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
}
|
2024-10-21 21:06:02 +00:00
|
|
|
|
|
|
|
|
|
//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)
|
|
|
|
|
//}
|