Browse Source

Fix for free plan.

pull/361/head
Sebastian Stehle 7 years ago
parent
commit
970e7e314b
  1. 10
      src/Squidex.Domain.Apps.Entities/Apps/AppHistoryEventsCreator.cs
  2. 2
      src/Squidex.Domain.Apps.Entities/Apps/Services/IAppPlansProvider.cs
  3. 5
      src/Squidex.Domain.Apps.Entities/Apps/Services/Implementations/ConfigAppPlansProvider.cs
  4. 20
      tests/Squidex.Domain.Apps.Entities.Tests/Apps/Billing/ConfigAppLimitsProviderTests.cs

10
src/Squidex.Domain.Apps.Entities/Apps/AppHistoryEventsCreator.cs

@ -6,6 +6,7 @@
// ==========================================================================
using System.Threading.Tasks;
using Squidex.Domain.Apps.Entities.Apps.Services;
using Squidex.Domain.Apps.Entities.History;
using Squidex.Domain.Apps.Events.Apps;
using Squidex.Infrastructure;
@ -16,9 +17,13 @@ namespace Squidex.Domain.Apps.Entities.Apps
{
public class AppHistoryEventsCreator : HistoryEventsCreatorBase
{
public AppHistoryEventsCreator(TypeNameRegistry typeNameRegistry)
private readonly IAppPlansProvider appPlansProvider;
public AppHistoryEventsCreator(TypeNameRegistry typeNameRegistry, IAppPlansProvider appPlansProvider)
: base(typeNameRegistry)
{
Guard.NotNull(appPlansProvider, nameof(appPlansProvider));
AddEventMessage("AppContributorAssignedEvent",
"assigned {user:[Contributor]} as {[Role]}");
@ -75,6 +80,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
AddEventMessage<AppRoleUpdated>(
"updated role {[Name]}");
this.appPlansProvider = appPlansProvider;
}
protected Task<HistoryEvent> On(AppContributorRemoved @event)
@ -209,7 +215,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
return Task.FromResult(
ForEvent(@event, channel)
.AddParameter("Plan", @event.PlanId ?? "free"));
.AddParameter("Plan", @event.PlanId ?? appPlansProvider.GetFreePlan()?.Id ?? "free"));
}
protected Task<HistoryEvent> On(AppRoleDeleted @event)

2
src/Squidex.Domain.Apps.Entities/Apps/Services/IAppPlansProvider.cs

@ -22,5 +22,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Services
IAppLimitsPlan GetPlanForApp(IAppEntity app);
IAppLimitsPlan GetPlan(string planId);
IAppLimitsPlan GetFreePlan();
}
}

5
src/Squidex.Domain.Apps.Entities/Apps/Services/Implementations/ConfigAppPlansProvider.cs

@ -64,6 +64,11 @@ namespace Squidex.Domain.Apps.Entities.Apps.Services.Implementations
return GetPlanCore(planId);
}
public IAppLimitsPlan GetFreePlan()
{
return GetPlanCore(plansList.FirstOrDefault(x => string.IsNullOrWhiteSpace(x.Costs))?.Id);
}
public IAppLimitsPlan GetPlanUpgradeForApp(IAppEntity app)
{
Guard.NotNull(app, nameof(app));

20
tests/Squidex.Domain.Apps.Entities.Tests/Apps/Billing/ConfigAppLimitsProviderTests.cs

@ -68,6 +68,26 @@ namespace Squidex.Domain.Apps.Entities.Apps.Billing
plan.Should().BeEquivalentTo(InfinitePlan);
}
[Fact]
public void Should_return_free_plan()
{
var sut = new ConfigAppPlansProvider(Plans);
var plan = sut.GetFreePlan();
plan.Should().BeEquivalentTo(FreePlan);
}
[Fact]
public void Should_return_infinite_plan_for_free_plan_if_not_found()
{
var sut = new ConfigAppPlansProvider(Enumerable.Empty<ConfigAppLimitsPlan>());
var plan = sut.GetFreePlan();
plan.Should().NotBeNull();
}
[Fact]
public void Should_return_fitting_app_plan()
{

Loading…
Cancel
Save