From 6dba1973af2a0895cee2fa4240fae6bca8e5f53b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 15 Aug 2019 11:07:04 +0300 Subject: [PATCH] Added tests to bookstore angular sample --- build-all.ps1 | 1 - docs/en/Tutorials/Angular/Part-III.md | 4 +- .../images/bookstore-test-projects-v2.png | Bin 6864 -> 0 bytes .../images/bookstore-test-projects-v3.png | Bin 0 -> 18079 bytes .../BookAppService_Tests.cs | 72 ++++++++++++++++++ .../BookStoreTestDataSeedContributor.cs | 43 +++++++++-- 6 files changed, 112 insertions(+), 8 deletions(-) delete mode 100644 docs/en/Tutorials/Angular/images/bookstore-test-projects-v2.png create mode 100644 docs/en/Tutorials/Angular/images/bookstore-test-projects-v3.png create mode 100644 samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Application.Tests/BookAppService_Tests.cs diff --git a/build-all.ps1 b/build-all.ps1 index 023cbdeb4a..649abc5f8c 100644 --- a/build-all.ps1 +++ b/build-all.ps1 @@ -21,7 +21,6 @@ $solutionPaths = ( "modules/client-simulation", "templates/module/aspnet-core", "templates/app/aspnet-core", - "samples/MicroserviceDemo", "abp_io/AbpIoLocalization" ) diff --git a/docs/en/Tutorials/Angular/Part-III.md b/docs/en/Tutorials/Angular/Part-III.md index ffc79de5b1..93934da396 100644 --- a/docs/en/Tutorials/Angular/Part-III.md +++ b/docs/en/Tutorials/Angular/Part-III.md @@ -8,13 +8,13 @@ This is the third part of the Angular tutorial series. See all parts: - [Part II: Create, Update and Delete books](Part-II.md) - **Part III: Integration Tests (this tutorial)** -You can access to the **source code** of the application from the [GitHub repository](https://github.com/abpframework/abp/tree/dev/samples/BookStore-Angular-MongoDb). +This part covers the **server side** tests. You can access to the **source code** of the application from the [GitHub repository](https://github.com/abpframework/abp/tree/dev/samples/BookStore-Angular-MongoDb). ### Test Projects in the Solution There are multiple test projects in the solution: -![bookstore-test-projects-v2](images/bookstore-test-projects-v2.png) +![bookstore-test-projects](images/bookstore-test-projects-v3.png) Each project is used to test the related application project. Test projects use the following libraries for testing: diff --git a/docs/en/Tutorials/Angular/images/bookstore-test-projects-v2.png b/docs/en/Tutorials/Angular/images/bookstore-test-projects-v2.png deleted file mode 100644 index 8701164d7514d15b27b6f83dfde1536bc38f5c58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6864 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 P&w!-F<;5yR3(); + } + + [Fact] + public async Task Should_Get_List_Of_Books() + { + //Act + var result = await _bookAppService.GetListAsync( + new PagedAndSortedResultRequestDto() + ); + + //Assert + result.TotalCount.ShouldBeGreaterThan(0); + result.Items.ShouldContain(b => b.Name == "Test book 1"); + } + + [Fact] + public async Task Should_Create_A_Valid_Book() + { + //Act + var result = await _bookAppService.CreateAsync( + new CreateUpdateBookDto + { + Name = "New test book 42", + Price = 10, + PublishDate = DateTime.Now, + Type = BookType.ScienceFiction + } + ); + + //Assert + result.Id.ShouldNotBe(Guid.Empty); + result.Name.ShouldBe("New test book 42"); + } + + [Fact] + public async Task Should_Not_Create_A_Book_Without_Name() + { + var exception = await Assert.ThrowsAsync(async () => + { + await _bookAppService.CreateAsync( + new CreateUpdateBookDto + { + Name = "", + Price = 10, + PublishDate = DateTime.Now, + Type = BookType.ScienceFiction + } + ); + }); + + exception.ValidationErrors + .ShouldContain(err => err.MemberNames.Any(mem => mem == "Name")); + } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/BookStoreTestDataSeedContributor.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/BookStoreTestDataSeedContributor.cs index 5712782714..116e25ed25 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/BookStoreTestDataSeedContributor.cs +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/BookStoreTestDataSeedContributor.cs @@ -1,16 +1,49 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; using Volo.Abp.Data; using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Guids; namespace Acme.BookStore { - public class BookStoreTestDataSeedContributor : IDataSeedContributor, ITransientDependency + public class BookStoreTestDataSeedContributor + : IDataSeedContributor, ITransientDependency { - public Task SeedAsync(DataSeedContext context) + private readonly IRepository _bookRepository; + private readonly IGuidGenerator _guidGenerator; + + public BookStoreTestDataSeedContributor( + IRepository bookRepository, + IGuidGenerator guidGenerator) + { + _bookRepository = bookRepository; + _guidGenerator = guidGenerator; + } + + public async Task SeedAsync(DataSeedContext context) { - /* Seed additional test data... */ + await _bookRepository.InsertAsync( + new Book + { + Id = _guidGenerator.Create(), + Name = "Test book 1", + Type = BookType.Fantastic, + PublishDate = new DateTime(2015, 05, 24), + Price = 21 + } + ); - return Task.CompletedTask; + await _bookRepository.InsertAsync( + new Book + { + Id = _guidGenerator.Create(), + Name = "Test book 2", + Type = BookType.Science, + PublishDate = new DateTime(2014, 02, 11), + Price = 15 + } + ); } } } \ No newline at end of file