Skip to content

Commit

Permalink
feat: Add Missing Methods for Messages
Browse files Browse the repository at this point in the history
Resolved novuhq#20
  • Loading branch information
sccalabr committed Oct 12, 2023
1 parent 2f0d79a commit d418626
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 0 deletions.
25 changes: 25 additions & 0 deletions lib/novu/messages.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
defmodule Novu.Messages do
@moduledoc """
Provide access to the Novu Messages API
"""

alias Novu.Http

@doc """
Retrieves messages
[API Documentation](https://docs.novu.co/api-reference/messages/get-messages)
"""
@spec get_messages :: Http.response()
def get_messages do
Http.get("/v1/messages")
end

@doc """
Delete messages
[API Documentation](https://docs.novu.co/api-reference/messages/delete-message)
"""
@spec delete_messages(message_id :: String.t()) :: Http.response()
def delete_messages(message_id) do
Http.delete("/v1/messages/#{message_id}")
end
end
46 changes: 46 additions & 0 deletions test/novu/messages.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
defmodule Novu.MessagesTest do
use ExUnit.Case

import Novu.ApiTestHelpers

alias Novu.Messages

@test_api_key "test-api-key"

setup do
bypass = Bypass.open()

current_domain = Application.get_env(:novu, :domain)

Application.put_env(:novu, :domain, "http://localhost:#{bypass.port}")
Application.put_env(:novu, :api_key, @test_api_key)

on_exit(fn ->
Application.put_env(:novu, :domain, current_domain)
end)

{:ok, bypass: bypass}
end

describe "get_messages/1" do
test "creates a GET to /v1/messages", %{bypass: bypass} do
Bypass.expect(bypass, "GET", "/v1/messages", fn conn ->
novu_response(conn, 200, %{page: 0, totalCount: 0, pageSize: 10, data: []})
end)

assert {:ok, _body} = Messages.get_messages()
end
end

describe "delete_subscriber/1" do
test "creates a DELETE to /v1/messages/{messageId}", %{bypass: bypass} do
message_id = "example-id"

Bypass.expect(bypass, "DELETE", "/v1/messages/#{URI.encode(message_id)}", fn conn ->
novu_response(conn, 200, %{acknowledged: true, status: "deleted"})
end)

assert {:ok, _body} = Messages.delete_message(message_id)
end
end
end

0 comments on commit d418626

Please sign in to comment.