آموزش عملی و پروژه محور Domain Driven Design و CQRS #10 قسمت دهم از یک سری آموزشی از وبسایت پرووید است که در رابطه با Domain Driven Design و CQRS تنظیم شده است. پس از این دوره ی آموزشی می توانید از بسته های آموزشی وبسایت پرووید در رابطه با Domain Driven Design را استفاده کنید.

در قسمت قبلی از این آموزش در مورد فلان صحبت کردیم.

در قسمت بعدی سه تست بسیار جالب خواهیم نوشت. یک تست برای ثبت سفارشی که فقط حاوی نوشیدنی است یک تست برای سفارشی که فقط حاوی غذا است و یک تست برای سفارشی که حاوی مقداری غذا و همچنین نوشیدنی است.

بسته ی آموزش کاربردی طراحی نرم افزار Domain Driven Design

از شما دعوت می کنیم از بسته ی آموزش کاربردی طراحی نرم افزار Domain Driven Design دیدن کنید.

[Test]
public void CanPlaceDrinksOrder()
{
    Test(
        Given(new TabOpened
        {
            Id = testId,
            TableNumber = testTable,
            Waiter = testWaiter
        }),
        When(new PlaceOrder
        {
            Id = testId,
            Items = new List<OrderedItem>
        }),
        Then(new DrinksOrdered
        {
            Id = testId,
            Items = new List<OrderedItem> { testDrink1, testDrink2 }
        }));
}

[Test]
public void CanPlaceFoodOrder()
{
    Test(
        Given(new TabOpened
        {
            Id = testId,
            TableNumber = testTable,
            Waiter = testWaiter
        }),
        When(new PlaceOrder
        {
            Id = testId,
            Items = new List<OrderedItem> { testFood1, testFood1 }
        }),
        Then(new FoodOrdered
        {
            Id = testId,
            Items = new List<OrderedItem> { testFood1, testFood1 }
        }));
}

[Test]
public void CanPlaceFoodAndDrinkOrder()
{
    Test(
        Given(new TabOpened
        {
            Id = testId,
            TableNumber = testTable,
            Waiter = testWaiter
        }),
        When(new PlaceOrder
        {
            Id = testId,
            Items = new List<OrderedItem> { testFood1, testDrink2 }
        }),
        Then(new DrinksOrdered
        {
            Id = testId,
            Items = new List<OrderedItem> { testDrink2 }
        },
        new FoodOrdered
        {
            Id = testId,
            Items = new List<OrderedItem> { testFood1 }
        }));
}

هدف ما این است که اطمینان حاصل کنیم که آیتم ها در Event های به درستی دسته بندی شوند و سفارش هایی که حاوی غذا و یا نوشیدنی خالی هستند Event ی را ایجاد نکنند.

بسته ی آموزش اصول طراحی نرم افزار Domain Driven Design

از شما دعوت می کنیم از بسته ی آموزش اصول طراحی نرم افزار Domain Driven Design دیدن کنید.

همه این سه تست در ابتدا با شکست روبرو خواهند شد. در توضیحات علت شکست گفته می شود که TabAggregate نمی ‌داند چطور TabOpened را اعمال کند.

در قسمت بعدی از این آموزش در مورد همین مبحث صحبت خواهیم کرد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *