public override CommandState QueryState(CommandContext context) { if (Settings.MissingKeys()) { return(CommandState.Disabled); } Item ctxItem = DataWrapper?.ExtractItem(context); if (ctxItem == null || !MediaWrapper.IsMediaFile(ctxItem)) { return(CommandState.Hidden); } var persons = PersonGroupService.GetAllPersonItems(ctxItem.Database.Name); if (persons == null || !persons.Any()) { return(CommandState.Hidden); } var searchResult = SearchService.GetSearchResult(ctxItem.ID.ToString(), ctxItem.Language.Name, ctxItem.Database.Name); if (searchResult == null) { return(CommandState.Hidden); } var faceIds = searchResult.FacialAnalysis?.Select(a => a.FaceId).ToArray() ?? new Guid[0]; var peopleDiffer = searchResult.People == null || searchResult.People.Length != faceIds.Length; return(peopleDiffer ? CommandState.Enabled : CommandState.Hidden); }
public override CommandState QueryState(CommandContext context) { if (Settings.MissingKeys()) { return(CommandState.Disabled); } Item ctxItem = DataWrapper?.ExtractItem(context); if (ctxItem == null || !MediaWrapper.IsMediaFile(ctxItem)) { return(CommandState.Hidden); } var hasPersons = PersonGroupService.GetAllPersonItems(ctxItem.Database.Name).Any(); if (!hasPersons) { return(CommandState.Hidden); } var faces = SearchService .GetImageAnalysis(ctxItem.ID.ToString(), ctxItem.Language.Name, ctxItem.Database.Name) ?.FacialAnalysis; var hasOneFace = faces != null && faces.Length == 1; if (!hasOneFace) { return(CommandState.Hidden); } //show on images that have no face item pointing to them var links = Globals.LinkDatabase.GetItemReferrers(ctxItem, false); var hasFaceLink = links .Any(a => a.GetSourceItem().TemplateID.Guid == Settings.PersonFaceTemplateId.Guid); return(hasFaceLink ? CommandState.Hidden : CommandState.Enabled); }
public void PersonGroupService_GetAsync_ReturnsPersonGroups() { //Arrange var mockDbContextScopeFac = new Mock<IDbContextScopeFactory>(); var mockDbContextScope = new Mock<IDbContextReadOnlyScope>(); var mockEfDbContext = new Mock<EFDbContext>(); mockDbContextScopeFac.Setup(x => x.CreateReadOnly(DbContextScopeOption.JoinExisting)).Returns(mockDbContextScope.Object); mockDbContextScope.Setup(x => x.DbContexts.Get<EFDbContext>()).Returns(mockEfDbContext.Object); var mockAppUserManager = new Mock<IAppUserManager>(); var mockDbUserService = new Mock<DBUserService>(new object[] {mockDbContextScopeFac.Object, mockAppUserManager.Object, true }); var mockPersonService = new Mock<PersonService>(new object[] { mockDbContextScopeFac.Object, mockDbUserService.Object }); var dbEntry1 = new PersonGroup { Id = "dummyEntryId1", PrsGroupName = "PersonGroup1", PrsGroupAltName = "PersonGroupAlt1", IsActive_bl = false }; var dbEntry2 = new PersonGroup { Id = "dummyEntryId2", PrsGroupName = "PersonGroup2", PrsGroupAltName = "PersonGroupAlt2", IsActive_bl = true }; var dbEntries = (new List<PersonGroup> { dbEntry1, dbEntry2 }).AsQueryable(); var mockDbSet = new Mock<DbSet<PersonGroup>>(); mockDbSet.As<IDbAsyncEnumerable<PersonGroup>>().Setup(m => m.GetAsyncEnumerator()).Returns(new MockDbAsyncEnumerator<PersonGroup>(dbEntries.GetEnumerator())); mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.Provider).Returns(new MockDbAsyncQueryProvider<PersonGroup>(dbEntries.Provider)); mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.Expression).Returns(dbEntries.Expression); mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.ElementType).Returns(dbEntries.ElementType); mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.GetEnumerator()).Returns(dbEntries.GetEnumerator()); mockDbSet.Setup(x => x.Include(It.IsAny<string>())).Returns(mockDbSet.Object); mockEfDbContext.Setup(x => x.PersonGroups).Returns(mockDbSet.Object); var PersonGroupService = new PersonGroupService(mockDbContextScopeFac.Object, "dummyUserId"); //Act var resultPersonGroups = PersonGroupService.GetAsync().Result; //Assert Assert.IsTrue(resultPersonGroups.Count == 1); Assert.IsTrue(resultPersonGroups[0].PrsGroupAltName.Contains("PersonGroupAlt2")); }
public void PersonGroupService_LookupAsync_ReturnsNoRecordsIfNotActive() { // Arrange var mockDbContextScopeFac = new Mock<IDbContextScopeFactory>(); var mockDbContextScope = new Mock<IDbContextReadOnlyScope>(); var mockEfDbContext = new Mock<EFDbContext>(); mockDbContextScopeFac.Setup(x => x.CreateReadOnly(DbContextScopeOption.JoinExisting)).Returns(mockDbContextScope.Object); mockDbContextScope.Setup(x => x.DbContexts.Get<EFDbContext>()).Returns(mockEfDbContext.Object); var mockAppUserManager = new Mock<IAppUserManager>(); var mockDbUserService = new Mock<DBUserService>(new object[] {mockDbContextScopeFac.Object, mockAppUserManager.Object, true }); var mockPersonService = new Mock<PersonService>(new object[] { mockDbContextScopeFac.Object, mockDbUserService.Object }); var groupManager1 = new Person { Id = "dummyUserId1", FirstName = "Firs1", LastName = "Last1" }; var dbEntry1 = new PersonGroup { Id = "dummyId1", PrsGroupName = "PersonGroup1", PrsGroupAltName = "PersonGroupAlt1", IsActive_bl = true, GroupManagers = new List<Person>{groupManager1} }; var dbEntry2 = new PersonGroup { Id = "dummyId2", PrsGroupName = "PersonGroup2", PrsGroupAltName = "PersonGroupAlt2", IsActive_bl = false, GroupManagers = new List<Person>{groupManager1} }; var dbEntry3 = new PersonGroup { Id = "dummyId3", PrsGroupName = "PersonGroup3", PrsGroupAltName = "PersonGroupAlt3", IsActive_bl = true, GroupManagers = new List<Person>{groupManager1} }; var dbEntries = (new List<PersonGroup> { dbEntry1, dbEntry2, dbEntry3 }).AsQueryable(); var mockDbSet = new Mock<DbSet<PersonGroup>>(); mockDbSet.As<IDbAsyncEnumerable<PersonGroup>>().Setup(m => m.GetAsyncEnumerator()).Returns(new MockDbAsyncEnumerator<PersonGroup>(dbEntries.GetEnumerator())); mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.Provider).Returns(new MockDbAsyncQueryProvider<PersonGroup>(dbEntries.Provider)); mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.Expression).Returns(dbEntries.Expression); mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.ElementType).Returns(dbEntries.ElementType); mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.GetEnumerator()).Returns(dbEntries.GetEnumerator()); mockEfDbContext.Setup(x => x.PersonGroups).Returns(mockDbSet.Object); var PersonGroupService = new PersonGroupService(mockDbContextScopeFac.Object, groupManager1.Id); //Act var returnedPersonGroups = PersonGroupService.LookupAsync("website2", true).Result; //Assert Assert.IsTrue(returnedPersonGroups.Count == 0); }
//Constructors---------------------------------------------------------------------------------------------------------// public PersonGroupSrvController(PersonGroupService personGroupService) { this.personGroupService = personGroupService; }