Skip to content

Commit 68b19ba

Browse files
Merge pull request #18 from revred/Feature/DS/Unit_test
Create new unit test
2 parents 7baa544 + 87dd25f commit 68b19ba

18 files changed

+1513
-1
lines changed
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
using FluentAssertions;
2+
using Maker.RampEdge.Services;
3+
using Microsoft.Extensions.Logging;
4+
using Microsoft.Extensions.Logging.Abstractions;
5+
using Moq;
6+
7+
namespace Maker.RampEdge.Tests
8+
{
9+
public class AddressServiceTests
10+
{
11+
ILogger<AddressService> logger = NullLogger<AddressService>.Instance;
12+
[Fact]
13+
public async Task GetAddressAsync_WhenAddressesExist_ReturnsExpectedAddressDetails()
14+
{
15+
// Arrange
16+
var mockRepo = new Mock<IMakerClient>(MockBehavior.Strict);
17+
18+
var expectedResponse = new AddressResponse
19+
{
20+
AddressDetails = new List<AddressDetails>
21+
{
22+
new()
23+
{
24+
BarID = 1001,
25+
Email = "[email protected]",
26+
Site = "Head Office",
27+
PhoneNumber = "1234567890",
28+
State = "California",
29+
Pincode = "90001",
30+
Country = "USA",
31+
Address = "123 Main Street"
32+
},
33+
new()
34+
{
35+
BarID = 1002,
36+
Email = "[email protected]",
37+
Site = "Branch Office",
38+
PhoneNumber = "9876543210",
39+
State = "Texas",
40+
Pincode = "73301",
41+
Country = "USA",
42+
Address = "456 Elm Street"
43+
}
44+
}
45+
};
46+
47+
mockRepo.Setup(r => r.GetAddressAsync(
48+
It.IsAny<string?>(),
49+
It.IsAny<CancellationToken>()))
50+
.ReturnsAsync(expectedResponse);
51+
52+
var sut = new AddressService(mockRepo.Object, logger);
53+
54+
// Act
55+
var result = await sut.GetAddressAsync();
56+
57+
// Assert
58+
result.Should().NotBeNull();
59+
result.AddressDetails.Should().HaveCount(2);
60+
61+
var first = result.AddressDetails.First();
62+
first.Email.Should().Be("[email protected]");
63+
first.Site.Should().Be("Head Office");
64+
first.Country.Should().Be("USA");
65+
first.Address.Should().Contain("Main");
66+
67+
var second = result.AddressDetails.Last();
68+
second.Email.Should().Be("[email protected]");
69+
second.State.Should().Be("Texas");
70+
}
71+
[Fact]
72+
public async Task UpsertAddressAsync_WhenCalled_ReturnsSuccessResponse()
73+
{
74+
// Arrange
75+
var mockRepo = new Mock<IMakerClient>(MockBehavior.Strict);
76+
77+
var addressDetails = new AddressDetails
78+
{
79+
BarID = 1001,
80+
Email = "[email protected]",
81+
Site = "Main Office",
82+
PhoneNumber = "1234567890",
83+
State = "California",
84+
Pincode = "90001",
85+
Country = "USA",
86+
Address = "123 Main Street"
87+
};
88+
89+
var request = new AddressRequest
90+
{
91+
BarID = 1001,
92+
AddressDetails = addressDetails
93+
};
94+
95+
var expectedResponse = new UpsertAddressResponse
96+
{
97+
IsSuccess = true
98+
};
99+
100+
mockRepo.Setup(r => r.UpsertAddressAsync(
101+
It.IsAny<AddressRequest>(),
102+
It.IsAny<string?>(),
103+
It.IsAny<CancellationToken>()))
104+
.ReturnsAsync(expectedResponse);
105+
106+
var sut = new AddressService(mockRepo.Object, logger);
107+
108+
// Act
109+
var result = await sut.UpsertAddressAsync(request);
110+
111+
// Assert
112+
result.Should().NotBeNull();
113+
result.IsSuccess.Should().BeTrue();
114+
115+
}
116+
117+
}
118+
}

Maker.RampEdge.Tests/AuthenticationServiceLoginTests.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using Maker.RampEdge.Services;
66
using Maker.RampEdge.Services.Contracts;
77
using Maker.RampEdge.Tests.Helper;
8+
using Microsoft.Extensions.Logging;
89
using Microsoft.Extensions.Logging.Abstractions;
910
using Moq;
1011
using Xunit;
@@ -90,4 +91,36 @@ public async Task LoginAsync_WhenServerReturnsEmptyToken_ReturnsFalse_AndKeepsSt
9091

9192
makerClient.VerifyAll();
9293
}
94+
95+
[Fact]
96+
public async Task UserAsync_WhenCalled_InvokesClientOnce()
97+
{
98+
// Arrange
99+
var logger = Mock.Of<ILogger<AuthenticationService>>();
100+
var storage = new InMemoryTokenStorage();
101+
var mockClient = new Mock<IMakerClient>(MockBehavior.Strict);
102+
103+
var request = new UserRequest
104+
{
105+
UserDetail = "John Doe, [email protected]"
106+
};
107+
108+
mockClient.Setup(c => c.UserAsync(
109+
It.IsAny<UserRequest>(),
110+
It.IsAny<string?>(),
111+
It.IsAny<CancellationToken>()))
112+
.Returns(Task.CompletedTask);
113+
114+
var sut = new AuthenticationService(mockClient.Object,storage, logger);
115+
116+
// Act
117+
await sut.UserAsync(request);
118+
119+
// Assert
120+
mockClient.Verify(c => c.UserAsync(
121+
It.Is<UserRequest>(r => r.UserDetail == "John Doe, [email protected]"),
122+
It.IsAny<string?>(),
123+
It.IsAny<CancellationToken>()),
124+
Times.Once);
125+
}
93126
}
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
using FluentAssertions;
2+
using Maker.RampEdge.Services;
3+
using Microsoft.Extensions.Logging;
4+
using Microsoft.Extensions.Logging.Abstractions;
5+
using Moq;
6+
7+
namespace Maker.RampEdge.Tests
8+
{
9+
public class BusinessUnitServiceTests
10+
{
11+
ILogger<BusinessUnitService> logger = NullLogger<BusinessUnitService>.Instance;
12+
[Fact]
13+
public async Task AboutInfoAsync_WhenCalled_ReturnsExpectedMessage()
14+
{
15+
// Arrange
16+
var mockRepo = new Mock<IMakerClient>(MockBehavior.Strict);
17+
18+
var expectedReply = new StringReply { Detail = "About Maker Platform" };
19+
20+
mockRepo.Setup(r => r.AboutInfoAsync(
21+
It.IsAny<string?>(),
22+
It.IsAny<CancellationToken>()))
23+
.ReturnsAsync(expectedReply);
24+
25+
var sut = new BusinessUnitService(mockRepo.Object, logger);
26+
27+
// Act
28+
var result = await sut.AboutInfoAsync();
29+
30+
// Assert
31+
result.Should().NotBeNull();
32+
result.Detail.Should().Be("About Maker Platform");
33+
}
34+
[Fact]
35+
public async Task GetBlogsAsync_WhenCalled_ReturnsExpectedMessage()
36+
{
37+
// Arrange
38+
var mockRepo = new Mock<IMakerClient>(MockBehavior.Strict);
39+
40+
var expectedReply = new StringReply { Detail = "Latest Blog Posts" };
41+
42+
mockRepo.Setup(r => r.GetBlogsAsync(
43+
It.IsAny<string?>(),
44+
It.IsAny<CancellationToken>()))
45+
.ReturnsAsync(expectedReply);
46+
47+
var sut = new BusinessUnitService(mockRepo.Object, logger);
48+
49+
// Act
50+
var result = await sut.GetBlogsAsync();
51+
52+
// Assert
53+
result.Should().NotBeNull();
54+
result.Detail.Should().Be("Latest Blog Posts");
55+
56+
mockRepo.Verify(r => r.GetBlogsAsync(It.IsAny<string?>(), It.IsAny<CancellationToken>()), Times.Once);
57+
}
58+
59+
[Fact]
60+
public async Task GetDocumentationAsync_WhenCalled_ReturnsExpectedMessage()
61+
{
62+
// Arrange
63+
var mockRepo = new Mock<IMakerClient>(MockBehavior.Strict);
64+
65+
var expectedReply = new StringReply { Detail = "API Documentation" };
66+
67+
mockRepo.Setup(r => r.GetDocumentationAsync(
68+
It.IsAny<string?>(),
69+
It.IsAny<CancellationToken>()))
70+
.ReturnsAsync(expectedReply);
71+
72+
var sut = new BusinessUnitService(mockRepo.Object, logger);
73+
74+
// Act
75+
var result = await sut.GetDocumentationAsync();
76+
77+
// Assert
78+
result.Should().NotBeNull();
79+
result.Detail.Should().Be("API Documentation");
80+
81+
}
82+
83+
[Fact]
84+
public async Task GetServicesAsync_WhenCalled_ReturnsExpectedMessage()
85+
{
86+
// Arrange
87+
var mockRepo = new Mock<IMakerClient>(MockBehavior.Strict);
88+
89+
var expectedReply = new StringReply { Detail = "Available Services" };
90+
91+
mockRepo.Setup(r => r.GetServicesAsync(
92+
It.IsAny<string?>(),
93+
It.IsAny<CancellationToken>()))
94+
.ReturnsAsync(expectedReply);
95+
96+
var sut = new BusinessUnitService(mockRepo.Object, logger);
97+
98+
// Act
99+
var result = await sut.GetServicesAsync();
100+
101+
// Assert
102+
result.Should().NotBeNull();
103+
result.Detail.Should().Be("Available Services");
104+
105+
}
106+
107+
}
108+
109+
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
using FluentAssertions;
2+
using Maker.RampEdge.Services;
3+
using Microsoft.Extensions.Logging;
4+
using Microsoft.Extensions.Logging.Abstractions;
5+
using Moq;
6+
7+
namespace Maker.RampEdge.Tests
8+
{
9+
public class OrderServiceTests
10+
{
11+
ILogger<OrderService> logger = NullLogger<OrderService>.Instance;
12+
[Fact]
13+
public async Task GetAllOrdersAsync_WhenCalled_ReturnsExpectedOrders()
14+
{
15+
// Arrange
16+
var mockRepo = new Mock<IMakerClient>(MockBehavior.Strict);
17+
18+
var expectedResponse = new OrderResponse
19+
{
20+
TotalPages = 2,
21+
OrderDetails = new List<OrderDetail>
22+
{
23+
new()
24+
{
25+
OrderBarID = "ORD001",
26+
Status = "Pending",
27+
CreatedDate = 1729833600000, // Example timestamp
28+
Price = 500,
29+
ProductItems = new List<ProductItem>
30+
{
31+
new() { Slug = "electronics", Name = "Smart TV", Quantity = 1, Price = 500 }
32+
}
33+
},
34+
new()
35+
{
36+
OrderBarID = "ORD002",
37+
Status = "Completed",
38+
CreatedDate = 1729747200000,
39+
Price = 300,
40+
ProductItems = new List<ProductItem>
41+
{
42+
new() { Slug = "hardware", Name = "Drill Machine", Quantity = 1, Price = 300 }
43+
}
44+
}
45+
}
46+
};
47+
48+
var request = new OrderRequest { Page = 1, PageSize = 10 };
49+
50+
mockRepo.Setup(r => r.GetAllOrdersAsync(
51+
It.IsAny<OrderRequest>(),
52+
It.IsAny<string?>(),
53+
It.IsAny<CancellationToken>()))
54+
.ReturnsAsync(expectedResponse);
55+
56+
var sut = new OrderService(mockRepo.Object, logger);
57+
58+
// Act
59+
var result = await sut.GetAllOrdersAsync(request);
60+
61+
// Assert
62+
result.Should().NotBeNull();
63+
result.OrderDetails.Should().HaveCount(2);
64+
result.OrderDetails.First().OrderBarID.Should().Be("ORD001");
65+
}
66+
67+
[Fact]
68+
public async Task CancelProductOrderAsync_WhenCalled_InvokesRepositoryOnce()
69+
{
70+
// Arrange
71+
var mockRepo = new Mock<IMakerClient>(MockBehavior.Strict);
72+
73+
var request = new CancelProductOrderRequest { BarId = 2369848 };
74+
75+
CancelProductOrderRequest? capturedRequest = null;
76+
77+
mockRepo.Setup(r => r.MarkerRestServiceEndpointsOrderCancelProductOrderAsync(
78+
It.IsAny<CancelProductOrderRequest>(),
79+
It.IsAny<string?>(),
80+
It.IsAny<CancellationToken>()))
81+
.Callback<CancelProductOrderRequest, string?, CancellationToken>((req, key, ct) => capturedRequest = req)
82+
.Returns(Task.CompletedTask);
83+
84+
var sut = new OrderService(mockRepo.Object, logger);
85+
86+
// Act
87+
await sut.CancelProductOrderAsync(request);
88+
89+
// Assert
90+
capturedRequest.Should().NotBeNull();
91+
capturedRequest!.BarId.Should().Be(2369848);
92+
}
93+
94+
}
95+
}

0 commit comments

Comments
 (0)