Пример #1
0
        public void GetByIdGenericShouldMapCorrectlyWithDeletedMessageUsingMoq()
        {
            AutoMapperConfig.RegisterMappings(typeof(ErrorViewModel).GetTypeInfo().Assembly);

            var repository = new Mock <IDeletableEntityRepository <UserMessage> >();

            var messages = new List <UserMessage>
            {
                new UserMessage {
                    Id = "TestId1", CreatedOn = new DateTime(2020, 12, 31, 12, 12, 12), Subject = "TestSubject1", Email = "TestEmail1", Message = "TestMessage1", IP = "TestIp1", IsDeleted = false, IsRead = false
                },
                new UserMessage {
                    Id = "TestId2", CreatedOn = new DateTime(2020, 12, 31, 12, 12, 13), DeletedOn = new DateTime(2020, 12, 31, 13, 13, 14), Subject = "TestSubject2", Email = "TestEmail2", Message = "TestMessage2", IP = "TestIp2", IsDeleted = true, IsRead = false
                },
            };

            repository.Setup(r => r.AllAsNoTrackingWithDeleted()).Returns(messages.AsQueryable());

            var service = new UserMessagesService(repository.Object);

            Assert.Equal("TestId2", service.GetById <DeletedUserMessagesViewModel>("TestId2").Id);
            Assert.Equal("31-Dec-2020 12:12", service.GetById <DeletedUserMessagesViewModel>("TestId2").CreatedOn);
            Assert.Equal("31-Dec-2020 13:13", service.GetById <DeletedUserMessagesViewModel>("TestId2").DeletedOn);
            Assert.Equal("TestSubject2", service.GetById <DeletedUserMessagesViewModel>("TestId2").Subject);
            Assert.Equal("TestEmail2", service.GetById <DeletedUserMessagesViewModel>("TestId2").Email);
            Assert.Equal("TestMessage2", service.GetById <DeletedUserMessagesViewModel>("TestId2").Message);
            Assert.Equal("TestIp2", service.GetById <DeletedUserMessagesViewModel>("TestId2").IP);
            Assert.False(service.GetById <DeletedUserMessagesViewModel>("TestId2").IsRead);

            repository.Verify(x => x.AllAsNoTrackingWithDeleted(), Times.Exactly(8));
        }