From 299f73925e7dbf69e9f07f3d3d064176c999664f Mon Sep 17 00:00:00 2001 From: Alex Lushpai Date: Thu, 13 Sep 2018 23:09:26 +0300 Subject: [PATCH 1/4] orders & products --- src/routing.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/routing.go b/src/routing.go index 046cd74..ebfb1e3 100644 --- a/src/routing.go +++ b/src/routing.go @@ -507,6 +507,7 @@ func mgWebhookHandler(c *gin.Context) { ) } +<<<<<<< 01b5fb405bad7411afb6523c9308deaf25e20f6f if msg.Data.Product.Url != "" { mb += msg.Data.Product.Url } else { @@ -530,12 +531,43 @@ func mgWebhookHandler(c *gin.Context) { } } +======= + if msg.Data.Product.Img != "" { + mb = fmt.Sprintf("\n%s", msg.Data.Product.Img) + } + + } else if msg.Data.Type == v1.MsgTypeOrder { + mb = "**Заказ" + + if msg.Data.Order.Number != ""{ + mb += " " + msg.Data.Order.Number + } + + if msg.Data.Order.Date != "" { + mb += fmt.Sprintf(" (%s)", msg.Data.Order.Date) + } + + mb += "**\n" + if len(msg.Data.Order.Items) > 0 { + for _, v := range msg.Data.Order.Items { + mb += fmt.Sprintf("%s %v x %v %s\n", v.Name, v.Quantity.Value, v.Price.Value, currency[strings.ToLower(v.Price.Currency)]) + } + } + +>>>>>>> orders & products mb += fmt.Sprintf("Сумма: %v %s", msg.Data.Order.Cost.Value, currency[strings.ToLower(msg.Data.Order.Cost.Currency)]) } else { mb = msg.Data.Content } m := tgbotapi.NewMessage(cid, mb) +<<<<<<< 01b5fb405bad7411afb6523c9308deaf25e20f6f +======= + if msg.Data.Type == v1.MsgTypeProduct || msg.Data.Type == v1.MsgTypeOrder { + m.ParseMode = "Markdown" + } + +>>>>>>> orders & products if msg.Data.QuoteExternalID != "" { qid, err := strconv.Atoi(msg.Data.QuoteExternalID) if err != nil { From accd94cf51c00d14f93187d61750ca89a9ee50db Mon Sep 17 00:00:00 2001 From: Alex Lushpai Date: Thu, 13 Sep 2018 23:19:23 +0300 Subject: [PATCH 2/4] tests --- src/routing_test.go | 82 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/src/routing_test.go b/src/routing_test.go index e86ac04..cbc0fd4 100644 --- a/src/routing_test.go +++ b/src/routing_test.go @@ -53,6 +53,7 @@ func TestRouting_connectHandler(t *testing.T) { fmt.Sprintf("handler returned wrong status code: got %v want %v", rr.Code, http.StatusOK)) } +<<<<<<< 299f73925e7dbf69e9f07f3d3d064176c999664f func TestRouting_addBotHandler(t *testing.T) { defer gock.Off() @@ -132,6 +133,87 @@ func TestRouting_addBotHandler(t *testing.T) { assert.Equal(t, "123123:Qwerty", res["token"]) } +======= +// func TestRouting_addBotHandler(t *testing.T) { +// defer gock.Off() +// +// ch := v1.Channel{ +// Type: "telegram", +// Settings: v1.ChannelSettings{ +// SpamAllowed: false, +// Status: v1.Status{ +// Delivered: v1.ChannelFeatureSend, +// Read: v1.ChannelFeatureNone, +// }, +// Text: v1.ChannelSettingsText{ +// Creating: v1.ChannelFeatureBoth, +// Editing: v1.ChannelFeatureBoth, +// Quoting: v1.ChannelFeatureBoth, +// Deleting: v1.ChannelFeatureReceive, +// }, +// Product: v1.Product{ +// Creating: v1.ChannelFeatureReceive, +// Editing: v1.ChannelFeatureReceive, +// }, +// Order: v1.Order{ +// Creating: v1.ChannelFeatureReceive, +// Editing: v1.ChannelFeatureReceive, +// }, +// }, +// } +// +// outgoing, _ := json.Marshal(ch) +// p := url.Values{"url": {"https://" + config.HTTPServer.Host + "/telegram/123123:Qwerty"}} +// +// gock.New("https://api.telegram.org"). +// Post("/bot123123:Qwerty/getMe"). +// Reply(200). +// BodyString(`{"ok":true,"result":{"id":123,"is_bot":true,"first_name":"Test","username":"TestBot"}}`) +// +// gock.New("https://api.telegram.org"). +// Post("/bot123123:Qwerty/setWebhook"). +// MatchType("url"). +// BodyString(p.Encode()). +// Reply(201). +// BodyString(`{"ok":true}`) +// +// gock.New("https://api.telegram.org"). +// Post("/bot123123:Qwerty/getWebhookInfo"). +// Reply(200). +// BodyString(`{"ok":true,"result":{"url":"https://` + config.HTTPServer.Host + `/telegram/123123:Qwerty","has_custom_certificate":false,"pending_update_count":0}}`) +// +// gock.New("https://test.retailcrm.pro"). +// Post("/api/transport/v1/channels"). +// JSON([]byte(outgoing)). +// MatchHeader("Content-Type", "application/json"). +// MatchHeader("X-Transport-Token", "test-token"). +// Reply(201). +// BodyString(`{"id": 1}`) +// +// req, err := http.NewRequest("POST", "/add-bot/", strings.NewReader(`{"token": "123123:Qwerty", "connectionId": 1}`)) +// if err != nil { +// t.Fatal(err) +// } +// rr := httptest.NewRecorder() +// router.ServeHTTP(rr, req) +// require.Equal(t, http.StatusCreated, rr.Code, +// fmt.Sprintf("handler returned wrong status code: got %v want %v", rr.Code, http.StatusCreated)) +// +// bytes, err := ioutil.ReadAll(rr.Body) +// if err != nil { +// t.Fatal(err) +// } +// +// var res map[string]interface{} +// +// err = json.Unmarshal(bytes, &res) +// if err != nil { +// t.Fatal(err) +// } +// +// assert.Equal(t, "123123:Qwerty", res["token"]) +// } +>>>>>>> tests func TestRouting_deleteBotHandler(t *testing.T) { defer gock.Off() From 286591e98eed902aac1cc7f6cf2f7b64262e2e5a Mon Sep 17 00:00:00 2001 From: Alex Lushpai Date: Thu, 13 Sep 2018 23:25:23 +0300 Subject: [PATCH 3/4] test --- src/routing_test.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/routing_test.go b/src/routing_test.go index cbc0fd4..3d5c46d 100644 --- a/src/routing_test.go +++ b/src/routing_test.go @@ -1,9 +1,7 @@ package main import ( - "encoding/json" "fmt" - "io/ioutil" "net/http" "net/http/httptest" "net/url" @@ -15,7 +13,6 @@ import ( "github.com/h2non/gock" "github.com/retailcrm/mg-transport-api-client-go/v1" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) var router *gin.Engine From cc6407c000e1a3bf745fda7dca54527649a6070b Mon Sep 17 00:00:00 2001 From: Alex Lushpai Date: Wed, 19 Sep 2018 16:34:13 +0300 Subject: [PATCH 4/4] update for order & products, minor fixes --- Jenkinsfile | 1 - Makefile | 2 +- src/routing.go | 32 ----------------- src/routing_test.go | 85 ++------------------------------------------- 4 files changed, 4 insertions(+), 116 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 8906707..89489b7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -17,7 +17,6 @@ pipeline { steps { sh 'cp config_test.yml.dist config_test.yml' compose 'up -d --build postgres_test' - compose 'run --rm mg_telegram_test make migrate_test' } } diff --git a/Makefile b/Makefile index f8a1515..0630871 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ test: deps fmt @echo "==> Running tests" @cd $(ROOT_DIR) && go test ./... -v -cpu 2 -jenkins_test: deps +jenkins_test: migrate_test @echo "==> Running tests (result in test-report.xml)" @go get -v -u github.com/jstemmer/go-junit-report @go test ./... -v -cpu 2 -race | /go/bin/go-junit-report -set-exit-code > ./test-report.xml diff --git a/src/routing.go b/src/routing.go index ebfb1e3..046cd74 100644 --- a/src/routing.go +++ b/src/routing.go @@ -507,7 +507,6 @@ func mgWebhookHandler(c *gin.Context) { ) } -<<<<<<< 01b5fb405bad7411afb6523c9308deaf25e20f6f if msg.Data.Product.Url != "" { mb += msg.Data.Product.Url } else { @@ -531,43 +530,12 @@ func mgWebhookHandler(c *gin.Context) { } } -======= - if msg.Data.Product.Img != "" { - mb = fmt.Sprintf("\n%s", msg.Data.Product.Img) - } - - } else if msg.Data.Type == v1.MsgTypeOrder { - mb = "**Заказ" - - if msg.Data.Order.Number != ""{ - mb += " " + msg.Data.Order.Number - } - - if msg.Data.Order.Date != "" { - mb += fmt.Sprintf(" (%s)", msg.Data.Order.Date) - } - - mb += "**\n" - if len(msg.Data.Order.Items) > 0 { - for _, v := range msg.Data.Order.Items { - mb += fmt.Sprintf("%s %v x %v %s\n", v.Name, v.Quantity.Value, v.Price.Value, currency[strings.ToLower(v.Price.Currency)]) - } - } - ->>>>>>> orders & products mb += fmt.Sprintf("Сумма: %v %s", msg.Data.Order.Cost.Value, currency[strings.ToLower(msg.Data.Order.Cost.Currency)]) } else { mb = msg.Data.Content } m := tgbotapi.NewMessage(cid, mb) -<<<<<<< 01b5fb405bad7411afb6523c9308deaf25e20f6f -======= - if msg.Data.Type == v1.MsgTypeProduct || msg.Data.Type == v1.MsgTypeOrder { - m.ParseMode = "Markdown" - } - ->>>>>>> orders & products if msg.Data.QuoteExternalID != "" { qid, err := strconv.Atoi(msg.Data.QuoteExternalID) if err != nil { diff --git a/src/routing_test.go b/src/routing_test.go index 3d5c46d..e86ac04 100644 --- a/src/routing_test.go +++ b/src/routing_test.go @@ -1,7 +1,9 @@ package main import ( + "encoding/json" "fmt" + "io/ioutil" "net/http" "net/http/httptest" "net/url" @@ -13,6 +15,7 @@ import ( "github.com/h2non/gock" "github.com/retailcrm/mg-transport-api-client-go/v1" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) var router *gin.Engine @@ -50,7 +53,6 @@ func TestRouting_connectHandler(t *testing.T) { fmt.Sprintf("handler returned wrong status code: got %v want %v", rr.Code, http.StatusOK)) } -<<<<<<< 299f73925e7dbf69e9f07f3d3d064176c999664f func TestRouting_addBotHandler(t *testing.T) { defer gock.Off() @@ -130,87 +132,6 @@ func TestRouting_addBotHandler(t *testing.T) { assert.Equal(t, "123123:Qwerty", res["token"]) } -======= -// func TestRouting_addBotHandler(t *testing.T) { -// defer gock.Off() -// -// ch := v1.Channel{ -// Type: "telegram", -// Settings: v1.ChannelSettings{ -// SpamAllowed: false, -// Status: v1.Status{ -// Delivered: v1.ChannelFeatureSend, -// Read: v1.ChannelFeatureNone, -// }, -// Text: v1.ChannelSettingsText{ -// Creating: v1.ChannelFeatureBoth, -// Editing: v1.ChannelFeatureBoth, -// Quoting: v1.ChannelFeatureBoth, -// Deleting: v1.ChannelFeatureReceive, -// }, -// Product: v1.Product{ -// Creating: v1.ChannelFeatureReceive, -// Editing: v1.ChannelFeatureReceive, -// }, -// Order: v1.Order{ -// Creating: v1.ChannelFeatureReceive, -// Editing: v1.ChannelFeatureReceive, -// }, -// }, -// } -// -// outgoing, _ := json.Marshal(ch) -// p := url.Values{"url": {"https://" + config.HTTPServer.Host + "/telegram/123123:Qwerty"}} -// -// gock.New("https://api.telegram.org"). -// Post("/bot123123:Qwerty/getMe"). -// Reply(200). -// BodyString(`{"ok":true,"result":{"id":123,"is_bot":true,"first_name":"Test","username":"TestBot"}}`) -// -// gock.New("https://api.telegram.org"). -// Post("/bot123123:Qwerty/setWebhook"). -// MatchType("url"). -// BodyString(p.Encode()). -// Reply(201). -// BodyString(`{"ok":true}`) -// -// gock.New("https://api.telegram.org"). -// Post("/bot123123:Qwerty/getWebhookInfo"). -// Reply(200). -// BodyString(`{"ok":true,"result":{"url":"https://` + config.HTTPServer.Host + `/telegram/123123:Qwerty","has_custom_certificate":false,"pending_update_count":0}}`) -// -// gock.New("https://test.retailcrm.pro"). -// Post("/api/transport/v1/channels"). -// JSON([]byte(outgoing)). -// MatchHeader("Content-Type", "application/json"). -// MatchHeader("X-Transport-Token", "test-token"). -// Reply(201). -// BodyString(`{"id": 1}`) -// -// req, err := http.NewRequest("POST", "/add-bot/", strings.NewReader(`{"token": "123123:Qwerty", "connectionId": 1}`)) -// if err != nil { -// t.Fatal(err) -// } -// rr := httptest.NewRecorder() -// router.ServeHTTP(rr, req) -// require.Equal(t, http.StatusCreated, rr.Code, -// fmt.Sprintf("handler returned wrong status code: got %v want %v", rr.Code, http.StatusCreated)) -// -// bytes, err := ioutil.ReadAll(rr.Body) -// if err != nil { -// t.Fatal(err) -// } -// -// var res map[string]interface{} -// -// err = json.Unmarshal(bytes, &res) -// if err != nil { -// t.Fatal(err) -// } -// -// assert.Equal(t, "123123:Qwerty", res["token"]) -// } ->>>>>>> tests func TestRouting_deleteBotHandler(t *testing.T) { defer gock.Off()