From 4ede33fa19c23f88bb2c6443f76e795280f02f83 Mon Sep 17 00:00:00 2001 From: Matthew Parker Date: Tue, 8 Oct 2024 19:14:04 +0100 Subject: [PATCH] added tests for update email --- .../Users/UsersClientTests.UpdateEmail.cs | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 tests/PinguApps.Appwrite.Server.Tests/Clients/Users/UsersClientTests.UpdateEmail.cs diff --git a/tests/PinguApps.Appwrite.Server.Tests/Clients/Users/UsersClientTests.UpdateEmail.cs b/tests/PinguApps.Appwrite.Server.Tests/Clients/Users/UsersClientTests.UpdateEmail.cs new file mode 100644 index 00000000..97e89516 --- /dev/null +++ b/tests/PinguApps.Appwrite.Server.Tests/Clients/Users/UsersClientTests.UpdateEmail.cs @@ -0,0 +1,79 @@ +using System.Net; +using PinguApps.Appwrite.Shared.Requests.Users; +using PinguApps.Appwrite.Shared.Tests; +using RichardSzalay.MockHttp; + +namespace PinguApps.Appwrite.Server.Tests.Clients.Users; +public partial class UsersClientTests +{ + [Theory] + [InlineData("user123", "newemail@example.com")] + [InlineData("user456", "anotheremail@example.com")] + public async Task UpdateEmail_ShouldReturnSuccess_WhenApiCallSucceeds(string userId, string newEmail) + { + // Arrange + var request = new UpdateEmailRequest + { + UserId = userId, + Email = newEmail + }; + + _mockHttp.Expect(HttpMethod.Patch, $"{Constants.Endpoint}/users/{userId}/email") + .WithJsonContent(request) + .ExpectedHeaders() + .Respond(Constants.AppJson, Constants.UserResponse); + + // Act + var result = await _appwriteClient.Users.UpdateEmail(request); + + // Assert + Assert.True(result.Success); + } + + [Fact] + public async Task UpdateEmail_ShouldHandleException_WhenApiCallFails() + { + // Arrange + var request = new UpdateEmailRequest + { + UserId = "user123", + Email = "newemail@example.com" + }; + + _mockHttp.Expect(HttpMethod.Patch, $"{Constants.Endpoint}/users/user123/email") + .WithJsonContent(request) + .ExpectedHeaders() + .Respond(HttpStatusCode.BadRequest, Constants.AppJson, Constants.AppwriteError); + + // Act + var result = await _appwriteClient.Users.UpdateEmail(request); + + // Assert + Assert.True(result.IsError); + Assert.True(result.IsAppwriteError); + } + + [Fact] + public async Task UpdateEmail_ShouldReturnErrorResponse_WhenExceptionOccurs() + { + // Arrange + var request = new UpdateEmailRequest + { + UserId = "user123", + Email = "newemail@example.com" + }; + + _mockHttp.Expect(HttpMethod.Patch, $"{Constants.Endpoint}/users/user123/email") + .WithJsonContent(request) + .ExpectedHeaders() + .Throw(new HttpRequestException("An error occurred")); + + // Act + var result = await _appwriteClient.Users.UpdateEmail(request); + + // Assert + Assert.False(result.Success); + Assert.True(result.IsInternalError); + Assert.Equal("An error occurred", result.Result.AsT2.Message); + } +}