Skip to content

Commit

Permalink
Fixes to tests and clients
Browse files Browse the repository at this point in the history
  • Loading branch information
Ihor Korotenko authored and wh1337 committed May 8, 2023
1 parent 3596991 commit 4f307ae
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 61 deletions.
26 changes: 5 additions & 21 deletions src/Novu.Tests/Events/EventUnitTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public async void Should_Trigger_Bulk_Event()
},
};

var trigger = await client.Event.TriggerBulkAsync(payload);
var trigger = await client.Event.TriggerBulkAsync(new SendBulkRequest(payload));

if (trigger.PayloadDtos.Count != 2)
{
Expand All @@ -97,16 +97,8 @@ public async void Should_Trigger_Broadcast_Event()
};

if (subscriber.SubscriberId == null) throw new Exception("Subscriber Id is null");

var dto = new EventTriggerDataDto()
{
EventName = "test",
To =
{
SubscriberId = subscriber.SubscriberId
},
Payload = testRecord
};

var dto = new BroadcastMessageRequest("test", testRecord, default);

var trigger = await client.Event.TriggerBroadcastAsync(dto);

Expand All @@ -129,16 +121,8 @@ public async void Should_Trigger_Cancel_Event()
};

if (subscriber.SubscriberId == null) throw new Exception("Subscriber Id is null");

var dto = new EventTriggerDataDto()
{
EventName = "test",
To =
{
SubscriberId = subscriber.SubscriberId
},
Payload = testRecord
};

var dto = new BroadcastMessageRequest("test", testRecord, default);

var trigger = await client.Event.TriggerBroadcastAsync(dto);

Expand Down
51 changes: 22 additions & 29 deletions src/Novu.Tests/Topics/TopicUnitTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,25 +37,22 @@ public async void Should_Add_Subscriber_To_Topic()
var topicRequest = new TopicCreateDto
{
Key = $"test:topic:{Guid.NewGuid().ToString()}",
Name = "Test Topic",

Name = "Test Topic"
};

var subscriber = await client.Subscriber.CreateSubscriber(new CreateSubscriberDto()
{
SubscriberId = "test:subscriber:1",
Email = "noreply@novu.com"
});
var topic = await client.Topic.CreateTopicAsync(topicRequest);

var subscriberList = new TopicSubscriberUpdateDto
{
Keys = new List<string>
{
"test:subscriber:1",
}
};
var subscriberList = new TopicSubscriberUpdateDto(new() {"test:subscriber:1" });

var result = await client.Topic.AddSubscriberAsync(topic.Data.Key, subscriberList);

Assert.Single(result.Data.Succeeded);

Assert.Contains(subscriberList.Keys, x => x == result.Data.Succeeded.First());
Assert.Contains(subscriberList.Subscribers, x => x == result.Data.Succeeded.First());
}

[Fact]
Expand All @@ -80,39 +77,35 @@ public async void Should_Validate_Topic_Subscriber()
Key = $"test:topic:{Guid.NewGuid().ToString()}",
Name = "Test Topic - Should_Validate_Topic_Subscriber",
});

var subscriberList = new TopicSubscriberUpdateDto
var subscriber = await client.Subscriber.CreateSubscriber(new CreateSubscriberDto()
{
Keys = new List<string>
{
"test:subscriber:1",
}
};

SubscriberId = "test:subscriber:1",
});
var subscriberList = new TopicSubscriberUpdateDto(new() { "test:subscriber:1" });

await client.Topic.AddSubscriberAsync(topic.Data.Key, subscriberList);

await client.Topic.VerifySubscriberAsync(topic.Data.Key, subscriberList.Keys.First());
await client.Topic.VerifySubscriberAsync(topic.Data.Key, subscriberList.Subscribers.First());
}

[Fact]
public async void Should_Remove_Subscriber_From_Topic()
{
var client = _fixture.NovuClient;

var subscriber = await client.Subscriber.CreateSubscriber(new CreateSubscriberDto()
{
SubscriberId = "test:subscriber:1",
Email = "noreply@novu.com"
});
var topic = await client.Topic.CreateTopicAsync(new TopicCreateDto
{
Key = $"test:topic:{Guid.NewGuid().ToString()}",
Name = "Test Topic - Should_Validate_Topic_Subscriber",
});

var subscriberList = new TopicSubscriberUpdateDto
{
Keys = new List<string>
{
"test:subscriber:1",
}
};


var subscriberList = new TopicSubscriberUpdateDto(new() {subscriber.SubscriberId });

await client.Topic.AddSubscriberAsync(topic.Data.Key, subscriberList);

await client.Topic.RemoveSubscriberAsync(topic.Data.Key, subscriberList);
Expand Down
3 changes: 3 additions & 0 deletions src/Novu/DTO/EventTriggerDataDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

namespace Novu.DTO;

public record BroadcastMessageRequest(string Name ,object Payload, string? TransactionId);

public record SendBulkRequest(List<EventTriggerDataDto> Events);
public class EventTriggerDataDto
{
[JsonProperty("name")]
Expand Down
6 changes: 1 addition & 5 deletions src/Novu/DTO/Topics/TopicSubscriberUpdateDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,4 @@ namespace Novu.DTO.Topics;
/// <summary>
/// todo add docs
/// </summary>
public class TopicSubscriberUpdateDto
{
[JsonProperty("subscribers")]
public List<string> Keys { get; set; }
}
public record TopicSubscriberUpdateDto(List<string> Subscribers);
4 changes: 2 additions & 2 deletions src/Novu/Interfaces/IEventClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ public interface IEventClient
Task<TriggerResponseDto> Trigger([Body]EventTriggerDataDto dto);

[Post("/events/trigger/bulk")]
Task<TriggerBulkResponseDto> TriggerBulkAsync([Body] List<EventTriggerDataDto> payload);
Task<TriggerBulkResponseDto> TriggerBulkAsync([Body] SendBulkRequest payload);

[Post("/events/trigger/broadcast")]
Task<TriggerResponseDto> TriggerBroadcastAsync([Body]EventTriggerDataDto dto);
Task<TriggerResponseDto> TriggerBroadcastAsync([Body]BroadcastMessageRequest dto);

[Delete("/events/trigger/{transactionId}")]
Task TriggerCancelAsync(Guid transactionId);
Expand Down
1 change: 1 addition & 0 deletions src/Novu/Novu.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Refit" Version="6.3.2" />
<PackageReference Include="Refit.Newtonsoft.Json" Version="6.3.2" />
</ItemGroup>

<!-- Nuget Assets -->
Expand Down
28 changes: 24 additions & 4 deletions src/Novu/NovuClient.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,41 @@
using Novu.Clients;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using Novu.Clients;
using Novu.Interfaces;
using Refit;

namespace Novu;

public class NovuClient : INovuClient
{
private static readonly JsonSerializerSettings SerializerSettings = new()
{
MissingMemberHandling = MissingMemberHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore,
ContractResolver = new DefaultContractResolver
{
NamingStrategy = new CamelCaseNamingStrategy()
}
};
public NovuClient(INovuClientConfiguration configuration): this(configuration, default) {}

public NovuClient(INovuClientConfiguration configuration,HttpClient? client = default)
{
var httpClient = client ?? new HttpClient();
httpClient.BaseAddress = new Uri(configuration.Url);
httpClient.DefaultRequestHeaders.Add("Authorization", $"ApiKey {configuration.ApiKey}");
Subscriber = RestService.For<ISubscriberClient>(httpClient);
Event = RestService.For<IEventClient>(httpClient);
Topic = RestService.For<ITopicClient>(httpClient);
Subscriber = RestService.For<ISubscriberClient>(httpClient, new RefitSettings
{
ContentSerializer = new NewtonsoftJsonContentSerializer(SerializerSettings)
});
Event = RestService.For<IEventClient>(httpClient, new RefitSettings
{
ContentSerializer = new NewtonsoftJsonContentSerializer(SerializerSettings)
});
Topic = RestService.For<ITopicClient>(httpClient, new RefitSettings
{
ContentSerializer = new NewtonsoftJsonContentSerializer(SerializerSettings)
});
}

public ISubscriberClient Subscriber { get; }
Expand Down

0 comments on commit 4f307ae

Please sign in to comment.