コード例 #1
0
ファイル: ReviewTest.cs プロジェクト: ibarban/Bookstore
        public void UpdateNumberOfReviews()
        {
            using (var rhetos = new BookstoreRhetos())
            {
                var repository = rhetos.Resolve <Common.DomRepository>();

                var book = new Bookstore.Book {
                    Title = nameof(UpdateNumberOfReviews)
                };
                repository.Bookstore.Book.Insert(book);

                int?getNuberOfReviews() => repository.Bookstore.NumberOfReviews
                .Query(nor => nor.ID == book.ID)
                .Select(nor => nor.Count)
                .SingleOrDefault();

                var review1 = new Bookstore.Review {
                    BookID = book.ID, Score = 3
                };
                var review2 = new Bookstore.Review {
                    BookID = book.ID, Score = 4
                };
                repository.Bookstore.Review.Insert(review1, review2);
                Assert.AreEqual(2, getNuberOfReviews());

                repository.Bookstore.Review.Delete(review1);
                Assert.AreEqual(1, getNuberOfReviews());
            }
        }
コード例 #2
0
ファイル: ReviewTest.cs プロジェクト: ibarban/Bookstore
        public void DefaultTextFromScore()
        {
            using (var rhetos = new BookstoreRhetos())
            {
                var repository = rhetos.Resolve <Common.DomRepository>();

                var book = new Bookstore.Book {
                    Title = nameof(DefaultTextFromScore)
                };
                repository.Bookstore.Book.Insert(book);

                var review1 = new Bookstore.Review {
                    BookID = book.ID, Score = 1
                };
                var review2 = new Bookstore.Review {
                    BookID = book.ID, Score = 3, Text = "OK"
                };
                var review3 = new Bookstore.Review {
                    BookID = book.ID, Score = 5
                };
                repository.Bookstore.Review.Insert(review1, review2, review3);

                var reviews = repository.Bookstore.Review.Load(new[] { review1.ID, review2.ID, review3.ID });
                Assert.AreEqual(
                    "1 - I don't like it, 3 - OK, 5 - I like it",
                    TestUtility.DumpSorted(reviews, r => r.Score + " - " + r.Text));
            }
        }
コード例 #3
0
        public string WriteBook()
        {
            var newBook = new Bookstore.Book {
                Title = "NewBook"
            };
            var saveCommandInfo = new SaveEntityCommandInfo {
                Entity = "Bookstore.Book", DataToInsert = new[] { newBook }
            };

            processingEngine.Execute(saveCommandInfo);
            unitOfWork.CommitAndClose(); // Commits and closes the database transaction for the current unit of work scope (web request).
            return("1 book inserted.");
        }
コード例 #4
0
        public static void StartupTime(TestContext testContext)
        {
            var sw = Stopwatch.StartNew();

            using (var rhetos = new BookstoreRhetos())
            {
                var repository = rhetos.Resolve <Common.DomRepository>();
                var book       = new Bookstore.Book {
                    Code = Guid.NewGuid().ToString(), Title = "abc"
                };
                repository.Bookstore.Book.Insert(book);
            }
            Console.WriteLine($"Rhetos service startup time: {sw.Elapsed}");
        }
コード例 #5
0
ファイル: ReviewTest.cs プロジェクト: ibarban/Bookstore
        public void AppendTextIfScoreChanged()
        {
            using (var rhetos = new BookstoreRhetos())
            {
                var repository = rhetos.Resolve <Common.DomRepository>();

                var book = new Bookstore.Book {
                    Title = nameof(AppendTextIfScoreChanged)
                };
                repository.Bookstore.Book.Insert(book);

                var reviews = new[]
                {
                    new Bookstore.Review {
                        BookID = book.ID, Score = 2, Text = "A"
                    },
                    new Bookstore.Review {
                        BookID = book.ID, Score = 3, Text = "B"
                    },
                    new Bookstore.Review {
                        BookID = book.ID, Score = 4, Text = "C"
                    },
                };
                repository.Bookstore.Review.Insert(reviews);

                // Reload before editing.
                reviews = repository.Bookstore.Review.Load(reviews.Select(r => r.ID))
                          .OrderBy(r => r.Score).ToArray();
                reviews[0].Score = 3;
                reviews[1].Score = 5;
                repository.Bookstore.Review.Update(reviews);

                Assert.AreEqual(
                    "3 - A (changed from 2 to 3), 4 - C, 5 - B (changed from 3 to 5)",
                    TestUtility.DumpSorted(
                        repository.Bookstore.Review.Query(reviews.Select(r => r.ID)),
                        r => r.Score + " - " + r.Text));
            }
        }
コード例 #6
0
ファイル: ReviewTest.cs プロジェクト: ibarban/Bookstore
        public void DenyChangeOfLockedTitle()
        {
            using (var rhetos = new BookstoreRhetos())
            {
                var repository = rhetos.Resolve <Common.DomRepository>();

                var book1 = new Bookstore.Book {
                    Title = "book1"
                };
                var book2 = new Bookstore.Book {
                    Title = "book2 locked"
                };
                repository.Bookstore.Book.Insert(book1, book2);

                var review1 = new Bookstore.Review {
                    BookID = book1.ID, Score = 3
                };
                var review2 = new Bookstore.Review {
                    BookID = book2.ID, Score = 4
                };
                repository.Bookstore.Review.Insert(review1, review2);

                review1.Text = "updated text 1";
                repository.Bookstore.Review.Update(review1);

                review1.Score += 1;
                repository.Bookstore.Review.Update(review1);

                review2.Text = "updated text 2";
                repository.Bookstore.Review.Update(review2);

                review2.Score += 1;
                TestUtility.ShouldFail <UserException>(
                    () => repository.Bookstore.Review.Update(review2),
                    "It is not allowed to modify score");
            }
        }