Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Olhaholiak/get workshop by provider #171

Merged
merged 1 commit into from
Jun 25, 2021
Merged
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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public void Setup()

#region GetWorkshops
[Test]
public async Task GetWorkshops_WhenThereAreWOrkshops_ShouldReturnOkResultObject()
public async Task GetWorkshops_WhenThereAreWorkshops_ShouldReturnOkResultObject()
{
// Arrange
workshopServiceMoq.Setup(x => x.GetAll()).ReturnsAsync(workshops);
Expand All @@ -69,7 +69,7 @@ public async Task GetWorkshops_WhenThereAreWOrkshops_ShouldReturnOkResultObject(
}

[Test]
public async Task GetWorkshops_WhenThereIsNoTAnyWorkshop_ShouldReturnNoConterntResult()
public async Task GetWorkshops_WhenThereIsNoAnyWorkshop_ShouldReturnNoConterntResult()
{
// Arrange
var emptyList = new List<WorkshopDTO>();
Expand Down Expand Up @@ -129,6 +129,53 @@ public async Task GetWorkshopById_WhenThereIsNoWorkshopWithId_ShouldReturnNoCont
}
#endregion

#region GetByProviderId
[Test]
[TestCase(0)]
public void GetByProviderId_WhenIdIsInvalid_ShouldThrowArgumentOutOfRangeException(long id)
{
// Arrange
workshopServiceMoq.Setup(x => x.GetWorkshopsByProviderId(id)).ReturnsAsync(workshops.Where(x => x.ProviderId == id));

// Assert
Assert.That(
async () => await controller.GetByProviderId(id),
Throws.Exception.TypeOf<ArgumentOutOfRangeException>());
}

[Test]
[TestCase(1)]
public async Task GetByProviderId_WhenThereAreWorkshops_ShouldReturnOkResultObject(long id)
{
// Arrange
workshopServiceMoq.Setup(x => x.GetWorkshopsByProviderId(id)).ReturnsAsync(workshops.Where(x => x.ProviderId == id));

// Act
var result = await controller.GetByProviderId(id).ConfigureAwait(false) as OkObjectResult;

// Assert
Assert.That(result, Is.Not.Null);
Assert.AreEqual(200, result.StatusCode);
Assert.AreEqual(2, (result.Value as IEnumerable<WorkshopDTO>).Count());
}

[Test]
[TestCase(3)]
public async Task GetWorkshops_WhenThereIsNoAnyWorkshop_ShouldReturnNoConterntResult(long id)
{
// Arrange
var emptyList = new List<WorkshopDTO>();
workshopServiceMoq.Setup(x => x.GetWorkshopsByProviderId(id)).ReturnsAsync(emptyList);

// Act
var result = await controller.GetByProviderId(id).ConfigureAwait(false) as NoContentResult;

// Assert
Assert.That(result, Is.Not.Null);
Assert.AreEqual(204, result.StatusCode);
}
#endregion

#region CreateWorkshop
[Test]
public async Task CreateWorkshop_WhenModelIsValid_ShouldReturnCreatedAtActionResult()
Expand Down Expand Up @@ -375,6 +422,7 @@ private IEnumerable<WorkshopDTO> FakeWorkshops()
DaysPerWeek = 1,
Head = "Head1",
HeadDateOfBirth = new DateTime(1980, month: 12, 28),
ProviderId = 1,
ProviderTitle = "ProviderTitle",
DisabilityOptionsDesc = "Desc1",
Website = "website1",
Expand All @@ -396,6 +444,8 @@ private IEnumerable<WorkshopDTO> FakeWorkshops()
DaysPerWeek = 2,
Head = "Head2",
HeadDateOfBirth = new DateTime(1980, month: 12, 28),
ProviderId = 1,
ProviderTitle = "ProviderTitle",
DisabilityOptionsDesc = "Desc2",
Website = "website2",
Instagram = "insta2",
Expand All @@ -416,7 +466,8 @@ private IEnumerable<WorkshopDTO> FakeWorkshops()
DaysPerWeek = 3,
Head = "Head3",
HeadDateOfBirth = new DateTime(1980, month: 12, 28),
ProviderTitle = "ProviderTitle",
ProviderId = 2,
ProviderTitle = "ProviderTitleNew",
DisabilityOptionsDesc = "Desc3",
Website = "website3",
Instagram = "insta3",
Expand All @@ -437,7 +488,8 @@ private IEnumerable<WorkshopDTO> FakeWorkshops()
DaysPerWeek = 4,
Head = "Head4",
HeadDateOfBirth = new DateTime(1980, month: 12, 28),
ProviderTitle = "ProviderTitle",
ProviderId = 2,
ProviderTitle = "ProviderTitleNew",
DisabilityOptionsDesc = "Desc4",
Website = "website4",
Instagram = "insta4",
Expand All @@ -458,7 +510,8 @@ private IEnumerable<WorkshopDTO> FakeWorkshops()
DaysPerWeek = 5,
Head = "Head5",
HeadDateOfBirth = new DateTime(1980, month: 12, 28),
ProviderTitle = "ProviderTitle",
ProviderId = 2,
ProviderTitle = "ProviderTitleNew",
DisabilityOptionsDesc = "Desc5",
Website = "website5",
Instagram = "insta5",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ public async Task GetWorkshopsByOrganization_WhenIdIsValid_ShouldReturnEntities(
.ReturnsAsync(workshops);

// Act
var result = await workshopService.GetWorkshopsByOrganization(id).ConfigureAwait(false);
var result = await workshopService.GetWorkshopsByProviderId(id).ConfigureAwait(false);

// Assert
Assert.Multiple(() =>
Expand All @@ -156,7 +156,7 @@ public async Task GetWorkshopsByOrganization_WhenThereIsNoWorkshop_ShouldReturnE
.ReturnsAsync(emptyList);

// Act
var result = await workshopService.GetWorkshopsByOrganization(id).ConfigureAwait(false);
var result = await workshopService.GetWorkshopsByProviderId(id).ConfigureAwait(false);

// Assert
Assert.Multiple(() =>
Expand Down
27 changes: 27 additions & 0 deletions OutOfSchool/OutOfSchool.WebApi/Controllers/WorkshopController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,33 @@ public async Task<IActionResult> GetById(long id)
return Ok(workshop);
}

/// <summary>
/// Get workshop by Provider's Id.
/// </summary>
/// <param name="id">Provider's id.</param>
/// <returns><see cref="IEnumerable{WorkshopDTO}"/>, or no content.</returns>
/// <response code="200">The list of found entities by given Id.</response>
/// <response code="204">No entity with given Id was found.</response>
/// <response code="500">If any server error occures. For example: Id was less than one.</response>
[AllowAnonymous]
[HttpGet("{id}")]
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(IEnumerable<WorkshopDTO>))]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> GetByProviderId(long id)
{
this.ValidateId(id, localizer);

var workshops = await workshopService.GetWorkshopsByProviderId(id).ConfigureAwait(false);

if (!workshops.Any())
{
return NoContent();
}

return Ok(workshops);
}

/// <summary>
/// Add new workshop to the database.
/// </summary>
Expand Down
6 changes: 3 additions & 3 deletions OutOfSchool/OutOfSchool.WebApi/Services/IWorkshopService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ public interface IWorkshopService
Task<WorkshopDTO> GetById(long id);

/// <summary>
/// Get all workshops by organization Id.
/// Get all workshops by provider Id.
/// </summary>
/// <param name="id">Organization's key.</param>
/// <param name="id">Provider's key.</param>
/// <returns>A <see cref="Task"/> representing the result of the asynchronous operation. The task result contains a <see cref="IEnumerable{WorkshopDTO}"/> that contains elements from the input sequence.</returns>
Task<IEnumerable<WorkshopDTO>> GetWorkshopsByOrganization(long id);
Task<IEnumerable<WorkshopDTO>> GetWorkshopsByProviderId(long id);

/// <summary>
/// Update entity.
Expand Down
3 changes: 2 additions & 1 deletion OutOfSchool/OutOfSchool.WebApi/Services/WorkshopService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,8 @@ public async Task<WorkshopDTO> GetById(long id)
return workshopDTO;
}

public async Task<IEnumerable<WorkshopDTO>> GetWorkshopsByOrganization(long id)
/// <inheritdoc/>
public async Task<IEnumerable<WorkshopDTO>> GetWorkshopsByProviderId(long id)
{
logger.Information($"Getting Workshop by organization started. Looking ProviderId = {id}.");

Expand Down