[MM-47560]: In-product: Add support for new fields (back-end and front-end)

Этот коммит содержится в:
emmyni
2022-10-24 13:34:38 -04:00
коммит произвёл GitHub
родитель 3ea6247ec1 532a3c1f22
Коммит 679c23d235
3 изменённых файлов: 39 добавлений и 26 удалений

Просмотреть файл

@@ -515,8 +515,9 @@ func TestGetCloudProducts(t *testing.T) {
SKU: "sku", SKU: "sku",
PriceID: "price_id", PriceID: "price_id",
Family: "family", Family: "family",
RecurringInterval: "recurring_interval", RecurringInterval: "monthly",
BillingScheme: "billing_scheme", BillingScheme: "billing_scheme",
CrossSellsTo: "",
}, },
{ {
ID: "prod_test2", ID: "prod_test2",
@@ -526,8 +527,9 @@ func TestGetCloudProducts(t *testing.T) {
SKU: "sku2", SKU: "sku2",
PriceID: "price_id2", PriceID: "price_id2",
Family: "family2", Family: "family2",
RecurringInterval: "recurring_interval2", RecurringInterval: "monthly",
BillingScheme: "billing_scheme2", BillingScheme: "billing_scheme2",
CrossSellsTo: "prod_test3",
}, },
{ {
ID: "prod_test3", ID: "prod_test3",
@@ -537,29 +539,36 @@ func TestGetCloudProducts(t *testing.T) {
SKU: "sku3", SKU: "sku3",
PriceID: "price_id3", PriceID: "price_id3",
Family: "family3", Family: "family3",
RecurringInterval: "recurring_interval3", RecurringInterval: "yearly",
BillingScheme: "billing_scheme3", BillingScheme: "billing_scheme3",
CrossSellsTo: "prod_test2",
}, },
} }
sanitizedProducts := []*model.Product{ sanitizedProducts := []*model.Product{
{ {
ID: "prod_test1", ID: "prod_test1",
Name: "name", Name: "name",
PricePerSeat: 10, PricePerSeat: 10,
SKU: "sku", SKU: "sku",
RecurringInterval: "monthly",
CrossSellsTo: "",
}, },
{ {
ID: "prod_test2", ID: "prod_test2",
Name: "name2", Name: "name2",
PricePerSeat: 100, PricePerSeat: 100,
SKU: "sku2", SKU: "sku2",
RecurringInterval: "monthly",
CrossSellsTo: "prod_test3",
}, },
{ {
ID: "prod_test3", ID: "prod_test3",
Name: "name3", Name: "name3",
PricePerSeat: 1000, PricePerSeat: 1000,
SKU: "sku3", SKU: "sku3",
RecurringInterval: "yearly",
CrossSellsTo: "prod_test2",
}, },
} }
t.Run("get products for admins", func(t *testing.T) { t.Run("get products for admins", func(t *testing.T) {
@@ -615,8 +624,9 @@ func TestGetCloudProducts(t *testing.T) {
require.Equal(t, returnedProducts[0].Description, "") require.Equal(t, returnedProducts[0].Description, "")
require.Equal(t, returnedProducts[0].PriceID, "") require.Equal(t, returnedProducts[0].PriceID, "")
require.Equal(t, returnedProducts[0].Family, model.SubscriptionFamily("")) require.Equal(t, returnedProducts[0].Family, model.SubscriptionFamily(""))
require.Equal(t, returnedProducts[0].RecurringInterval, model.RecurringInterval("")) require.Equal(t, returnedProducts[0].RecurringInterval, model.RecurringInterval("monthly"))
require.Equal(t, returnedProducts[0].BillingScheme, model.BillingScheme("")) require.Equal(t, returnedProducts[0].BillingScheme, model.BillingScheme(""))
require.Equal(t, returnedProducts[0].CrossSellsTo, "")
require.Equal(t, returnedProducts[1].ID, "prod_test2") require.Equal(t, returnedProducts[1].ID, "prod_test2")
require.Equal(t, returnedProducts[1].Name, "name2") require.Equal(t, returnedProducts[1].Name, "name2")
@@ -625,8 +635,9 @@ func TestGetCloudProducts(t *testing.T) {
require.Equal(t, returnedProducts[1].Description, "") require.Equal(t, returnedProducts[1].Description, "")
require.Equal(t, returnedProducts[1].PriceID, "") require.Equal(t, returnedProducts[1].PriceID, "")
require.Equal(t, returnedProducts[1].Family, model.SubscriptionFamily("")) require.Equal(t, returnedProducts[1].Family, model.SubscriptionFamily(""))
require.Equal(t, returnedProducts[1].RecurringInterval, model.RecurringInterval("")) require.Equal(t, returnedProducts[1].RecurringInterval, model.RecurringInterval("monthly"))
require.Equal(t, returnedProducts[1].BillingScheme, model.BillingScheme("")) require.Equal(t, returnedProducts[1].BillingScheme, model.BillingScheme(""))
require.Equal(t, returnedProducts[1].CrossSellsTo, "prod_test3")
require.Equal(t, returnedProducts[2].ID, "prod_test3") require.Equal(t, returnedProducts[2].ID, "prod_test3")
require.Equal(t, returnedProducts[2].Name, "name3") require.Equal(t, returnedProducts[2].Name, "name3")
@@ -635,7 +646,8 @@ func TestGetCloudProducts(t *testing.T) {
require.Equal(t, returnedProducts[2].Description, "") require.Equal(t, returnedProducts[2].Description, "")
require.Equal(t, returnedProducts[2].PriceID, "") require.Equal(t, returnedProducts[2].PriceID, "")
require.Equal(t, returnedProducts[2].Family, model.SubscriptionFamily("")) require.Equal(t, returnedProducts[2].Family, model.SubscriptionFamily(""))
require.Equal(t, returnedProducts[2].RecurringInterval, model.RecurringInterval("")) require.Equal(t, returnedProducts[2].RecurringInterval, model.RecurringInterval("yearly"))
require.Equal(t, returnedProducts[2].BillingScheme, model.BillingScheme("")) require.Equal(t, returnedProducts[2].BillingScheme, model.BillingScheme(""))
require.Equal(t, returnedProducts[2].CrossSellsTo, "prod_test2")
}) })
} }

Просмотреть файл

@@ -52,13 +52,16 @@ type Product struct {
Family SubscriptionFamily `json:"product_family"` Family SubscriptionFamily `json:"product_family"`
RecurringInterval RecurringInterval `json:"recurring_interval"` RecurringInterval RecurringInterval `json:"recurring_interval"`
BillingScheme BillingScheme `json:"billing_scheme"` BillingScheme BillingScheme `json:"billing_scheme"`
CrossSellsTo string `json:"cross_sells_to"`
} }
type UserFacingProduct struct { type UserFacingProduct struct {
ID string `json:"id"` ID string `json:"id"`
Name string `json:"name"` Name string `json:"name"`
SKU string `json:"sku"` SKU string `json:"sku"`
PricePerSeat float64 `json:"price_per_seat"` PricePerSeat float64 `json:"price_per_seat"`
RecurringInterval RecurringInterval `json:"recurring_interval"`
CrossSellsTo string `json:"cross_sells_to"`
} }
// AddOn represents an addon to a product. // AddOn represents an addon to a product.

Просмотреть файл

@@ -416,15 +416,13 @@
</tr> </tr>
<tr> <tr>
<td align="left" style="font-size:0px;padding:10px 25px;padding-top:0px;padding-right:118px;padding-left:60px;word-break:break-word;"> <td align="left" style="font-size:0px;padding:10px 25px;padding-top:0px;padding-right:118px;padding-left:60px;word-break:break-word;">
<div style="font-family:Open Sans, sans-serif;font-size:16px;font-weight:400;line-height:24px;text-align:left;color:#3F4350;"> <div style="font-family:Open Sans, sans-serif;font-size:16px;font-weight:400;line-height:24px;text-align:left;color:#3F4350;"><mj-raw>
<mj-raw>
<ul padding-left="118px" padding-right="118px"> <ul padding-left="118px" padding-right="118px">
{{ range .Props.BulletListItems}} {{ range .Props.BulletListItems}}
<li text-align="left">{{.}}</li> <li text-align="left">{{.}}</li>
{{end}} {{end}}
</ul> </ul>
</mj-raw> </mj-raw></div>
</div>
</td> </td>
</tr> </tr>
<tr> <tr>