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 商品コードから商品を取得する() { 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 在庫切れの商品では決済できない() { 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 投入金額が十分であれば決済できる() { 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)); }