コード例 #1
0
ファイル: StoreTests.cs プロジェクト: bihe/bookmarks-dotnet
        public async Task TestUnitOfWork()
        {
            Assert.NotNull(context);

            var itemId = NewId;
            await repo.InUnitOfWorkAsync(async() => {
                // create a folder-hierarchy /A/B/C
                var item = await repo.Create(new BookmarkEntity {
                    Id          = itemId,
                    ChildCount  = 0,
                    Created     = DateTime.UtcNow,
                    DisplayName = "A",
                    Path        = "/",
                    SortOrder   = 0,
                    Type        = ItemType.Folder,
                    Url         = "http://url",
                    UserName    = Username
                });
                // rollback the transaction
                return(false, item);
            });

            var bm = await repo.GetBookmarkById(itemId, Username);

            Assert.Null(bm);

            itemId = NewId;
            await Assert.ThrowsAsync <Exception>(() => {
                return(repo.InUnitOfWorkAsync <BookmarkEntity>(async() => {
                    // create a folder-hierarchy /A/B/C
                    await repo.Create(new BookmarkEntity {
                        Id = itemId,
                        ChildCount = 0,
                        Created = DateTime.UtcNow,
                        DisplayName = "A",
                        Path = "/",
                        SortOrder = 0,
                        Type = ItemType.Folder,
                        Url = "http://url",
                        UserName = Username
                    });
                    // rollback the transaction
                    throw new Exception("error");
                }));
            });

            bm = await repo.GetBookmarkById(itemId, Username);

            Assert.Null(bm);

            itemId = NewId;
            await repo.InUnitOfWorkAsync(async() => {
                // create a folder-hierarchy /A/B/C
                var item = await repo.Create(new BookmarkEntity {
                    Id          = itemId,
                    ChildCount  = 0,
                    Created     = DateTime.UtcNow,
                    DisplayName = "A",
                    Path        = "/",
                    SortOrder   = 0,
                    Type        = ItemType.Folder,
                    Url         = "http://url",
                    UserName    = Username
                });
                return(true, item);
            });

            bm = await repo.GetBookmarkById(itemId, Username);

            Assert.NotNull(bm);
        }