Skip to content

Commit

Permalink
Add free trial
Browse files Browse the repository at this point in the history
  • Loading branch information
gordalina committed Dec 31, 2022
1 parent 4629f50 commit 53e2559
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 4 deletions.
28 changes: 26 additions & 2 deletions lib/api/subscribe.ex
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,35 @@ defmodule ExTier.Api.Subscribe do
:org => String.t(),
:features => Phase.features() | [Phase.features()],
:effective => DateTime.t(),
optional(:trial) => boolean(),
optional(:info) => OrgInfo.t()
}

@type subscribe_features_info :: %{
:org => String.t(),
optional(:features) => Phase.features() | [Phase.features()],
optional(:effective) => DateTime.t(),
optional(:trial) => boolean(),
:info => OrgInfo.t()
}

@type subscribe_params :: subscribe_features_params() | subscribe_features_info()
@type subscribe_phases_params :: %{
:org => String.t(),
:phases => Phase.t() | [Phase.t()],
optional(:info) => OrgInfo.t()
}

@type subscribe_phases_info :: %{
:org => String.t(),
optional(:phases) => Phase.t() | [Phase.t()],
:info => OrgInfo.t()
}

@type subscribe_params ::
subscribe_features_params()
| subscribe_features_info()
| subscribe_phases_params()
| subscribe_phases_info()

@doc """
Subscribe an organization to a plan or a set of features
Expand All @@ -33,7 +51,7 @@ defmodule ExTier.Api.Subscribe do
end

def subscribe(%{features: _} = params) do
phases = Map.take(params, [:features, :effective])
phases = Map.take(params, [:features, :effective, :trial])

params =
%{org: params.org}
Expand All @@ -42,6 +60,12 @@ defmodule ExTier.Api.Subscribe do
Client.post("/subscribe", params)
end

def subscribe(%{phases: phases} = params) when not is_list(phases) do
params
|> Map.replace_lazy(:phases, &List.wrap/1)
|> subscribe()
end

def subscribe(params) do
Client.post("/subscribe", params)
end
Expand Down
5 changes: 3 additions & 2 deletions lib/models/phase.ex
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
defmodule ExTier.Phase do
@moduledoc false
defstruct [:effective, :features]
defstruct [:effective, :features, :trial]

@type plan_name :: String.t()
@type versioned_feature_name :: String.t()
@type features :: plan_name() | versioned_feature_name()

@type t :: %__MODULE__{
effective: DateTime.t(),
features: [features()]
features: [features()],
trial: boolean()
}
end
9 changes: 9 additions & 0 deletions test/api/subscribe_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,15 @@ defmodule ExTier.Api.SubscribeTest do
assert :ok = ExTier.subscribe(%{org: "org:o", features: features, effective: dt})
end

test "subscribe/1 with phase" do
phase = %{
features: ["feature:IncomingMessage", "feature:IncomingMessage"],
effective: DateTime.utc_now()
}

assert :ok = ExTier.subscribe(%{org: "org:o", phases: phase})
end

test "subscribe/1 with only org info" do
params = %{
org: "org:o",
Expand Down

0 comments on commit 53e2559

Please sign in to comment.