public 予約希望(MeetingRoom room, ReserverId reserverId, 予約期間 range, 想定使用人数 想定使用人数) { this.room = room; this.range = range; this.想定使用人数 = 想定使用人数; this.reserverId = reserverId; }
public void 終了時刻が被る() { var me = new 予約期間(new 予約開始日時(new 予約年月日(2020, 2, 23), 予約開始_時._15, 予約_分._00), new 予約終了日時(new 予約年月日(2020, 2, 23), 予約終了_時._16, 予約_分._00)); var 被っている = me.時間かぶってますか(_target); Assert.True(被っている); }
public void 終了日時より開始日時が未来であること() { var ex = Assert.Throws <ドメインエラーException>(() => { var me = new 予約期間(new 予約開始日時(new 予約年月日(2020, 2, 23), 予約開始_時._18, 予約_分._00), new 予約終了日時(new 予約年月日(2020, 2, 23), 予約終了_時._11, 予約_分._00)); }); }
public void 開始日時と終了日時が違う日付だったらエラーになること() { var ex = Assert.Throws <ドメインエラーException>(() => { var me = new 予約期間(new 予約開始日時(new 予約年月日(2020, 2, 22), 予約開始_時._16, 予約_分._00), new 予約終了日時(new 予約年月日(2020, 2, 23), 予約終了_時._16, 予約_分._00)); }); }
public void 開始日時と終了日時が一緒のものは作れないよ() { var ex = Assert.Throws <ドメインエラーException>(() => { var me = new 予約期間(new 予約開始日時(new 予約年月日(2020, 2, 23), 予約開始_時._16, 予約_分._00), new 予約終了日時(new 予約年月日(2020, 2, 23), 予約終了_時._16, 予約_分._00)); }); }
public void 開始時刻と_対象の終了時刻が同じ() { var me = new 予約期間(new 予約開始日時(new 予約年月日(2020, 2, 23), 予約開始_時._16, 予約_分._00), new 予約終了日時(new 予約年月日(2020, 2, 23), 予約終了_時._17, 予約_分._00)); var 被っている = me.時間かぶってますか(_target); Assert.False(被っている); }
public void 終了時刻が_対象の開始時刻より前() { var me = new 予約期間(new 予約開始日時(new 予約年月日(2020, 2, 23), 予約開始_時._13, 予約_分._30), new 予約終了日時(new 予約年月日(2020, 2, 23), 予約終了_時._14, 予約_分._00)); var 被っている = me.時間かぶってますか(_target); Assert.False(被っている); }
public bool この会議室は予約可能ですか(MeetingRoom room, ReserverId id, 予約期間 range, 想定使用人数 ninzu) { var other = new 予約希望(room, range); bool 被っている = list.Any(x => x.かぶってますか(other)); bool 予約可能である = !被っている; return(予約可能である); }
public void Aという会議室を予約する() { // このメソッドの中で I予約希望Repository repository = new 予約希望Repository(); var room = new MeetingRoom(MeetingRoomName.A); var range = new 予約期間(new 予約年月日(2020, 2, 10), 予約開始_時._18, 予約開始_分._15, new コマ数(3)); repository.Save(room, null, range, null); }
public void Aという会議室を予約して失敗する() { // このメソッドの中で I予約希望Repository repository = new 予約希望Repository(); var room = new MeetingRoom(MeetingRoomName.A); var ex = Assert.Throws <ArgumentException>(() => { var range = new 予約期間(new 予約年月日(2020, 2, 10), 予約開始_時._18, 予約開始_分._15, new コマ数(4)); repository.Save(room, null, range, null); }); }
public 予約希望(MeetingRoom room, ReserverId reserverId, 予約期間 range, 想定使用人数 想定使用人数) { // TODO:「ルール5: 会議室を予約できるのは、使用したい日の30日前(休日も込み)とする。時間帯は関係なし」 // ===> 期間外だったらそもそも「不正な予約希望」とする。そもそも作らせない(Exception) // this.room = room; this.range = range; this.想定使用人数 = 想定使用人数; this.reserverId = reserverId; }
public void 利用したい会議室が_先約がなければ_予約可能状態であることが分かる() { // ・予約可能かどうかが判定できる // ・先約がなけれれば、予約可能ってわかる // ・先約があるとkは、予約できないよ // ・(他にも予約できない場合はあるかもしれないが、それはドメインエキスパートに聞こう! 例えば、雨漏りがあって会議室が予約も使用もできないとか) I予約希望Repository repository = new 予約希望Repository(); // TODO:trueを返すのはちょっと変 var 予約したい期間 = new 予約期間(new 予約年月日(2020, 2, 10), 予約開始_時._12, 予約開始_分._00, new コマ数(8)); Assert.True(repository.この会議室は予約可能ですか(new MeetingRoom(MeetingRoomName.A), null, 予約したい期間, null)); }
public void Aという会議室を予約可能か聞いたら_既に予約されていたのでNGだった() { // Prepare I予約希望Repository repository = new 予約希望Repository(); var room = new MeetingRoom(MeetingRoomName.A); var range = new 予約期間(new 予約年月日(2020, 2, 10), 予約開始_時._13, 予約開始_分._00, new コマ数(8)); repository.Save(room, null, range, null); // Execute var 予約したい期間 = new 予約期間(new 予約年月日(2020, 2, 10), 予約開始_時._12, 予約開始_分._00, new コマ数(8)); var 予約できるかどうか = repository.この会議室は予約可能ですか(room, null, 予約したい期間, null); Assert.False(予約できるかどうか); }
public void Save(MeetingRoom room, ReserverId id, 予約期間 range, 想定使用人数 ninzu) // public void Save(予約 reserved) { list.Add(new 予約済み(room, range)); }