Skip to content

Commit ca70e8e

Browse files
authored
test: fix failing misc tests and improve coverage (wraft#171)
1 parent f07c8c7 commit ca70e8e

102 files changed

Lines changed: 6023 additions & 7863 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

config/config.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ config :wraft_doc, WraftDocWeb.Endpoint,
1616
pubsub_server: WraftDoc.PubSub,
1717
live_view: [signing_salt: "2B8BVDxqHCMKIa5cHoQ2lM0Ne7gUxvkb"]
1818

19-
config :wraft_doc, :deployement, is_self_hosted: System.get_env("SELF_HOSTED", "true") == "true"
19+
config :wraft_doc, :deployment, is_self_hosted: System.get_env("SELF_HOSTED", "true") == "true"
2020

2121
# Configure esbuild (the version is required)
2222
config :esbuild,

config/runtime.exs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@ if System.get_env("PHX_SERVER") && System.get_env("RELEASE_NAME") do
1212
config :wraft_doc, WraftDocWeb.Endpoint, server: true
1313
end
1414

15+
# Ensure Sandbox pool is set for tests
16+
if config_env() == :test do
17+
config :wraft_doc, WraftDoc.Repo,
18+
pool: Ecto.Adapters.SQL.Sandbox,
19+
ownership_timeout: 60_000
20+
end
21+
1522
if config_env() == :prod do
1623
database_url =
1724
System.get_env("DATABASE_URL") ||
@@ -179,10 +186,12 @@ end
179186
config :wraft_doc, sender_email: "no-reply@#{System.get_env("WRAFT_HOSTNAME")}"
180187

181188
# Configure Resend mail
182-
if api_key = System.get_env("RESEND_API_KEY") do
183-
config :wraft_doc, WraftDocWeb.Mailer,
184-
adapter: Resend.Swoosh.Adapter,
185-
api_key: api_key
189+
if config_env() != :test do
190+
if api_key = System.get_env("RESEND_API_KEY") do
191+
config :wraft_doc, WraftDocWeb.Mailer,
192+
adapter: Resend.Swoosh.Adapter,
193+
api_key: api_key
194+
end
186195
end
187196

188197
# Configure SMTP

config/test.exs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,17 @@ config :wraft_doc, WraftDocWeb.Endpoint,
88
secret_key_base: Map.fetch!(System.get_env(), "SECRET_KEY_BASE")
99

1010
# Print only warnings and errors during test
11-
config :logger, level: :warn
11+
config :logger, level: :warning
1212

13-
# Configure your database
14-
config :wraft_doc, WraftDoc.Repo,
15-
adapter: Ecto.Adapters.Postgres,
16-
username: System.get_env("POSTGRES_USER") || "postgres",
17-
password: System.get_env("POSTGRES_PASSWORD") || "postgres",
18-
database: System.get_env("POSTGRES_DB") || "wraft_doc_test",
19-
hostname: System.get_env("POSTGRES_HOST") || "localhost",
20-
pool: Ecto.Adapters.SQL.Sandbox,
21-
pool_size: 10
22-
23-
config :wraft_doc, Oban, queues: false, plugins: false
13+
config :wraft_doc, Oban,
14+
queues: false,
15+
plugins: false,
16+
testing: :disabled
2417

2518
config :wraft_doc, WraftDocWeb.Mailer, adapter: Swoosh.Adapters.Test
2619

20+
config :wraft_doc, WraftDoc.TypesenseServer, start: false
21+
2722
config :wraft_doc, permissions_file: "test/mix/tasks/csv/test_permissions.csv"
2823

2924
config :wraft_doc, :test_module, minio: ExAwsMock, razorpay: WraftDoc.Client.RazorpayMock
@@ -32,5 +27,7 @@ config :tesla, adapter: Tesla.Mock
3227

3328
config :waffle, storage: Waffle.Storage.Local
3429

30+
# Set is_self_hosted to false in test environment to enable payment routes
31+
config :wraft_doc, :deployment, is_self_hosted: false
32+
3533
# Initialize plugs at runtime for faster test compilation
36-
config :phoenix, :plug_init_mode, :runtime

lib/wraft_doc/api_keys/api_key.ex

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,10 @@ defmodule WraftDoc.ApiKeys.ApiKey do
147147
end
148148

149149
defp generate_random_string(length) do
150-
encoded = Base.url_encode64(:crypto.strong_rand_bytes(length), padding: false)
151-
binary_part(encoded, 0, length)
150+
length
151+
|> :crypto.strong_rand_bytes()
152+
|> Base.url_encode64(padding: false)
153+
|> binary_part(0, length)
152154
end
153155

154156
@doc """

lib/wraft_doc/documents/documents.ex

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,6 @@ defmodule WraftDoc.Documents do
142142
end
143143
end
144144

145-
# @spec create_instance(ContentType.t(), State.t(), map) ::
146-
# %Instance{content_type: ContentType.t(), state: State.t()}
147-
# | {:error, Ecto.Changeset.t()}
148145
def create_instance(
149146
%{id: c_id, prefix: prefix, type: type, organisation_id: organisation_id} = c_type,
150147
_state,
Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,13 @@ defmodule WraftDoc.Minio.Utils do
1212
alias WraftDoc.Layouts.Layout
1313
alias WraftDoc.Repo
1414

15-
@ex_aws_module Application.compile_env(:wraft_doc, [:test_module, :minio], ExAws)
15+
defp ex_aws_module do
16+
if Mix.env() == :test do
17+
Application.get_env(:wraft_doc, [:test_module, :minio], ExAws)
18+
else
19+
ExAws
20+
end
21+
end
1622

1723
defmodule DownloadError do
1824
defexception message: "MinIO download error. File not found."
@@ -72,7 +78,7 @@ defmodule WraftDoc.Minio.Utils do
7278
source_path
7379
|> S3.Upload.stream_file()
7480
|> S3.upload(bucket, target_path)
75-
|> @ex_aws_module.request()
81+
|> ex_aws_module().request()
7682
end
7783
end
7884

@@ -118,7 +124,7 @@ defmodule WraftDoc.Minio.Utils do
118124
[binary] <-
119125
bucket
120126
|> S3.download_file(file_path, :memory)
121-
|> @ex_aws_module.stream!()
127+
|> ex_aws_module().stream!()
122128
|> Enum.to_list() do
123129
binary
124130
else
@@ -132,7 +138,7 @@ defmodule WraftDoc.Minio.Utils do
132138
def list_files(bucket, prefix) do
133139
bucket
134140
|> S3.list_objects(prefix: prefix)
135-
|> @ex_aws_module.stream!()
141+
|> ex_aws_module().stream!()
136142
|> Stream.map(& &1.key)
137143
|> Enum.sort(:desc)
138144
end
@@ -141,7 +147,7 @@ defmodule WraftDoc.Minio.Utils do
141147
def create_bucket(bucket) do
142148
bucket
143149
|> S3.put_bucket("")
144-
|> @ex_aws_module.request()
150+
|> ex_aws_module().request()
145151
end
146152

147153
# Copy files from source bucket to target bucket
@@ -152,7 +158,7 @@ defmodule WraftDoc.Minio.Utils do
152158
else
153159
target_bucket
154160
|> S3.put_object_copy(target_path, source_bucket, source_path)
155-
|> @ex_aws_module.request()
161+
|> ex_aws_module().request()
156162
|> case do
157163
{:ok, %{status_code: 200}} -> true
158164
{:error, _reason} -> false
@@ -169,7 +175,7 @@ defmodule WraftDoc.Minio.Utils do
169175
def file_exists?(bucket, file_path) do
170176
bucket
171177
|> S3.head_object(file_path)
172-
|> @ex_aws_module.request()
178+
|> ex_aws_module().request()
173179
|> case do
174180
{:ok, _} -> true
175181
{:error, _} -> false
@@ -180,7 +186,7 @@ defmodule WraftDoc.Minio.Utils do
180186
def bucket_exists?(bucket) do
181187
bucket
182188
|> S3.head_bucket()
183-
|> @ex_aws_module.request()
189+
|> ex_aws_module().request()
184190
|> case do
185191
{:ok, _} -> true
186192
{:error, _} -> false
@@ -191,7 +197,7 @@ defmodule WraftDoc.Minio.Utils do
191197
def list_all_objects(bucket) do
192198
bucket
193199
|> S3.list_objects()
194-
|> @ex_aws_module.stream!()
200+
|> ex_aws_module().stream!()
195201
|> Enum.map(& &1.key)
196202
end
197203

@@ -202,15 +208,15 @@ defmodule WraftDoc.Minio.Utils do
202208
|> Enum.each(fn chunk ->
203209
bucket
204210
|> S3.delete_multiple_objects(chunk)
205-
|> @ex_aws_module.request!()
211+
|> ex_aws_module().request!()
206212
end)
207213
end
208214

209215
# Delete a bucket
210216
def delete_bucket(bucket) do
211217
bucket
212218
|> S3.delete_bucket()
213-
|> @ex_aws_module.request!()
219+
|> ex_aws_module().request!()
214220
end
215221

216222
# Delete a file
@@ -225,13 +231,13 @@ defmodule WraftDoc.Minio.Utils do
225231
defp delete_object(bucket, file_path) do
226232
bucket
227233
|> S3.delete_object(file_path)
228-
|> @ex_aws_module.request()
234+
|> ex_aws_module().request()
229235
end
230236

231237
defp list_objects(bucket, file_path) do
232238
bucket
233239
|> S3.list_objects(prefix: file_path)
234-
|> @ex_aws_module.request()
240+
|> ex_aws_module().request()
235241
end
236242

237243
######### Revamp File Structure ##########

lib/wraft_doc/organisation/enterprise.ex

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ defmodule WraftDoc.Enterprise do
4545
]
4646

4747
# Moved to runtime configuration to avoid compile-time vs runtime mismatch
48-
defp self_hosted_deployment?, do: Application.get_env(:wraft_doc, :deployement)[:is_self_hosted]
48+
defp self_hosted_deployment?, do: Application.get_env(:wraft_doc, :deployment)[:is_self_hosted]
4949

5050
@superadmin_role "superadmin"
5151
@editor_role "editor"
@@ -156,7 +156,7 @@ defmodule WraftDoc.Enterprise do
156156
def create_flow(_, _), do: {:error, :fake}
157157

158158
@doc """
159-
Funtion to align order of states under a flow
159+
Function to align order of states under a flow
160160
## Params
161161
* flow - Flow struct
162162
* params - a map with states key
@@ -288,7 +288,7 @@ defmodule WraftDoc.Enterprise do
288288
end
289289

290290
@doc """
291-
Create default states for a controlled fow
291+
Create default states for a controlled flow
292292
"""
293293
@spec create_default_states(User.t(), Flow.t(), boolean()) :: list
294294
def create_default_states(current_user, flow, true) do
@@ -1026,8 +1026,8 @@ defmodule WraftDoc.Enterprise do
10261026
- `params` - A map of params to paginate list of organisation
10271027
10281028
## Examples
1029-
organisations=list_organisations(%{"page"=>1, "name"=> "ABC Enterprices"})
1030-
organisation.entries= [%Organisation{name: "ABC Enterprices"}]
1029+
organisations=list_organisations(%{"page"=>1, "name"=> "ABC Enterprises"})
1030+
organisation.entries= [%Organisation{name: "ABC Enterprises"}]
10311031
"""
10321032

10331033
@spec list_organisations(map) :: Scrivener.Page.t()
@@ -1107,7 +1107,7 @@ defmodule WraftDoc.Enterprise do
11071107
end
11081108

11091109
@doc """
1110-
Update an uproval system
1110+
Update an approval system
11111111
"""
11121112
@spec update_approval_system(User.t(), ApprovalSystem.t(), map) ::
11131113
ApprovalSystem.t() | {:error, Ecto.Changeset.t()}
@@ -1866,7 +1866,7 @@ defmodule WraftDoc.Enterprise do
18661866
end
18671867

18681868
@doc """
1869-
Returns true if deployement mode is saas.
1869+
Returns true if deployment mode is saas.
18701870
"""
18711871
@spec self_hosted? :: boolean()
18721872
def self_hosted?, do: self_hosted_deployment?()
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
defmodule WraftDoc.Webhooks.EventTriggerBehaviour do
2+
@moduledoc """
3+
Behaviour for event triggers.
4+
"""
5+
6+
@callback trigger_document_created(WraftDoc.Documents.Instance.t()) :: :ok
7+
@callback trigger_document_sent(WraftDoc.Documents.Instance.t()) :: :ok
8+
@callback trigger_document_state_updated(WraftDoc.Documents.Instance.t(), map()) :: :ok
9+
@callback trigger_document_approved(WraftDoc.Documents.Instance.t()) :: :ok
10+
@callback trigger_document_rejected(WraftDoc.Documents.Instance.t()) :: :ok
11+
@callback trigger_document_deleted(WraftDoc.Documents.Instance.t()) :: :ok
12+
end

lib/wraft_doc/workers/bulk_worker.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ defmodule WraftDoc.Workers.BulkWorker do
337337
})
338338
end)
339339

340-
Logger.info("Pipeline completed succesfully.!")
340+
Logger.info("Pipeline completed successfully.!")
341341
trigger
342342
end
343343

lib/wraft_doc_web/controllers/block_controller.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ defmodule WraftDocWeb.Api.V1.BlockController do
282282

283283
with %Block{} = block <- Blocks.get_block(id, current_user),
284284
{:ok, %Block{}} <- Blocks.delete_block(block) do
285-
Typesense.delete_document(block, "block")
285+
Typesense.delete_document(block.id, "block")
286286
render(conn, "block.json", block: block)
287287
end
288288
end

0 commit comments

Comments
 (0)