Apps: Make app name the default title (#5779)

* Apps: Make app name the default title

Successor of #5762 with a way simpler approach. Allows the user-facing title to be set, but defaults it to the app name instead of "Tea shop".

* Test fixes
This commit is contained in:
d11n 2024-03-11 11:04:41 +01:00 committed by GitHub
parent 3b73d5a5cb
commit 15ce148b99
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 43 additions and 12 deletions

View file

@ -301,6 +301,16 @@ namespace BTCPayServer.Tests
Assert.Equal("test app title", app.Title); Assert.Equal("test app title", app.Title);
Assert.False(app.Archived); Assert.False(app.Archived);
// Test title falls back to name
app = await client.CreatePointOfSaleApp(
user.StoreId,
new CreatePointOfSaleAppRequest
{
AppName = "test app name"
}
);
Assert.Equal("test app name", app.Title);
// Make sure we return a 404 if we try to get an app that doesn't exist // Make sure we return a 404 if we try to get an app that doesn't exist
await AssertHttpError(404, async () => await AssertHttpError(404, async () =>
{ {
@ -470,6 +480,16 @@ namespace BTCPayServer.Tests
Assert.Equal("Crowdfund", app.AppType); Assert.Equal("Crowdfund", app.AppType);
Assert.False(app.Archived); Assert.False(app.Archived);
// Test title falls back to name
app = await client.CreateCrowdfundApp(
user.StoreId,
new CreateCrowdfundAppRequest
{
AppName = "test app name"
}
);
Assert.Equal("test app name", app.Title);
// Make sure we return a 404 if we try to get an app that doesn't exist // Make sure we return a 404 if we try to get an app that doesn't exist
await AssertHttpError(404, async () => await AssertHttpError(404, async () =>
{ {

View file

@ -86,8 +86,9 @@ namespace BTCPayServer.Tests
s.GenerateWallet(isHotWallet: true); s.GenerateWallet(isHotWallet: true);
// Point Of Sale // Point Of Sale
var appName = $"PoS-{Guid.NewGuid().ToString()[..21]}";
s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click(); s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click();
s.Driver.FindElement(By.Id("AppName")).SendKeys(Guid.NewGuid().ToString()); s.Driver.FindElement(By.Id("AppName")).SendKeys(appName);
s.Driver.FindElement(By.Id("Create")).Click(); s.Driver.FindElement(By.Id("Create")).Click();
Assert.Contains("App successfully created", s.FindAlertMessage().Text); Assert.Contains("App successfully created", s.FindAlertMessage().Text);
@ -1152,12 +1153,15 @@ namespace BTCPayServer.Tests
using var s = CreateSeleniumTester(newDb: true); using var s = CreateSeleniumTester(newDb: true);
await s.StartAsync(); await s.StartAsync();
var userId = s.RegisterNewUser(true); var userId = s.RegisterNewUser(true);
var appName = $"PoS-{Guid.NewGuid().ToString()[..21]}";
s.CreateNewStore(); s.CreateNewStore();
s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click(); s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click();
s.Driver.FindElement(By.Name("AppName")).SendKeys("PoS" + Guid.NewGuid()); s.Driver.FindElement(By.Name("AppName")).SendKeys(appName);
s.Driver.FindElement(By.Id("Create")).Click(); s.Driver.FindElement(By.Id("Create")).Click();
Assert.Contains("App successfully created", s.FindAlertMessage().Text); Assert.Contains("App successfully created", s.FindAlertMessage().Text);
Assert.Equal(appName, s.Driver.FindElement(By.Id("Title")).GetAttribute("value"));
s.Driver.FindElement(By.Id("Title")).Clear();
s.Driver.FindElement(By.Id("Title")).SendKeys("Tea shop");
s.Driver.FindElement(By.CssSelector("label[for='DefaultView_Cart']")).Click(); s.Driver.FindElement(By.CssSelector("label[for='DefaultView_Cart']")).Click();
s.Driver.FindElement(By.CssSelector(".template-item:nth-of-type(1)")).Click(); s.Driver.FindElement(By.CssSelector(".template-item:nth-of-type(1)")).Click();
s.Driver.FindElement(By.Id("BuyButtonText")).SendKeys("Take my money"); s.Driver.FindElement(By.Id("BuyButtonText")).SendKeys("Take my money");
@ -1269,11 +1273,13 @@ namespace BTCPayServer.Tests
s.CreateNewStore(); s.CreateNewStore();
s.AddDerivationScheme(); s.AddDerivationScheme();
var appName = $"CF-{Guid.NewGuid().ToString()[..21]}";
s.Driver.FindElement(By.Id("StoreNav-CreateCrowdfund")).Click(); s.Driver.FindElement(By.Id("StoreNav-CreateCrowdfund")).Click();
s.Driver.FindElement(By.Name("AppName")).SendKeys("CF" + Guid.NewGuid()); s.Driver.FindElement(By.Name("AppName")).SendKeys(appName);
s.Driver.FindElement(By.Id("Create")).Click(); s.Driver.FindElement(By.Id("Create")).Click();
Assert.Contains("App successfully created", s.FindAlertMessage().Text); Assert.Contains("App successfully created", s.FindAlertMessage().Text);
Assert.Equal(appName, s.Driver.FindElement(By.Id("Title")).GetAttribute("value"));
s.Driver.FindElement(By.Id("Title")).Clear();
s.Driver.FindElement(By.Id("Title")).SendKeys("Kukkstarter"); s.Driver.FindElement(By.Id("Title")).SendKeys("Kukkstarter");
s.Driver.FindElement(By.CssSelector("div.note-editable.card-block")).SendKeys("1BTC = 1BTC"); s.Driver.FindElement(By.CssSelector("div.note-editable.card-block")).SendKeys("1BTC = 1BTC");
s.Driver.FindElement(By.Id("TargetCurrency")).Clear(); s.Driver.FindElement(By.Id("TargetCurrency")).Clear();
@ -2507,7 +2513,9 @@ namespace BTCPayServer.Tests
s.GoToLightningSettings(); s.GoToLightningSettings();
s.Driver.SetCheckbox(By.Id("LNURLEnabled"), true); s.Driver.SetCheckbox(By.Id("LNURLEnabled"), true);
s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click(); s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click();
s.Driver.FindElement(By.Id("AppName")).SendKeys(Guid.NewGuid().ToString());
var appName = $"PoS-{Guid.NewGuid().ToString()[..21]}";
s.Driver.FindElement(By.Id("AppName")).SendKeys(appName);
s.Driver.FindElement(By.Id("Create")).Click(); s.Driver.FindElement(By.Id("Create")).Click();
TestUtils.Eventually(() => Assert.Contains("App successfully created", s.FindAlertMessage().Text)); TestUtils.Eventually(() => Assert.Contains("App successfully created", s.FindAlertMessage().Text));
s.Driver.FindElement(By.CssSelector("label[for='DefaultView_Print']")).Click(); s.Driver.FindElement(By.CssSelector("label[for='DefaultView_Print']")).Click();
@ -2556,8 +2564,9 @@ namespace BTCPayServer.Tests
Assert.Contains("User added successfully", s.FindAlertMessage().Text); Assert.Contains("User added successfully", s.FindAlertMessage().Text);
// Setup POS // Setup POS
var appName = $"PoS-{Guid.NewGuid().ToString()[..21]}";
s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click(); s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click();
s.Driver.FindElement(By.Id("AppName")).SendKeys(Guid.NewGuid().ToString()); s.Driver.FindElement(By.Id("AppName")).SendKeys(appName);
s.Driver.FindElement(By.Id("Create")).Click(); s.Driver.FindElement(By.Id("Create")).Click();
TestUtils.Eventually(() => Assert.Contains("App successfully created", s.FindAlertMessage().Text)); TestUtils.Eventually(() => Assert.Contains("App successfully created", s.FindAlertMessage().Text));
s.Driver.FindElement(By.CssSelector("label[for='DefaultView_Light']")).Click(); s.Driver.FindElement(By.CssSelector("label[for='DefaultView_Light']")).Click();
@ -2656,8 +2665,10 @@ namespace BTCPayServer.Tests
s.CreateNewStore(); s.CreateNewStore();
s.GoToStore(); s.GoToStore();
s.AddLightningNode(LightningConnectionType.CLightning, false); s.AddLightningNode(LightningConnectionType.CLightning, false);
var appName = $"PoS-{Guid.NewGuid().ToString()[..21]}";
s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click(); s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click();
s.Driver.FindElement(By.Id("AppName")).SendKeys(Guid.NewGuid().ToString()); s.Driver.FindElement(By.Id("AppName")).SendKeys(appName);
s.Driver.FindElement(By.Id("Create")).Click(); s.Driver.FindElement(By.Id("Create")).Click();
Assert.Contains("App successfully created", s.FindAlertMessage().Text); Assert.Contains("App successfully created", s.FindAlertMessage().Text);
s.Driver.FindElement(By.CssSelector("label[for='DefaultView_Cart']")).Click(); s.Driver.FindElement(By.CssSelector("label[for='DefaultView_Cart']")).Click();

View file

@ -238,7 +238,7 @@ namespace BTCPayServer.Controllers.Greenfield
return new CrowdfundSettings return new CrowdfundSettings
{ {
Title = request.Title?.Trim(), Title = request.Title?.Trim() ?? request.AppName,
Enabled = request.Enabled ?? true, Enabled = request.Enabled ?? true,
EnforceTargetAmount = request.EnforceTargetAmount ?? false, EnforceTargetAmount = request.EnforceTargetAmount ?? false,
StartDate = request.StartDate?.UtcDateTime, StartDate = request.StartDate?.UtcDateTime,
@ -272,7 +272,7 @@ namespace BTCPayServer.Controllers.Greenfield
{ {
return new PointOfSaleSettings return new PointOfSaleSettings
{ {
Title = request.Title, Title = request.Title ?? request.AppName,
DefaultView = (PosViewType)request.DefaultView, DefaultView = (PosViewType)request.DefaultView,
ShowCustomAmount = request.ShowCustomAmount, ShowCustomAmount = request.ShowCustomAmount,
ShowDiscount = request.ShowDiscount, ShowDiscount = request.ShowDiscount,

View file

@ -236,7 +236,7 @@ namespace BTCPayServer.Plugins.Crowdfund
public override Task SetDefaultSettings(AppData appData, string defaultCurrency) public override Task SetDefaultSettings(AppData appData, string defaultCurrency)
{ {
var emptyCrowdfund = new CrowdfundSettings { TargetCurrency = defaultCurrency }; var emptyCrowdfund = new CrowdfundSettings { Title = appData.Name, TargetCurrency = defaultCurrency };
appData.SetSettings(emptyCrowdfund); appData.SetSettings(emptyCrowdfund);
return Task.CompletedTask; return Task.CompletedTask;
} }

View file

@ -117,7 +117,7 @@ namespace BTCPayServer.Plugins.PointOfSale
public override Task SetDefaultSettings(AppData appData, string defaultCurrency) public override Task SetDefaultSettings(AppData appData, string defaultCurrency)
{ {
var empty = new PointOfSaleSettings { Currency = defaultCurrency }; var empty = new PointOfSaleSettings { Title = appData.Name, Currency = defaultCurrency };
appData.SetSettings(empty); appData.SetSettings(empty);
return Task.CompletedTask; return Task.CompletedTask;
} }