Collaudo impianti antincendio: come trovare ditte di antincendio
Come Trovare Ditte di Antincendio per il Collaudo degli Impianti Antincendio
Collaudo degli Impianti Antincendio: Come Trovare le Ditte Specializzate.
Scopri come trovare le migliori ditte di antincendio per il collaudo degli impianti antincendio. In questo articolo, esploreremo strategie efficaci e suggerimenti utili per garantire la sicurezza nella tua struttura, ottimizzando il processo di selezione dei professionisti del settore. Non perdere l'opportunità di proteggere il tuo ambiente!
Trova professionisti vicino a te
Trova professionisti
/**
* Copyright (C) 2020 Czech Technical University in Prague
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details. You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
package cz.cvut.kbss.jopa.sessions;
import cz.cvut.kbss.jopa.environment.OWLClassA;
import cz.cvut.kbss.jopa.environment.OWLClassV;
import cz.cvut.kbss.jopa.environment.utils.Generators;
import cz.cvut.kbss.jopa.model.EntityManagerFactory;
import cz.cvut.kbss.jopa.model.EntityManagerFactoryProperties;
import cz.cvut.kbss.jopa.model.JOPAPersistenceProperties;
import cz.cvut.kbss.jopa.model.descriptors.Descriptor;
import cz.cvut.kbss.jopa.model.metamodel.EntityType;
import cz.cvut.kbss.jopa.sessions.cache.CacheManager;
import cz.cvut.kbss.jopa.sessions.cache.TransactionalCacheManager;
import cz.cvut.kbss.jopa.sessions.change.ChangeRecorder;
import cz.cvut.kbss.jopa.sessions.change.ChangeSet;
import cz.cvut.kbss.jopa.sessions.change.ChangeSetItem;
import cz.cvut.kbss.jopa.sessions.connector.PersistenceConnector;
import cz.cvut.kbss.jopa.sessions.connector.UnitOfWorkPersistenceConnector;
import cz.cvut.kbss.ontodriver.descriptor.AxiomDescriptor;
import cz.cvut.kbss.ontodriver.descriptor.ListValueDescriptor;
import cz.cvut.kbss.ontodriver.descriptor.ReferencedListValueDescriptor;
import cz.cvut.kbss.ontodriver.descriptor.SimpleListValueDescriptor;
import cz.cvut.kbss.ontodriver.model.Assertion;
import cz.cvut.kbss.ontodriver.model.Axiom;
import cz.cvut.kbss.ontodriver.model.NamedResource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.net.URI;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
public class UnitOfWorkTest {
private static final URI CONTEXT = URI.create("http://context.org/");
private UnitOfWork unitOfWork;
private EntityManagerFactory emf;
@Mock
private PersistenceConnector connectorMock;
@Mock
private TransactionalCacheManager transactionalCacheManagerMock;
@Mock
private CacheManager cacheManagerMock;
private Descriptor descriptor;
@BeforeEach
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
final Map props = new HashMap<>();
props.put(JOPAPersistenceProperties.ONTOLOGY_PHYSICAL_URI_KEY, Generators.generateUri().toString());
this.emf = new EntityManagerFactoryImpl(props);
this.unitOfWork = new UnitOfWork(emf, connectorMock, transactionalCacheManagerMock);
this.descriptor = new Descriptor(CONTEXT);
}
@Test
public void changeRecorderIsCreatedOnFirstRequest() {
assertNull(unitOfWork.getChangeRecorder());
final ChangeRecorder recorder = unitOfWork.getChangeRecorder();
assertNotNull(recorder);
assertSame(recorder, unitOfWork.getChangeRecorder());
}
@Test
public void changeRecorderIsResetOnCommit() {
unitOfWork.getChangeRecorder();
unitOfWork.commit();
assertNull(unitOfWork.getChangeRecorder());
}
@Test
public void persistenceConnectorIsCreatedOnFirstRequest() {
assertNull(unitOfWork.getPersistenceConnector());
final PersistenceConnector connector = unitOfWork.getPersistenceConnector();
assertNotNull(connector);
assertTrue(connector instanceof UnitOfWorkPersistenceConnector);
assertSame(connector, unitOfWork.getPersistenceConnector());
}
@Test
public void persistenceConnectorIsResetOnCommit() {
unitOfWork.getPersistenceConnector();
unitOfWork.commit();
assertNull(unitOfWork.getPersistenceConnector());
}
@Test
public void cacheManagerIsCreatedOnFirstRequest() {
assertNull(unitOfWork.getCacheManager());
final CacheManager cacheManager = unitOfWork.getCacheManager();
assertNotNull(cacheManager);
assertSame(cacheManager, unitOfWork.getCacheManager());
}
@Test
public void cacheManagerIsResetOnCommit() {
unitOfWork.getCacheManager();
unitOfWork.commit();
assertNull(unitOfWork.getCacheManager());
}
@Test
public void transactionalCacheManagerIsCreatedOnFirstRequest() {
assertSame(transactionalCacheManagerMock, unitOfWork.getTransactionalCacheManager());
}
@Test
public void transactionalCacheManagerIsNotResetOnCommit() {
unitOfWork.commit();
assertSame(transactionalCacheManagerMock, unitOfWork.getTransactionalCacheManager());
}
@Test
public void commitSynchronizesChangeSetToStorage() {
final ChangeRecorder recorder = unitOfWork.getChangeRecorder();
final ChangeSet changes = recorder.getChangeSet();
final Axiom axiom =
new Axiom<>(Assertion.createClassAssertion(false), new NamedResource(Generators.createIndividualIdentifier()));
changes.add(ChangeSetItem.create(axiom, ChangeSetItem.ChangeType.CREATE));
unitOfWork.commit();
verify(connectorMock).persistChanges(changes);
}
@Test
public void commitSynchronizesChangeSetToStorageWithSpecifiedContext() {
final ChangeRecorder recorder = unitOfWork.getChangeRecorder();
final ChangeSet changes = recorder.getChangeSet();
final Axiom axiom =
new Axiom<>(Assertion.createClassAssertion(false), new NamedResource(Generators.createIndividualIdentifier()));
changes.add(ChangeSetItem.create(axiom, ChangeSetItem.ChangeType.CREATE, descriptor));
unitOfWork.commit();
verify(connectorMock).persistChanges(changes);
}
@Test
public void commitCleansChangedObjects() {
final ChangeRecorder recorder = unitOfWork.getChangeRecorder();
final ChangeSet changes = recorder.getChangeSet();
final NamedResource subject = new NamedResource(Generators.createIndividualIdentifier());
final Axiom axiom =
new Axiom<>(Assertion.createClassAssertion(false), subject);
changes.add(ChangeSetItem.create(axiom, ChangeSetItem.ChangeType.CREATE));
unitOfWork.commit();
assertFalse(changes.contains(axiom));
}
@Test
public void commitClearsChangeRecorder() {
final ChangeRecorder recorder = unitOfWork.getChangeRecorder();
final ChangeSet changes = recorder.getChangeSet();
final NamedResource subject = new NamedResource(Generators.createIndividualIdentifier());
final Axiom axiom =
new Axiom<>(Assertion.createClassAssertion(false), subject);
changes.add(ChangeSetItem.create(axiom, ChangeSetItem.ChangeType.CREATE));
unitOfWork.commit();
assertTrue(recorder.getChangeSet().isEmpty());
}
@Test
public void rollbackCleansChangedObjects() {
final ChangeRecorder recorder = unitOfWork.getChangeRecorder();
final ChangeSet changes = recorder.getChangeSet();
final NamedResource subject = new NamedResource(Generators.createIndividualIdentifier());
final Axiom axiom =
new Axiom<>(Assertion.createClassAssertion(false), subject);
changes.add(ChangeSetItem.create(axiom, ChangeSetItem.ChangeType.CREATE));
unitOfWork.rollback();
assertFalse(changes.contains(axiom));
}
@Test
public void rollbackClearsChangeRecorder() {
final ChangeRecorder recorder = unitOfWork.getChangeRecorder();
final ChangeSet changes = recorder.getChangeSet();
final NamedResource subject = new NamedResource(Generators.createIndividualIdentifier());
final Axiom axiom =
new Axiom<>(Assertion.createClassAssertion(false), subject);
changes.add(ChangeSetItem.create(axiom, ChangeSetItem.ChangeType.CREATE));
unitOfWork.rollback();
assertTrue(recorder.getChangeSet().isEmpty());
}
@Test
public void rollbackRefreshesCacheForReferencedObjects() {
final ChangeRecorder recorder = unitOfWork.getChangeRecorder();
final ChangeSet changes = recorder.getChangeSet();
final NamedResource subject = new NamedResource(Generators.createIndividualIdentifier());
final Axiom axiom =
new Axiom<>(Assertion.createClassAssertion(false), subject);
changes.add(ChangeSetItem.create(axiom, ChangeSetItem.ChangeType.CREATE));
unitOfWork.rollback();
verify(transactionalCacheManagerMock).refresh(Collections.singleton(subject));
}
@Test
public void commitRefreshesCacheForReferencedObjects() {
final ChangeRecorder recorder = unitOfWork.getChangeRecorder();
final ChangeSet changes = recorder.getChangeSet();
final NamedResource subject = new NamedResource(Generators.createIndividualIdentifier());
final Axiom axiom =
new Axiom<>(Assertion.createClassAssertion(false), subject);
changes.add(ChangeSetItem.create(axiom, ChangeSetItem.ChangeType.CREATE));
unitOfWork.commit();
verify(transactionalCacheManagerMock).refresh(Collections.singleton(subject));
}
@Test
public void commitRefreshesCacheForReferencedObjectsInListValueChange() {
final ChangeRecorder recorder = unitOfWork.getChangeRecorder();
final ChangeSet changes = recorder.getChangeSet();
final NamedResource subject = new NamedResource(Generators.createIndividualIdentifier());
final AxiomDescriptor descriptor = new AxiomDescriptor(subject);
final ReferencedListValueDescriptor listDescriptor =
new ReferencedListValueDescriptor(descriptor, Assertion.createObjectPropertyAssertion(false),
new NamedResource(Generators.createIndividualIdentifier()));
final Axiom axiom =
new Axiom<>(listDescriptor, Collections.singleton(new NamedResource(Generators.createIndividualIdentifier())));
changes.add(ChangeSetItem.create(axiom, ChangeSetItem.ChangeType.ADD));
unitOfWork.commit();
verify(transactionalCacheManagerMock).refresh(Collections.singleton(subject));
}
@Test
public void commitDoesNotRefreshCacheForSimpleListValueChange() {
final ChangeRecorder recorder = unitOfWork.getChangeRecorder();
final ChangeSet changes = recorder.getChangeSet();
final NamedResource subject = new NamedResource(Generators.createIndividualIdentifier());
final AxiomDescriptor descriptor = new AxiomDescriptor(subject);
final SimpleListValueDescriptor listDescriptor =
new SimpleListValueDescriptor(descriptor, Assertion.createDataPropertyAssertion(false));
final Axiom axiom =
new Axiom<>(listDescriptor, Collections.singleton("value"));
changes.add(ChangeSetItem.create(axiom, ChangeSetItem.ChangeType.ADD));
unitOfWork.commit();
verify(transactionalCacheManagerMock, never()).refresh(any());
}
@Test
public void resolveObjectForRefreshingCacheRetrievesObjectFromCacheManager() {
final NamedResource subject = new NamedResource(Generators.createIndividualIdentifier());
final OWLClassA object = new OWLClassA();
when(cacheManagerMock.get(subject)).thenReturn(object);
unitOfWork.resolveObjectForRefreshingCache(subject);
verify(cacheManagerMock).get(subject);
}
@Test
public void resolveObjectForRefreshingCacheRetrievesObjectFromPersistenceConnectorIfNotInCache() {
final NamedResource subject = new NamedResource(Generators.createIndividualIdentifier());
when(cacheManagerMock.get(subject)).thenReturn(null);
unitOfWork.resolveObjectForRefreshingCache(subject);
verify(connectorMock).find(any(EntityType.class), eq(subject));
}
@Test
public void resolveObjectForRefreshingCacheRetrievesObjectWithSpecifiedContext() {
final NamedResource subject = new NamedResource(Generators.createIndividualIdentifier());
when(cacheManagerMock.get(subject)).thenReturn(null);
unitOfWork.resolveObjectForRefreshingCache(subject, descriptor);
verify(connectorMock).find(any(EntityType.class), eq(subject), eq(descriptor));
}
@Test
public void resolveObjectForRefreshingCacheRetrievesObjectWithDefaultContextIfDescriptorIsNull() {
final NamedResource subject = new NamedResource(Generators.createIndividualIdentifier());
when(cacheManagerMock.get(subject)).thenReturn(null);
final Descriptor defaultDescriptor = emf
.getEntityManagerFactoryProperties()
.getProperty(EntityManagerFactoryProperties.DEFAULT_LOAD_DESCRIPTOR);
unitOfWork.resolveObjectForRefreshingCache(subject, null);
verify(connectorMock).find(any(EntityType.class), eq(subject), eq(defaultDescriptor));
}
@Test
public void resolveObjectForRefreshingCacheReturnsCachedObjectIfAvailable() {
final NamedResource subject = new NamedResource(Generators.createIndividualIdentifier());
final OWLClassA object = new OWLClassA();
when(cacheManagerMock.get(subject)).thenReturn(object);
assertSame(object, unitOfWork.resolveObjectForRefreshingCache(subject));
}
@Test
public void resolveObjectForRefreshingCacheReturnsObjectFromPersistenceIfNotInCache() {
final NamedResource subject = new NamedResource(Generators.createIndividualIdentifier());
when(cacheManagerMock.get(subject)).thenReturn(null);
final OWLClassV object = new OWLClassV();
when(connectorMock.find(any(EntityType.class), eq(subject))).thenReturn(object);
assertSame(object, unitOfWork.resolveObjectForRefreshingCache(subject));
}
}