コード例 #1
0
 public 予約希望(MeetingRoom room, ReserverId reserverId, 予約期間 range, 想定使用人数 想定使用人数)
 {
     this.room       = room;
     this.range      = range;
     this.想定使用人数     = 想定使用人数;
     this.reserverId = reserverId;
 }
コード例 #2
0
            public void 終了時刻が被る()
            {
                var me = new 予約期間(new 予約開始日時(new 予約年月日(2020, 2, 23), 予約開始_時._15, 予約_分._00),
                                  new 予約終了日時(new 予約年月日(2020, 2, 23), 予約終了_時._16, 予約_分._00));
                var 被っている = me.時間かぶってますか(_target);

                Assert.True(被っている);
            }
コード例 #3
0
 public void 終了日時より開始日時が未来であること()
 {
     var ex = Assert.Throws <ドメインエラーException>(() =>
     {
         var me = new 予約期間(new 予約開始日時(new 予約年月日(2020, 2, 23), 予約開始_時._18, 予約_分._00),
                           new 予約終了日時(new 予約年月日(2020, 2, 23), 予約終了_時._11, 予約_分._00));
     });
 }
コード例 #4
0
 public void 開始日時と終了日時が違う日付だったらエラーになること()
 {
     var ex = Assert.Throws <ドメインエラーException>(() =>
     {
         var me = new 予約期間(new 予約開始日時(new 予約年月日(2020, 2, 22), 予約開始_時._16, 予約_分._00),
                           new 予約終了日時(new 予約年月日(2020, 2, 23), 予約終了_時._16, 予約_分._00));
     });
 }
コード例 #5
0
 public void 開始日時と終了日時が一緒のものは作れないよ()
 {
     var ex = Assert.Throws <ドメインエラーException>(() =>
     {
         var me = new 予約期間(new 予約開始日時(new 予約年月日(2020, 2, 23), 予約開始_時._16, 予約_分._00),
                           new 予約終了日時(new 予約年月日(2020, 2, 23), 予約終了_時._16, 予約_分._00));
     });
 }
コード例 #6
0
            public void 開始時刻と_対象の終了時刻が同じ()
            {
                var me = new 予約期間(new 予約開始日時(new 予約年月日(2020, 2, 23), 予約開始_時._16, 予約_分._00),
                                  new 予約終了日時(new 予約年月日(2020, 2, 23), 予約終了_時._17, 予約_分._00));
                var 被っている = me.時間かぶってますか(_target);

                Assert.False(被っている);
            }
コード例 #7
0
            public void 終了時刻が_対象の開始時刻より前()
            {
                var me = new 予約期間(new 予約開始日時(new 予約年月日(2020, 2, 23), 予約開始_時._13, 予約_分._30),
                                  new 予約終了日時(new 予約年月日(2020, 2, 23), 予約終了_時._14, 予約_分._00));
                var 被っている = me.時間かぶってますか(_target);

                Assert.False(被っている);
            }
コード例 #8
0
        public bool この会議室は予約可能ですか(MeetingRoom room, ReserverId id, 予約期間 range, 想定使用人数 ninzu)
        {
            var other = new 予約希望(room, range);

            bool 被っている   = list.Any(x => x.かぶってますか(other));
            bool 予約可能である = !被っている;

            return(予約可能である);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
            });
        }
コード例 #11
0
        public 予約希望(MeetingRoom room, ReserverId reserverId, 予約期間 range, 想定使用人数 想定使用人数)
        {
            // TODO:「ルール5: 会議室を予約できるのは、使用したい日の30日前(休日も込み)とする。時間帯は関係なし」
            //    ===> 期間外だったらそもそも「不正な予約希望」とする。そもそも作らせない(Exception)
            //


            this.room       = room;
            this.range      = range;
            this.想定使用人数     = 想定使用人数;
            this.reserverId = reserverId;
        }
コード例 #12
0
        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));
        }
コード例 #13
0
        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(予約できるかどうか);
        }
コード例 #14
0
 public void Save(MeetingRoom room, ReserverId id, 予約期間 range, 想定使用人数 ninzu)
 // public void Save(予約 reserved)
 {
     list.Add(new 予約済み(room, range));
 }