public void When_updating_published_updates_conference()
        {
            _service.Publish(this._conference.Id);
            Assert.IsTrue(_service.FindConference(this._conference.Slug).IsPublished);

            _service.Unpublish(this._conference.Id);
            Assert.IsFalse(_service.FindConference(this._conference.Slug).IsPublished);
        }
示例#2
0
        public static ConferenceInfo PopulateConfereceData(Table table)
        {
            var svc        = new ConferenceService(BuildEventBus());
            var conference = BuildInternalConferenceInfo(table);

            svc.CreateConference(conference);
            svc.Publish(conference.Id);
            // publish seats
            ICollection <SeatType> createdSeats = CreateSeats(table);

            foreach (var seat in createdSeats)
            {
                svc.CreateSeat(conference.Id, seat);
            }

            var created = MessageLogHelper.CollectEvents <AvailableSeatsChanged>(conference.Id, createdSeats.Count);

            if (!created)
            {
                throw new TimeoutException("Conference creation error");
            }

            // Update the confInfo with the created seats

            conference.Seats.AddRange(createdSeats);

            return(conference);
        }
示例#3
0
        public void when_creating_conference_and_seat_then_publishes_seat_created_on_publish()
        {
            var conference = new ConferenceInfo
            {
                OwnerEmail  = "*****@*****.**",
                OwnerName   = "test owner",
                AccessCode  = "qwerty",
                Name        = "test conference",
                Description = "test conference description",
                Location    = "redmond",
                Slug        = "test",
                StartDate   = DateTime.UtcNow,
                EndDate     = DateTime.UtcNow.Add(TimeSpan.FromDays(2)),
            };

            service.CreateConference(conference);

            var seat = new SeatType {
                Name = "seat", Description = "description", Price = 100, Quantity = 100
            };

            service.CreateSeat(conference.Id, seat);

            service.Publish(conference.Id);

            var e = busEvents.OfType <SeatCreated>().FirstOrDefault();

            Assert.NotNull(e);
            Assert.Equal(e.SourceId, seat.Id);
        }
示例#4
0
        public async Task <IActionResult> Publish(ConferenceIdentity identity)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var conference = await this._service.FindConference(identity.Slug);

            if (conference == null)
            {
                return(NotFound());
            }

            // check access
            if (string.IsNullOrWhiteSpace(identity.AccessCode) ||
                !string.Equals(identity.AccessCode, conference.AccessCode, StringComparison.Ordinal))
            {
                return(Unauthorized("Invalid access code."));
            }

            await _service.Publish(conference.Id);

            return(Ok());
        }
示例#5
0
        public void then_seat_created_is_published_on_publish()
        {
            service.Publish(this.conference.Id);

            var e    = busEvents.OfType <SeatCreated>().Single();
            var seat = this.conference.Seats.Single();

            Assert.Equal(seat.Id, e.SourceId);
            Assert.Equal(seat.Name, e.Name);
            Assert.Equal(seat.Description, e.Description);
            Assert.Equal(seat.Price, e.Price);
            Assert.Equal(seat.Quantity, e.Quantity);
        }
        public static ConferenceInfo PopulateConfereceData(Table table)
        {
            string conferenceSlug = Slug.CreateNew().Value;
            var svc = new ConferenceService(BuildEventBus());
            var conference = BuildConferenceInfo(table, conferenceSlug);
            svc.CreateConference(conference);
            svc.Publish(conference.Id);

            Registration.ReadModel.Conference published = null;
            while(published == null || 
                !published.IsPublished || 
                published.Seats.Count != table.Rows.Count)
            {
                published = RegistrationHelper.FindConference(conference.Id);
                Thread.Sleep(100);
            }

            return conference;
        }
示例#7
0
        public static ConferenceInfo PopulateConfereceData(Table table)
        {
            var svc = new ConferenceService(BuildEventBus());
            var conference = BuildInternalConferenceInfo(table);
            svc.CreateConference(conference);
            svc.Publish(conference.Id);
            // publish seats
            ICollection<SeatType> createdSeats = CreateSeats(table);
            foreach (var seat in createdSeats)
            {
                svc.CreateSeat(conference.Id, seat);
            }

            var created = MessageLogHelper.CollectEvents<AvailableSeatsChanged>(conference.Id, createdSeats.Count);

            if(!created)
                throw new TimeoutException("Conference creation error");

            // Update the confInfo with the created seats
            
            conference.Seats.AddRange(createdSeats);

            return conference;
        }
示例#8
0
 public void WhenTheConferenceIsPublished()
 {
     conferenceService.Publish(conference.Id);
 }