Skip to content

Commit

Permalink
Add new project Grand.API.Tests
Browse files Browse the repository at this point in the history
  • Loading branch information
KrzysztofPajak committed Jan 8, 2019
1 parent c24ccb3 commit 1bf0172
Show file tree
Hide file tree
Showing 4 changed files with 180 additions and 0 deletions.
7 changes: 7 additions & 0 deletions GrandNode.sln
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-co
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Grand.Api", "Grand.Api\Grand.Api.csproj", "{BDC75DE4-FB40-4BFD-91DC-215E3AA64071}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grand.Api.Tests", "Tests\Grand.Api.Tests\Grand.Api.Tests.csproj", "{66673B1E-AA53-43DC-9905-90DC30EABE96}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -160,6 +162,10 @@ Global
{BDC75DE4-FB40-4BFD-91DC-215E3AA64071}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BDC75DE4-FB40-4BFD-91DC-215E3AA64071}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BDC75DE4-FB40-4BFD-91DC-215E3AA64071}.Release|Any CPU.Build.0 = Release|Any CPU
{66673B1E-AA53-43DC-9905-90DC30EABE96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{66673B1E-AA53-43DC-9905-90DC30EABE96}.Debug|Any CPU.Build.0 = Debug|Any CPU
{66673B1E-AA53-43DC-9905-90DC30EABE96}.Release|Any CPU.ActiveCfg = Release|Any CPU
{66673B1E-AA53-43DC-9905-90DC30EABE96}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -188,6 +194,7 @@ Global
{87C1BE44-52AF-4F46-B065-8356D59CEB13} = {615BCD39-09A7-4924-AB80-AA4032D477D1}
{B2A527D1-C59E-4B08-B17D-F68B1526FAEC} = {615BCD39-09A7-4924-AB80-AA4032D477D1}
{BDC75DE4-FB40-4BFD-91DC-215E3AA64071} = {F2418F56-9620-4BA3-9078-D9732EC8DD48}
{66673B1E-AA53-43DC-9905-90DC30EABE96} = {02A095EA-356B-4419-86B4-E7893017CBF2}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {65BA1180-F5CC-42E1-B689-71E14D588393}
Expand Down
132 changes: 132 additions & 0 deletions Tests/Grand.Api.Tests/ControllerTests/CategoryControllerTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
using Grand.Api.DTOs.Catalog;
using Grand.Api.Services;
using Grand.Api.Tests.Helpers;
using Grand.Core.Data;
using Grand.Core.Domain.Catalog;
using Grand.Services.Security;
using Grand.Services.Tests;
using Grand.Web.Areas.Api.Controllers.OData;
using Microsoft.AspNet.OData.Results;
using Microsoft.AspNetCore.Mvc;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Linq;
using Moq;
using System.Linq;

namespace Grand.Api.Tests.ControllerTests
{
[TestClass]
public class CategoryControllerTest
{
private string _id1 = "5c349ef4d595601e04da9dfc";
private string _id2 = "5c349ef4d595601e04da9dfd";
private string _id3 = "5c349ef4d595601e04da9dfe";
private CategoryDto modelInsertOrUpdate = new CategoryDto()
{
Id = "",
Name = "sample category 4"
};
private IRepository<Category> _categoryRepo;

private CategoryController _categoryController;
private ICategoryApiService _categoryApiService;
private IPermissionService _permissionService;
private IMongoCollection<CategoryDto> _categoryDto;

[TestInitialize()]
public void TestInitialize()
{
Mongodb.IgnoreExtraElements();
InitCategoryRepo();
var tempCategoryApiService = new Mock<ICategoryApiService>();
{
tempCategoryApiService.Setup(instance => instance.GetCategories()).Returns(_categoryDto.AsQueryable());
tempCategoryApiService.Setup(instance => instance.GetById(_id1)).Returns(_categoryDto.AsQueryable().FirstOrDefault(x => x.Id == _id1));
tempCategoryApiService.Setup(instance => instance.InsertOrUpdateCategory(modelInsertOrUpdate)).Returns(InsertOrUpdate(modelInsertOrUpdate));

_categoryApiService = tempCategoryApiService.Object;
}
var tempPermissionService = new Mock<IPermissionService>();
{
tempPermissionService.Setup(instance => instance.Authorize(PermissionSystemName.Categories)).Returns(true);
_permissionService = tempPermissionService.Object;
}
_categoryController = new CategoryController(_categoryApiService, _permissionService);

}

private void InitCategoryRepo()
{
_categoryRepo = new MongoDBRepositoryTest<Category>();
_categoryRepo.Collection.DeleteMany(new BsonDocument());
_categoryRepo.Insert(new Category()
{
Id = _id1,
Name = "sample category 1"
});
_categoryRepo.Insert(new Category()
{
Id = _id2,
Name = "sample category 2"
});
_categoryRepo.Insert(new Category()
{
Id = _id3,
Name = "sample category 3"
});
_categoryDto = _categoryRepo.Database.GetCollection<CategoryDto>(typeof(Core.Domain.Catalog.Category).Name);
}
private CategoryDto InsertOrUpdate(CategoryDto model)
{
return model;
}


[TestMethod()]
public void Can_get_category()
{
IActionResult result = _categoryController.Get(_id1);

// Assert
var okObjectResult = result as OkObjectResult;
Assert.IsNotNull(okObjectResult);
var presentations = okObjectResult.Value as CategoryDto;
Assert.IsNotNull(presentations);
Assert.AreEqual("sample category 1", presentations.Name);
}

[TestMethod()]
public void Can_get_categories()
{
IActionResult result = _categoryController.Get();

// Assert
var okObjectResult = result as OkObjectResult;
Assert.IsNotNull(okObjectResult);
var presentations = okObjectResult.Value as IMongoQueryable<CategoryDto>;
Assert.IsNotNull(presentations);
var count = presentations.Count();
Assert.AreEqual(3, count);
}

[TestMethod()]
public void Can_Delete()
{
IActionResult result = _categoryController.Delete(_id1);
// Assert
var okResult = result as OkResult;
Assert.AreEqual(200, okResult.StatusCode);
}

[TestMethod()]
public void Can_Post()
{
var response = _categoryController.Post(modelInsertOrUpdate);
// Assert
var createResult = response as CreatedODataResult<CategoryDto>;
Assert.IsNotNull(createResult);
}
}
}
27 changes: 27 additions & 0 deletions Tests/Grand.Api.Tests/Grand.Api.Tests.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<IsPackable>false</IsPackable>
<Copyright>Copyright © UNIT-SOFT Sp. z o.o.</Copyright>
<Company>UNIT-SOFT Sp. z o.o.</Company>
<Authors>UNIT-SOFT Sp. z o.o.</Authors>
<PackageProjectUrl>https://grandnode.com/</PackageProjectUrl>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
<PackageReference Include="Moq" Version="4.10.1" />
<PackageReference Include="MSTest.TestFramework" Version="1.4.0" />
<PackageReference Include="MSTest.TestAdapter" Version="1.4.0" />
<PackageReference Include="NUnit" Version="3.11.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Grand.Core\Grand.Core.csproj" />
<ProjectReference Include="..\..\Grand.Framework\Grand.Framework.csproj" />
<ProjectReference Include="..\..\Grand.Services\Grand.Services.csproj" />
<ProjectReference Include="..\..\Grand.Api\Grand.Api.csproj" />
<ProjectReference Include="..\..\Grand.Web\Grand.Web.csproj" />
<ProjectReference Include="..\Grand.Services.Tests\Grand.Services.Tests.csproj" />
</ItemGroup>
</Project>
14 changes: 14 additions & 0 deletions Tests/Grand.Api.Tests/Helpers/Mongodb.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using MongoDB.Bson.Serialization.Conventions;

namespace Grand.Api.Tests.Helpers
{
public static class Mongodb
{
public static void IgnoreExtraElements()
{
var cp = new ConventionPack();
cp.Add(new IgnoreExtraElementsConvention(true));
ConventionRegistry.Register("ApplicationConventions", cp, t => true);
}
}
}

0 comments on commit 1bf0172

Please sign in to comment.