Remove in-product pricing modal (#31187)
* Remove pricing modal. Adjust everywhere to instead open mattermost.com/pricing. When air gapped, don't show buttons to view plans. * Fix lint * Further clean up of unused code. Fixes for linter * fixes for PR feedback * useExternalLink for opening pricing modal with enriched params * Fix i17n * Fix style, tests
Этот коммит содержится в:
@@ -430,113 +430,3 @@ func TestGetCloudProducts(t *testing.T) {
|
||||
require.Equal(t, returnedProducts[2].CrossSellsTo, "prod_test2")
|
||||
})
|
||||
}
|
||||
|
||||
func TestGetSelfHostedProducts(t *testing.T) {
|
||||
mainHelper.Parallel(t)
|
||||
products := []*model.Product{
|
||||
{
|
||||
ID: "prod_test",
|
||||
Name: "Self-Hosted Professional",
|
||||
Description: "Ideal for small companies and departments with data security requirements",
|
||||
PricePerSeat: 10,
|
||||
SKU: "professional",
|
||||
PriceID: "price_1JPXbNI67GP2qpb4VuFdFbwQ",
|
||||
Family: "on-prem",
|
||||
RecurringInterval: model.RecurringIntervalYearly,
|
||||
},
|
||||
{
|
||||
ID: "prod_test2",
|
||||
Name: "Self-Hosted Enterprise",
|
||||
Description: "Built to scale for high-trust organizations and companies in regulated industries.",
|
||||
PricePerSeat: 30,
|
||||
SKU: "enterprise",
|
||||
PriceID: "price_1JPXaVI67GP2qpb4l40bXyRu",
|
||||
Family: "on-prem",
|
||||
RecurringInterval: model.RecurringIntervalYearly,
|
||||
},
|
||||
}
|
||||
|
||||
sanitizedProducts := []*model.Product{
|
||||
{
|
||||
ID: "prod_test",
|
||||
Name: "Self-Hosted Professional",
|
||||
PricePerSeat: 10,
|
||||
SKU: "professional",
|
||||
RecurringInterval: model.RecurringIntervalYearly,
|
||||
},
|
||||
{
|
||||
ID: "prod_test2",
|
||||
Name: "Self-Hosted Enterprise",
|
||||
PricePerSeat: 30,
|
||||
SKU: "enterprise",
|
||||
RecurringInterval: model.RecurringIntervalYearly,
|
||||
},
|
||||
}
|
||||
|
||||
t.Run("get products for admins", func(t *testing.T) {
|
||||
mainHelper.Parallel(t)
|
||||
th := Setup(t).InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
th.Client.Login(context.Background(), th.SystemAdminUser.Email, th.SystemAdminUser.Password)
|
||||
|
||||
cloud := mocks.CloudInterface{}
|
||||
cloud.Mock.On("GetSelfHostedProducts", mock.Anything, mock.Anything).Return(products, nil)
|
||||
cloudImpl := th.App.Srv().Cloud
|
||||
defer func() {
|
||||
th.App.Srv().Cloud = cloudImpl
|
||||
}()
|
||||
th.App.Srv().Cloud = &cloud
|
||||
|
||||
returnedProducts, r, err := th.Client.GetSelfHostedProducts(context.Background())
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, http.StatusOK, r.StatusCode, "Status OK")
|
||||
require.Equal(t, returnedProducts, products)
|
||||
})
|
||||
|
||||
t.Run("get products for non admins", func(t *testing.T) {
|
||||
mainHelper.Parallel(t)
|
||||
th := Setup(t).InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password)
|
||||
|
||||
cloud := mocks.CloudInterface{}
|
||||
|
||||
cloud.Mock.On("GetSelfHostedProducts", mock.Anything, mock.Anything).Return(products, nil)
|
||||
|
||||
cloudImpl := th.App.Srv().Cloud
|
||||
defer func() {
|
||||
th.App.Srv().Cloud = cloudImpl
|
||||
}()
|
||||
th.App.Srv().Cloud = &cloud
|
||||
|
||||
returnedProducts, r, err := th.Client.GetSelfHostedProducts(context.Background())
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, http.StatusOK, r.StatusCode, "Status OK")
|
||||
require.Equal(t, returnedProducts, sanitizedProducts)
|
||||
|
||||
// make a more explicit check
|
||||
require.Equal(t, returnedProducts[0].ID, "prod_test")
|
||||
require.Equal(t, returnedProducts[0].Name, "Self-Hosted Professional")
|
||||
require.Equal(t, returnedProducts[0].SKU, "professional")
|
||||
require.Equal(t, returnedProducts[0].PricePerSeat, float64(10))
|
||||
require.Equal(t, returnedProducts[0].Description, "")
|
||||
require.Equal(t, returnedProducts[0].PriceID, "")
|
||||
require.Equal(t, returnedProducts[0].Family, model.SubscriptionFamily(""))
|
||||
require.Equal(t, returnedProducts[0].RecurringInterval, model.RecurringInterval("year"))
|
||||
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].Name, "Self-Hosted Enterprise")
|
||||
require.Equal(t, returnedProducts[1].SKU, "enterprise")
|
||||
require.Equal(t, returnedProducts[1].PricePerSeat, float64(30))
|
||||
require.Equal(t, returnedProducts[1].Description, "")
|
||||
require.Equal(t, returnedProducts[1].PriceID, "")
|
||||
require.Equal(t, returnedProducts[1].Family, model.SubscriptionFamily(""))
|
||||
require.Equal(t, returnedProducts[1].RecurringInterval, model.RecurringInterval("year"))
|
||||
require.Equal(t, returnedProducts[1].BillingScheme, model.BillingScheme(""))
|
||||
require.Equal(t, returnedProducts[1].CrossSellsTo, "")
|
||||
})
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user