Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
################################################################################
# This .gitignore file was automatically created by Microsoft(R) Visual Studio.
################################################################################

/.vs
/WebAPIExam/.vs/WebAPIExam
30 changes: 30 additions & 0 deletions WebAPIExam/AcceTickTest/AcceTickTest.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>

<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="8.0.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="NUnit" Version="3.14.0" />
<PackageReference Include="NUnit.Analyzers" Version="3.9.0" />
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Entity\Entity.csproj" />
<ProjectReference Include="..\WebAPIExam\WebAPIExam.csproj" />
</ItemGroup>

<ItemGroup>
<Using Include="NUnit.Framework" />
</ItemGroup>

</Project>
21 changes: 21 additions & 0 deletions WebAPIExam/AcceTickTest/BaseTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using Microsoft.AspNetCore.Mvc.Testing;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AcceTickTest
{
public class BaseTest
{
protected readonly WebApplicationFactory<Program> _factory;
public BaseTest()
{
_factory = new WebApplicationFactory<Program>();
}

public HttpClient GetClient => _factory.CreateClient();

}
}
127 changes: 127 additions & 0 deletions WebAPIExam/AcceTickTest/UnitTest1.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
using Contracts.RequestModels.BookedTicket;
using Newtonsoft.Json;
using System.Text;

namespace AcceTickTest
{
public class Tests : BaseTest
{
private readonly HttpClient _Client;
public Tests()
{
_Client = GetClient;
}
[SetUp]
public void Setup()
{
}

private string Url = "api/v1/booked";

[Test, Order(0)]
public async Task GetAvailableTickets()
{
//arrange
var client = _factory.CreateClient();

//act
var response = await client.GetAsync("api/v1/ticket/get-available-ticket");

//assert
Assert.That(response.IsSuccessStatusCode, Is.True);
Assert.Pass();
}
[Test, Order(1)]
public async Task BookTicket()
{
//arrange
var client = _factory.CreateClient();

BookTicketRequest bookTickets = new BookTicketRequest
{
BookingList = []
};
bookTickets.BookingList.Add(new BookTicketModel
{
TicketId = Guid.Parse("D842F4AD-6703-474D-AF68-77006A055613"),
Quantity = 5
});
bookTickets.BookingList.Add(new BookTicketModel
{
TicketId = Guid.Parse("56EDF6D8-AF0E-4504-B635-46C133CB492E"),
Quantity = 15
});
bookTickets.BookingList.Add(new BookTicketModel
{
TicketId = Guid.Parse("267E3768-1174-4723-8C15-295839010788"),
Quantity = 27
});


//act
var stringContent = new StringContent(JsonConvert.SerializeObject(bookTickets), Encoding.UTF8, "application/json");
var response = await client.PostAsync($"{Url}/book-ticket", stringContent);

//assert
Assert.That(response.IsSuccessStatusCode, Is.True);
Assert.Pass();
}
[Test, Order(2)]
public async Task DeleteBookedTickets()
{
//arrange
var client = _factory.CreateClient();

DeleteBookedTicketsRequest delete = new DeleteBookedTicketsRequest
{
BookedId = Guid.Parse("729FD330-EAC2-47D4-8CFD-49CB19C53923"),
TicketCode = "TJ012",
Quantity = 10,
};

//act
var response = await client.DeleteAsync($"{Url}/revoke-ticket/{delete.BookedId}/{delete.TicketCode}/{delete.Quantity}");

//assert
Assert.That(response.IsSuccessStatusCode, Is.True);
Assert.Pass();
}
[Test, Order(3)]
public async Task EditBookedTickets()
{
//arrange
var client = _factory.CreateClient();

var testId = Guid.Parse("729FD330-EAC2-47D4-8CFD-49CB19C53923");
EditBookedTicketModel edit = new EditBookedTicketModel
{
Quantity = 10,
};

//act
var stringContent = new StringContent(JsonConvert.SerializeObject(edit), Encoding.UTF8, "application/json");
var response = await client.PutAsync($"{Url}/edit-booked-ticket/{testId}", stringContent);

//assert
Assert.That(response.IsSuccessStatusCode, Is.True);
Assert.Pass();
}
[Test, Order(3)]
public async Task GetBookedDetailTest()
{
//arrange
var client = _factory.CreateClient();

var testId = Guid.Parse("729FD330-EAC2-47D4-8CFD-49CB19C53923");

//act

var response = await client.GetAsync($"{Url}/get-booked-ticket/{testId}");

//assert
Assert.That(response.IsSuccessStatusCode, Is.True);
Assert.Pass();
}

}
}
Loading