public void after_the_dsl_is_configured_order_cannot_be_null() { var order = new Order(); var dsl = new ShoppingCartScriptEngine(order); Assert.IsNotNull(dsl.Order); }
public void dsl_order_ammount_should_be_equal() { var order = new Order(); var dsl = new ShoppingCartScriptEngine(order); Assert.AreEqual(dsl.OrderAmmountIs, order.TotalAmmount); }
public void fix_parenthesis_for_argument_less_method() { const string src = "block_the_order"; var engine = new ShoppingCartScriptEngine(new Order()); Assert.AreEqual("block_the_order()", engine.Prepare(src)); }
public void fix_parenthesis_for_one_argument_method() { const string src = "apply_discount 10%"; var engine = new ShoppingCartScriptEngine(new Order()); Assert.AreEqual("apply_discount(10%)", engine.Prepare(src)); }
public void when_an_order_is_international_should_add_shipping_fees() { const string src = "when is_international_order:\r\n" + " add_shipping_fee $10"; var dsl = new ShoppingCartScriptEngine(new Order { TotalAmmount = 99, Country = Country.Grece }); dsl.Eval(src); Assert.AreEqual(109d, dsl.OrderAmmountIs); }
public void when_order_ammount_is_greater_than_10000_and_is_a_good_credit_customer_apply_10_percent_discount() { const string src = "when is_a_good_credit_customer and order_ammount_is > 10000:\r\n" + " apply_discount 10%"; var dsl = new ShoppingCartScriptEngine(new Order { TotalAmmount = 11 * 1000 }); dsl.Eval(src); Assert.AreEqual(9900, dsl.OrderAmmountIs); }
public void when_is_a_bad_credit_customer_and_order_ammount_is_greater_than_10000_should_block_the_order() { const string src= "when is_a_bad_credit_customer and order_ammount_is > 10000:\r\n" + " block_the_order"; var dsl = new ShoppingCartScriptEngine( new Order { Customer = new Customer { CreditLine = CustomerCreditLine.Bad }, TotalAmmount = 11 * 1000 }); dsl.Eval(src); Assert.IsTrue(dsl.OrderIsBlocked); }
public void when_is_a_bad_credit_customer_and_order_ammount_is_greater_than_10000_should_block_the_order() { const string src = "when is_a_bad_credit_customer and order_ammount_is > 10000:\r\n" + " block_the_order"; var dsl = new ShoppingCartScriptEngine( new Order { Customer = new Customer { CreditLine = CustomerCreditLine.Bad }, TotalAmmount = 11 * 1000 }); dsl.Eval(src); Assert.IsTrue(dsl.OrderIsBlocked); }