public void SaveSomeDataShoulUpdateSomeDataInDatabaseAndSaveChanges()
        {
            var updateSomeDataCommand = BuildUpdateSomeDataCommand();
            var businessUser          = new BusinessUser
            {
                Id       = Guid.NewGuid(),
                Gender   = "SomeGender",
                Locale   = "SomeLocale",
                Location = "SomeLocation",
                Identity = new ApplicationUser
                {
                    Email = "*****@*****.**"
                }
            };
            var someDataDb = SomeDataMapper.UpdateSomeDataCommandToPersistanceModel(updateSomeDataCommand);

            someDataDb.BusinessUserId = businessUser.Id;

            var someDataDbSet = new List <SomeData>
            {
                someDataDb
            };
            var businessUserDb = new List <BusinessUser>
            {
                businessUser
            };

            var businessUserMockSet = new MockDbSet <BusinessUser>(businessUserDb);
            var someDataMockSet     = new MockDbSet <SomeData>(someDataDbSet);
            var contextMock         = new Mock <SomeDataContext>();

            contextMock.Setup(c => c.SomeData).Returns(someDataMockSet.Object);
            contextMock.Setup(c => c.BusinessUsers).Returns(businessUserMockSet.Object);

            var someDataRepository = new SomeDataWriteRepository(contextMock.Object);

            var updatedSomeData = SomeAggregate.Create(updateSomeDataCommand.SomeDataId,
                                                       "NewFirstName",
                                                       "NewMiddleName",
                                                       "NewLastName",
                                                       "NewTitle",
                                                       new Color("#c1d0c3"),
                                                       DateTime.Now,
                                                       new FacebookUrl(null),
                                                       Guid.NewGuid());

            someDataRepository.Save(updatedSomeData);
            var updatedDb = someDataRepository.Get(updateSomeDataCommand.SomeDataId);

            contextMock.Verify(x => x.SaveChanges(), Times.Once);
            Assert.Equal(updatedDb.Id, updatedSomeData.Id);
            Assert.Equal(updatedDb.Color, updatedSomeData.Color);
            Assert.Equal(updatedDb.CreationDate, updatedSomeData.CreationDate);
            Assert.Equal(updatedDb.FacebookUrl, updatedSomeData.FacebookUrl);
            Assert.Equal(updatedDb.FirstName, updatedSomeData.FirstName);
            Assert.Equal(updatedDb.LastName, updatedSomeData.LastName);
            Assert.Equal(updatedDb.MiddleName, updatedSomeData.MiddleName);
            Assert.Equal(updatedDb.Title, updatedSomeData.Title);
        }
        public void DeleteSomeDataShouldDeleteFromDatabaseAndSaveChanges()
        {
            var someDataDb       = BuildSomeDataPersistanceModel();
            var sampleSolutionDb = new List <SomeData>
            {
                someDataDb
            };

            var mockSet     = new MockDbSet <SomeData>(sampleSolutionDb);
            var contextMock = new Mock <SomeDataContext>();

            contextMock.Setup(c => c.SomeData).Returns(mockSet.Object);

            var someDataRepository = new SomeDataWriteRepository(contextMock.Object);

            var someAggregate = BuildSomeAggregate(someDataDb);

            someDataRepository.Delete(someAggregate);

            contextMock.Verify(x => x.SaveChanges(), Times.Once);
            Assert.Empty(sampleSolutionDb);
        }
        public void CreateSomeDataShouldAppendToDatabaseAndSaveChanges()
        {
            var someDataDb     = new List <SomeData>();
            var businessUser   = BuildBusinessUser();
            var businessUserDb = new List <BusinessUser>
            {
                businessUser
            };
            var businessUserMockSet = new MockDbSet <BusinessUser>(businessUserDb);
            var mockSet             = new MockDbSet <SomeData>(someDataDb);
            var contextMock         = new Mock <SomeDataContext>();

            contextMock.Setup(c => c.BusinessUsers).Returns(businessUserMockSet.Object);
            contextMock.Setup(c => c.SomeData).Returns(mockSet.Object);

            var someAggregate = BuildSomeAggregate();

            var someDataRepository = new SomeDataWriteRepository(contextMock.Object);

            someDataRepository.Create(someAggregate);

            contextMock.Verify(x => x.SaveChanges(), Times.Once);
            Assert.Single(someDataDb);
        }