コード例 #1
0
 public void PlugActivated(Guid plugId, string name)
 {
     using (var session = _documentStore.OpenSession())
     {
         var @event = new PlugActivated(plugId, name);
         session.Events.StartStream <Plug>(plugId, @event);
         session.SaveChanges();
     }
 }
コード例 #2
0
        public void activating_a_plug()
        {
            var plugActivated = new PlugActivated(Guid.NewGuid(), "WONDROUS");

            _plug.Apply(plugActivated);

            _plug.Id.Should().Be(plugActivated.PlugId);
            _plug.Name.Should().Be(plugActivated.PlugName);
        }
コード例 #3
0
        public void saving_consumption_readings_in_event_store()
        {
            var pinheiro = new PlugActivated(Guid.NewGuid(), "Pinheiro de Natal");
            var tv       = new PlugActivated(Guid.NewGuid(), "TV Set");

            // activating two plugs
            using (var session = _documentStore.OpenSession())
            {
                session.Events.Append(pinheiro.PlugId, pinheiro);
                session.Events.Append(tv.PlugId, tv);

                session.SaveChanges();
            }

            using (var session = _documentStore.OpenSession())
            {
                session.Events.Append(pinheiro.PlugId,
                                      new PlugRenamed("New Name"),
                                      new PlugTurnedOn(),
                                      new ConsumptionReadingReceived(2.2, 220, 20),
                                      new ConsumptionReadingReceived(2.2, 220, 20),
                                      new ConsumptionReadingReceived(2.2, 220, 22),
                                      new ConsumptionReadingReceived(2.2, 220, 23),
                                      new ConsumptionReadingReceived(2.2, 220, 24),
                                      new ConsumptionReadingReceived(2.2, 220, 20),
                                      new OperationScheduled(CommandType.TurnOff, 30.Minutes()),
                                      new ConsumptionReadingReceived(2.3, 220, 21),
                                      new ConsumptionReadingReceived(2.3, 220, 22),
                                      new ConsumptionReadingReceived(2.3, 220, 20),
                                      new ConsumptionReadingReceived(2.3, 220, 21),
                                      new PlugTurnedOff(),
                                      new PlugTurnedOn(),
                                      new ConsumptionReadingReceived(2.3, 220, 21)
                                      );

                session.Events.Append(tv.PlugId,
                                      new PlugTurnedOn(),
                                      new PlugTurnedOff()
                                      );

                session.SaveChanges();
            }

            using (var session = _documentStore.LightweightSession())
            {
                var plugPinheiro = session.Load <Plug>(pinheiro.PlugId);
                var plugTv       = session.Load <Plug>(tv.PlugId);

                plugPinheiro.IsOn().Should().BeTrue();
                plugPinheiro.Name.Should().Be("New Name");

                plugTv.IsOn().Should().BeFalse();
            }
        }
コード例 #4
0
        public void reporting_a_plugs_consumption()
        {
            var pinheiro = new PlugActivated(Guid.NewGuid(), "Pinheiro de Natal");

            using (var session = _documentStore.OpenSession())
            {
                session.Events.Append(pinheiro.PlugId, pinheiro);
                session.SaveChanges();
            }

            using (var session = _documentStore.OpenSession())
            {
                session.Events.Append(pinheiro.PlugId,
                                      new PlugTurnedOn(),
                                      new ConsumptionReadingReceived(2.3, 220, 20),
                                      new ConsumptionReadingReceived(2.3, 220, 20),
                                      new ConsumptionReadingReceived(2.3, 220, 22),
                                      new ConsumptionReadingReceived(2.3, 220, 23),
                                      new ConsumptionReadingReceived(2.3, 220, 24),
                                      new ConsumptionReadingReceived(2.3, 220, 20),
                                      new ConsumptionReadingReceived(2.3, 220, 21),
                                      new ConsumptionReadingReceived(2.3, 220, 22),
                                      new ConsumptionReadingReceived(2.3, 220, 20),
                                      new ConsumptionReadingReceived(2.3, 220, 21),
                                      new PlugTurnedOff(),
                                      new PlugTurnedOn(),
                                      new ConsumptionReadingReceived(2.2, 220, 21)
                                      );
                session.SaveChanges();
            }

            var reporter          = new ConsumptionReporter(_documentStore);
            var consumptionReport = reporter.GetConsumptionReport(pinheiro.PlugId);

            consumptionReport.Select(x => x.ConsumptionInWatts).Should().BeEquivalentTo(new []
            {
                20.0, 20.0, 22.0, 23.0, 24.0, 20.0, 21.0, 22.0, 20.0, 21.0, 21.0
            });

            using (var session = _documentStore.OpenSession())
            {
                session.Load <Plug>(pinheiro.PlugId).LastConsumptionInWatts.Should().Be(21);
            }
        }
コード例 #5
0
 public void Apply(PlugActivated activation)
 {
     Id     = activation.PlugId;
     Name   = activation.PlugName;
     Active = true;
 }