public void AddStakeholder(int userId, StakeholderType type) { Stakeholders.Add(Stakeholder.Create(userId, type)); // raise domain event AddDomainEvent(new StakeholderAddedDomainEvent(Uid, userId, type)); }
internal static Stakeholder Create(int personId, StakeholderType stakeholderType) { return(new Stakeholder() { PersonId = personId, Type = stakeholderType }); }
public void TestThatCreateUpdateCommandReturnsSqlCommandForUpdate(StakeholderType stakeholderType, bool hasPaymentReceipt) { Guid identifier = Guid.NewGuid(); IStakeholder stakeholder = DomainObjectMockBuilder.BuildStakeholderMock(stakeholderType); IDataProvider dataProvider = DomainObjectMockBuilder.BuildDataProviderMock(true); DateTime paymentTime = DateTime.Now.AddDays(_random.Next(1, 7) * -1).AddMinutes(_random.Next(120, 240)); string paymentReference = _fixture.Create <string>(); byte[] paymentReceipt = hasPaymentReceipt ? _fixture.CreateMany <byte>(_random.Next(1024, 4096)).ToArray() : null; DateTime creationTime = DateTime.Now; IPaymentProxy sut = CreateSut(identifier, stakeholder, dataProvider, paymentTime, paymentReference, paymentReceipt, creationTime); Assert.That(sut, Is.Not.Null); new DbCommandTestBuilder("UPDATE Payments SET StakeholderIdentifier=@stakeholderIdentifier,StakeholderType=@stakeholderType,DataProviderIdentifier=@dataProviderIdentifier,PaymentTime=@paymentTime,PaymentReference=@paymentReference,PaymentReceipt=@paymentReceipt,CreationTime=@creationTime WHERE PaymentIdentifier=@paymentIdentifier") .AddCharDataParameter("@paymentIdentifier", identifier) .AddCharDataParameter("@stakeholderIdentifier", stakeholder.Identifier) .AddTinyIntDataParameter("@stakeholderType", (int)stakeholderType, 4) .AddCharDataParameter("@dataProviderIdentifier", dataProvider.Identifier) .AddDateTimeDataParameter("@paymentTime", paymentTime.ToUniversalTime()) .AddVarCharDataParameter("@paymentReference", paymentReference, 128) .AddLongTextDataParameter("@paymentReceipt", paymentReceipt, true) .AddDateTimeDataParameter("@creationTime", creationTime.ToUniversalTime()) .Build() .Run(sut.CreateUpdateCommand()); }
/// <summary> /// Build a collection of mockups for some internal or external stakeholders. /// </summary> /// <returns>Collection of mockups for some internal or external stakeholders.</returns> public static IEnumerable <IStakeholder> BuildStakeholderMockCollection(StakeholderType stakeholderType = StakeholderType.HouseholdMember) { return(new List <IStakeholder> { BuildStakeholderMock(stakeholderType), BuildStakeholderMock(stakeholderType), BuildStakeholderMock(stakeholderType) }); }
/// <summary> /// Build a mockup for an internal or external stakeholder. /// </summary> /// <returns>Mockup for an internal or external stakeholder.</returns> public static IStakeholder BuildStakeholderMock(StakeholderType stakeholderType = StakeholderType.HouseholdMember) { Guid identifier = Guid.NewGuid(); // ReSharper disable StringLiteralTypo string mailAddress = $"test.{identifier.ToString("D").ToLower()}@osdevgrp.dk"; // ReSharper restore StringLiteralTypo IStakeholder stakeholderMock = MockRepository.GenerateMock <IStakeholder>(); stakeholderMock.Stub(m => m.Identifier) .Return(identifier) .Repeat.Any(); stakeholderMock.Stub(m => m.StakeholderType) .Return(stakeholderType) .Repeat.Any(); stakeholderMock.Stub(m => m.MailAddress) .Return(mailAddress) .Repeat.Any(); return(stakeholderMock); }
/// <summary> /// Adds a stakeholder type parameter to the command. /// </summary> /// <param name="value">The value for the stakeholder type.</param> /// <returns>This instance of the <see cref="HouseholdDataCommandBuilder"/>.</returns> internal HouseholdDataCommandBuilder AddStakeholderTypeParameter(StakeholderType value) { AddTinyIntParameter("@stakeholderType", (short)value, 4); return(this); }
internal StakeholderAddedDomainEvent(Guid initiativeId, int userId, StakeholderType stakeholderType) { InitiativeId = initiativeId; UserId = userId; StakeholderType = stakeholderType; }
public void TestThatMapDataMapsDataIntoProxy(StakeholderType stakeholderType, bool hasPaymentReceipt) { IPaymentProxy sut = CreateSut(); Assert.That(sut, Is.Not.Null); Guid paymentIdentifier = Guid.NewGuid(); Guid stakeholderIdentifier = Guid.NewGuid(); Guid dataProviderIdentifier = Guid.NewGuid(); DateTime paymentTime = DateTime.Now.AddDays(_random.Next(1, 7) * -1).AddMinutes(_random.Next(120, 240)); string paymentReference = _fixture.Create <string>(); byte[] paymentReceipt = hasPaymentReceipt ? _fixture.CreateMany <byte>(_random.Next(1024, 4096)).ToArray() : null; DateTime creationTime = DateTime.Now; MySqlDataReader dataReader = CreateMySqlDataReader(paymentIdentifier, stakeholderIdentifier, stakeholderType, dataProviderIdentifier, paymentTime, paymentReference, paymentReceipt, creationTime); DataProviderProxy dataProviderProxy = BuildDataProviderProxy(); HouseholdMemberProxy householdMemberProxy = BuildHouseholdMemberProxy(); IFoodWasteDataProvider dataProvider = CreateFoodWasteDataProvider(dataProviderProxy, householdMemberProxy); sut.MapData(dataReader, dataProvider); Assert.That(sut.Identifier, Is.Not.Null); Assert.That(sut.Identifier, Is.EqualTo(paymentIdentifier)); Assert.That(sut.Stakeholder, Is.Not.Null); Assert.That(sut.Stakeholder, Is.EqualTo(householdMemberProxy)); Assert.That(sut.DataProvider, Is.Not.Null); Assert.That(sut.DataProvider, Is.EqualTo(dataProviderProxy)); Assert.That(sut.PaymentTime, Is.EqualTo(paymentTime).Within(1).Milliseconds); Assert.That(sut.PaymentReference, Is.Not.Null); Assert.That(sut.PaymentReference, Is.Not.Empty); Assert.That(sut.PaymentReference, Is.EqualTo(paymentReference)); if (paymentReceipt != null) { Assert.That(sut.PaymentReceipt, Is.Not.Null); Assert.That(sut.PaymentReceipt, Is.Not.Empty); Assert.That(sut.PaymentReceipt, Is.EqualTo(paymentReceipt)); } else { Assert.That(sut.PaymentReceipt, Is.Null); } Assert.That(sut.CreationTime, Is.EqualTo(creationTime).Within(1).Milliseconds); dataReader.AssertWasCalled(m => m.GetString(Arg <string> .Is.Equal("PaymentIdentifier")), opt => opt.Repeat.Once()); dataReader.AssertWasCalled(m => m.GetInt32(Arg <string> .Is.Equal("StakeholderType")), opt => opt.Repeat.Once()); dataReader.AssertWasCalled(m => m.GetMySqlDateTime(Arg <string> .Is.Equal("PaymentTime")), opt => opt.Repeat.Once()); dataReader.AssertWasCalled(m => m.GetString(Arg <string> .Is.Equal("PaymentReference")), opt => opt.Repeat.Once()); dataReader.AssertWasCalled(m => m.GetOrdinal(Arg <string> .Is.Equal("PaymentReceipt")), opt => opt.Repeat.Once()); dataReader.AssertWasCalled(m => m.IsDBNull(Arg <int> .Is.Equal(6)), opt => opt.Repeat.Once()); if (paymentReceipt != null) { dataReader.AssertWasCalled(m => m.GetTextReader(Arg <int> .Is.Equal(6)), opt => opt.Repeat.Once()); } else { dataReader.AssertWasNotCalled(m => m.GetTextReader(Arg <int> .Is.Equal(6))); } dataReader.AssertWasCalled(m => m.GetMySqlDateTime(Arg <string> .Is.Equal("CreationTime")), opt => opt.Repeat.Once()); dataProvider.AssertWasNotCalled(m => m.Clone()); switch (stakeholderType) { case StakeholderType.HouseholdMember: dataProvider.AssertWasCalled(m => m.Create( Arg <IHouseholdMemberProxy> .Is.TypeOf, Arg <MySqlDataReader> .Is.Equal(dataReader), Arg <string[]> .Matches(e => e != null && e.Length == 8 && e[0] == "StakeholderIdentifier" && e[1] == "HouseholdMemberMailAddress" && e[2] == "HouseholdMemberMembership" && e[3] == "HouseholdMemberMembershipExpireTime" && e[4] == "HouseholdMemberActivationCode" && e[5] == "HouseholdMemberActivationTime" && e[6] == "HouseholdMemberPrivacyPolicyAcceptedTime" && e[7] == "HouseholdMemberCreationTime")), opt => opt.Repeat.Once()); break; default: throw new NotSupportedException($"The stakeholderType '{stakeholderType}' is not supported."); } dataProvider.AssertWasCalled(m => m.Create( Arg <IDataProviderProxy> .Is.TypeOf, Arg <MySqlDataReader> .Is.Equal(dataReader), Arg <string[]> .Matches(e => e != null && e.Length == 4 && e[0] == "DataProviderIdentifier" && e[1] == "DataProviderName" && e[2] == "DataProviderHandlesPayments" && e[3] == "DataProviderDataSourceStatementIdentifier")), opt => opt.Repeat.Once()); }