/* Copyright 2014 Danish Maritime Authority.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.maritimecloud.serviceregistry;
import net.maritimecloud.serviceregistry.command.api.CreateOrganization;
import net.maritimecloud.serviceregistry.command.servicespecification.*;
import net.maritimecloud.serviceregistry.command.organization.*;
import java.util.UUID;
import javax.annotation.Resource;
import net.maritimecloud.common.infrastructure.axon.AbstractManuallyComnfiguredAxonCqrsIT;
import net.maritimecloud.serviceregistry.command.serviceinstance.ServiceInstance;
import net.maritimecloud.serviceregistry.query.ServiceSpecificationListener;
import net.maritimecloud.serviceregistry.query.ServiceSpecificationQueryRepository;
import org.axonframework.eventsourcing.EventSourcingRepository;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.BeforeClass;
/**
* Integration test not using spring for wiring Axon components. Kept for reference in case we need to opt out of spring.
* <p>
* (run with 'mvn failsafe:integration-test')
* <p>
* @author Christoffer Børrild
*/
public class ManuallyConfiguredAxonIT extends AbstractManuallyComnfiguredAxonCqrsIT {
@Resource
protected ServiceSpecificationQueryRepository serviceSpecificationQueryRepository;
private final String itemId = UUID.randomUUID().toString();
private final OrganizationId organizationId = new OrganizationId(itemId);
private final ServiceSpecificationId serviceSpecificationId1 = new ServiceSpecificationId(UUID.randomUUID().toString());
private final ServiceSpecificationId serviceSpecificationId2 = new ServiceSpecificationId(UUID.randomUUID().toString());
private final ServiceSpecificationId serviceSpecificationId3 = new ServiceSpecificationId(UUID.randomUUID().toString());
private final CreateOrganization CREATE_ORGANIZATION_COMMAND = new CreateOrganization(organizationId, AN_ALIAS, A_NAME, A_SUMMARY, A_URL);
@BeforeClass
public static void setUpClass() {
EventSourcingRepository<Organization> organizationRepository = subscribe(Organization.class);
EventSourcingRepository<ServiceSpecification> serviceSpecificationRepository = subscribe(ServiceSpecification.class);
EventSourcingRepository<ServiceInstance> serviceInstanceRepository = subscribe(ServiceInstance.class);
OrganizationCommandHandler organizationCommandHandler = new OrganizationCommandHandler();
organizationCommandHandler.setOrganizationRepository(organizationRepository);
organizationCommandHandler.setServiceSpecificationRepository(serviceSpecificationRepository);
organizationCommandHandler.setServiceInstanceRepository(serviceInstanceRepository);
subscribeHandler(organizationCommandHandler);
}
@Before
public void setUp() {
subscribeListener(new ServiceSpecificationListener(serviceSpecificationQueryRepository));
}
@Test
public void testPrepareServiceSpecification() {
serviceSpecificationQueryRepository.deleteAll();
commandGateway.sendAndWait(CREATE_ORGANIZATION_COMMAND);
commandGateway.sendAndWait(aPrepareServiceSpecificationCommand(organizationId, serviceSpecificationId1));
assertEquals(1, serviceSpecificationQueryRepository.count());
assertEquals(A_NAME, serviceSpecificationQueryRepository.findOne(serviceSpecificationId1.identifier()).getName());
commandGateway.sendAndWait(aPrepareServiceSpecificationCommand(organizationId, serviceSpecificationId2));
commandGateway.sendAndWait(aPrepareServiceSpecificationCommand(organizationId, serviceSpecificationId3));
assertEquals(3, serviceSpecificationQueryRepository.count());
try {
commandGateway.sendAndWait(aPrepareServiceSpecificationCommand(organizationId, serviceSpecificationId1));
fail("Should fail as item already exist");
} catch (Exception e) {
}
assertEquals(3, serviceSpecificationQueryRepository.count());
}
}