Skip to content

Commit

Permalink
#2: Add more tests with err covs
Browse files Browse the repository at this point in the history
  • Loading branch information
arthurkushman committed Aug 24, 2022
1 parent bc84f86 commit 7d58880
Showing 1 changed file with 47 additions and 0 deletions.
47 changes: 47 additions & 0 deletions intl_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package intl

import (
"encoding/json"
"errors"
"testing"

Expand Down Expand Up @@ -41,6 +42,7 @@ func TestIntl_Translate(t *testing.T) {
lang: "fr-FR",
delivery: &Delivery{Date: "demain", Price: 123},
msg: "Bonjour, votre date de livraison est le demain et le prix est le 123",
err: nil,
},
"ok empty translation": {
before: func(i *Intl) {
Expand All @@ -54,6 +56,7 @@ func TestIntl_Translate(t *testing.T) {
lang: "fr-FR",
delivery: &Delivery{Date: "tomorrow", Price: 123},
msg: "Hi, your delivery date is tomorrow and a price is 123",
err: nil,
},
"ok with changed table names": {
before: func(i *Intl) {
Expand All @@ -68,6 +71,21 @@ func TestIntl_Translate(t *testing.T) {
lang: "fr-FR",
delivery: &Delivery{Date: "demain", Price: 123},
msg: "Bonjour, votre date de livraison est le demain et le prix est le 123",
err: nil,
},
"template: translate:1: unexpected ": {
before: func(i *Intl) {
mock.ExpectQuery("SELECT .*").
WithArgs("delivery.datetime.price", "fr-FR").
WillReturnRows(sqlmock.NewRows([]string{"message", "translation", "localize_config", "localize_config"}).
AddRow("Hi, your delivery date is {{.Date}} and a price is {{.Price}}",
"Bonjour, votre date de livraison est le {{{.Date}} et le prix est le {{.Price}}", "", ""))
},
key: "delivery.datetime.price",
lang: "fr-FR",
delivery: &Delivery{Date: "demain", Price: 123},
msg: "Bonjour, votre date de livraison est le demain et le prix est le 123",
err: errors.New("template: translate:1: unexpected \"{\" in command"),
},
"err sql: no rows in result set": {
before: func(i *Intl) {
Expand Down Expand Up @@ -105,6 +123,12 @@ func TestIntl_TranslatePlural(t *testing.T) {
}
defer db.Close()

var v interface{}
jsonErr := json.Unmarshal([]byte(`{{\"DefaultMessage\": {\"ID\": \"Delivery\", \"One\": \"Bonjour, votre date de livraison est le "+
"{{.Date}} et le prix est le {{.Price}}\", \"Other\": \"Bonjour, votre date de livraison est le "+
"{{.Date}} many et le prix est le {{.Price}} many\"}, \"TemplateData\": {\"Date\": \"demain\", \"Price\": 123}, "+
"\"PluralCount\": 2}`), &v)

var tests = map[string]struct {
before func(i *Intl)
key string
Expand All @@ -131,6 +155,28 @@ func TestIntl_TranslatePlural(t *testing.T) {
key: "delivery.datetime.price",
lang: "fr-FR",
msg: "Bonjour, votre date de livraison est le demain many et le prix est le 123 many",
err: nil,
},
"err": {
before: func(i *Intl) {
mock.ExpectQuery("SELECT .*").
WithArgs("delivery.datetime.price", "fr-FR").
WillReturnRows(sqlmock.NewRows([]string{"message", "translation", "localize_config", "localize_config"}).
AddRow("Hi, your delivery date is {{.Date}} and a price is {{.Price}}",
"Bonjour, votre date de livraison est le {{.Date}} et le prix est le {{.Price}}",
"{\"DefaultMessage\": {\"ID\": \"Delivery\", \"One\": \"Bonjour, votre date de livraison est le "+
"{{.Date}} et le prix est le {{.Price}}\", \"Other\": \"Bonjour, votre date de livraison est le "+
"{{.Date}} many et le prix est le {{.Price}} many\"}, \"TemplateData\": {\"Date\": \"demain\", \"Price\": 123}, "+
"\"PluralCount\": 2}",
"{{\"DefaultMessage\": {\"ID\": \"Delivery\", \"One\": \"Bonjour, votre date de livraison est le "+
"{{.Date}} et le prix est le {{.Price}}\", \"Other\": \"Bonjour, votre date de livraison est le "+
"{{.Date}} many et le prix est le {{.Price}} many\"}, \"TemplateData\": {\"Date\": \"demain\", \"Price\": 123}, "+
"\"PluralCount\": 2}"))
},
key: "delivery.datetime.price",
lang: "fr-FR",
msg: "Bonjour, votre date de livraison est le demain many et le prix est le 123 many",
err: jsonErr,
},
"ok empty 2nd localize_config": {
before: func(i *Intl) {
Expand All @@ -147,6 +193,7 @@ func TestIntl_TranslatePlural(t *testing.T) {
key: "delivery.datetime.price",
lang: "fr-FR",
msg: "Bonjour, votre date de livraison est le demain many et le prix est le 123 many",
err: nil,
},
"err sql: no rows in result set": {
before: func(i *Intl) {
Expand Down

0 comments on commit 7d58880

Please sign in to comment.