public void 適当な自動販売機で生成する() { var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); new 硬貨自動販売機ユーザUseCase(x); }
public void 硬貨500円は投入できる() { var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); x.Insert貨幣(new 硬貨(500)); Assert.IsTrue(x.投入金額合計() == new 通貨(500)); }
public void 投入できない硬貨を投入すると失敗する() { var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); var u = new 硬貨自動販売機ユーザUseCase(x); var y = u.Insert貨幣(new 自動販売機Insert貨幣Command(5)); Assert.IsTrue(y is 自動販売機Insert貨幣FailureCommandResult); }
public void 存在しない商品コードを取得するとNull() { var c = new 販売コード("CO-1234"); var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); var y = x.Find商品(c); Assert.IsTrue(y == null); }
public void 商品一覧を取得する() { var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); var u = new 硬貨自動販売機ユーザUseCase(x); r.Register商品(new 販売コード("COL-001"), new 販売商品(new 商品名("コーラ"), new 通貨(120))); r.Register商品(new 販売コード("WAT-002"), new 販売商品(new 商品名("おいしい水"), new 通貨(100))); u.商品一覧(new 自動販売機商品一覧Command()); }
public void 硬貨100円と500円を投入して返却すると100円と500円が返却される() { var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); x.Insert貨幣(new 硬貨(100)); x.Insert貨幣(new 硬貨(500)); var y = x.Refund貨幣().OrderBy(x => x.Value).ToList(); Assert.IsTrue(y[0] == new 硬貨(100)); Assert.IsTrue(y[1] == new 硬貨(500)); }
public void 硬貨5円は投入できない() { var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); try { x.Insert貨幣(new 硬貨(5)); } catch (InvalidOperationException) { return; } Assert.Fail(); }
public void 存在しない販売コードでは決済できない() { var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); try { x.決済(new 販売コード("AYBABTU")); } catch (自動販売機該当商品なしException) { return; } Assert.Fail(); }
public void 販売コードがNullでは決済できない() { var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); try { x.決済(null); } catch (ArgumentNullException) { return; } Assert.Fail(); }
public void 商品コードから商品を取得する() { var c = new 販売コード("CO-1234"); var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); r.Register商品(c, new 販売商品(new 商品名("コーラ"), new 通貨(100))); r.Add数量(c, 100); var y = x.Find商品(c); Assert.IsTrue(y.商品名.Equals(new 商品名("コーラ"))); Assert.IsTrue(y.価格.Equals(new 通貨(100))); Assert.IsTrue(y.数量.Equals(100)); }
public void 在庫があって十分な金額であれば成功する() { var c = new 販売コード("COLA-001"); var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); var u = new 硬貨自動販売機ユーザUseCase(x); r.Register商品(c, new 販売商品(new 商品名("コーラ"), new 通貨(120))); r.Add数量(c, 1); u.Insert貨幣(new 自動販売機Insert貨幣Command(500)); var y = u.決済(new 自動販売機決済Command(c)); Assert.IsTrue(y is 自動販売機決済SuccessCommandResult); }
public void 硬貨100円と500円を投入すると600円になる() { var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); var u = new 硬貨自動販売機ユーザUseCase(x); u.Insert貨幣(new 自動販売機Insert貨幣Command(100)); u.Insert貨幣(new 自動販売機Insert貨幣Command(500)); var y = u.投入金額合計(new 自動販売機投入金額合計Command()); Assert.IsTrue(y is 自動販売機投入金額合計CommandResult); var z = y as 自動販売機投入金額合計CommandResult; Assert.IsTrue(z.投入金額合計 == new 通貨(600)); }
public void 在庫切れの商品では決済できない() { var c = new 販売コード("COLA-001"); var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); r.Register商品(c, new 販売商品(new 商品名("コーラ"), new 通貨(100))); try { x.決済(c); } catch (自動販売機在庫切れException) { return; } Assert.Fail(); }
public void 該当商品なしだと失敗する() { var c = new 販売コード("COLA-001"); var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); var u = new 硬貨自動販売機ユーザUseCase(x); r.Register商品(c, new 販売商品(new 商品名("コーラ"), new 通貨(120))); u.Insert貨幣(new 自動販売機Insert貨幣Command(500)); var y = u.決済(new 自動販売機決済Command(new 販売コード("WATR-002"))); Assert.IsTrue(y is 自動販売機決済FailureCommandResult); var z = y as 自動販売機決済FailureCommandResult; Assert.IsTrue(z.Reason == 自動販売機決済FailureReason.該当商品なし); }
public void 投入金額不足では決済できない() { var c = new 販売コード("COLA-001"); var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); r.Register商品(c, new 販売商品(new 商品名("コーラ"), new 通貨(110))); r.Add数量(c, 1); x.Insert貨幣(new 硬貨(100)); try { x.決済(c); } catch (自動販売機金額不足Exception) { return; } Assert.Fail(); }
public void 硬貨100円と500円を投入してから返却すると100円と500円が返却される() { var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); var u = new 硬貨自動販売機ユーザUseCase(x); u.Insert貨幣(new 自動販売機Insert貨幣Command(100)); u.Insert貨幣(new 自動販売機Insert貨幣Command(500)); var y = u.Refund貨幣(new 自動販売機Refund貨幣Command()); Assert.IsTrue(y is 自動販売機Refund貨幣CommandResult); var z = y as 自動販売機Refund貨幣CommandResult; var t = z.返金.OrderBy(x => x.Value).ToList(); Assert.IsTrue(t[0] == new 硬貨(100)); Assert.IsTrue(t[1] == new 硬貨(500)); }
public void 投入金額が十分であれば決済できる() { var c = new 販売コード("COLA-001"); var r = new Memory商品在庫Repository(); var x = new 硬貨自動販売機(r, new 硬貨支払機()); r.Register商品(c, new 販売商品(new 商品名("コーラ"), new 通貨(140))); r.Add数量(c, 1); x.Insert貨幣(new 硬貨(500)); var y = x.決済(c); Assert.IsTrue(y.商品.商品名.Equals(new 商品名("コーラ"))); var t = y.釣銭.OrderBy(x => x.Value).ToList(); Assert.IsTrue(t[0] == new 硬貨(10)); Assert.IsTrue(t[1] == new 硬貨(50)); Assert.IsTrue(t[2] == new 硬貨(100)); Assert.IsTrue(t[3] == new 硬貨(100)); Assert.IsTrue(t[4] == new 硬貨(100)); }