<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.sap.cloud.s4hana</groupId>
<artifactId>sdk-bom</artifactId>
<version>1.6.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
<!-- possibly further managed dependencies ... -->
</dependencyManagement>
public class StoreBusinessPartnerCommand extends ErpCommand<BusinessPartner> {
private BusinessPartnerService businessPartnerService;
private BusinessPartner businessPartner;
public StoreBusinessPartnerCommand(final ErpConfigContext erpConfigContext, final BusinessPartnerService businessPartnerService, final BusinessPartner businessPartner) {
super(StoreBusinessPartnerCommand.class, erpConfigContext);
this.businessPartnerService = businessPartnerService;
this.businessPartner = businessPartner;
}
@Override
protected BusinessPartner run() {
try {
return businessPartnerService
.createBusinessPartner(businessPartner)
.execute(getConfigContext());
} catch (final ODataException e) {
throw new HystrixBadRequestException(e.getMessage(), e);
}
}
}
@WebServlet("/businessPartners")
public class BusinessPartnerServlet extends HttpServlet {
private static final Logger logger = CloudLoggerFactory.getLogger(BusinessPartnerServlet.class);
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
final String firstname = request.getParameter("firstname");
final String lastname = request.getParameter("lastname");
final String country = request.getParameter("country");
final String city = request.getParameter("city");
final String email = request.getParameter("email");
//do consistency checks here...
final AddressEmailAddress emailAddress = AddressEmailAddress.builder()
.emailAddress(email)
.build();
final BusinessPartnerAddress businessPartnerAddress = BusinessPartnerAddress.builder()
.country(country)
.cityName(city)
.emailAddress(emailAddress)
.build();
final BusinessPartnerRole businessPartnerRole = BusinessPartnerRole.builder()
.businessPartnerRole("FLCU01")
.build();
final BusinessPartner businessPartner = BusinessPartner.builder()
.firstName(firstname)
.lastName(lastname)
.businessPartnerCategory("1")
.correspondenceLanguage("EN")
.businessPartnerAddress(businessPartnerAddress)
.businessPartnerRole(businessPartnerRole)
.build();
String responseBody;
try {
final BusinessPartner storedBusinessPartner = new StoreBusinessPartnerCommand(new ErpConfigContext(), new DefaultBusinessPartnerService(), businessPartner).execute();
responseBody = new Gson().toJson(storedBusinessPartner);
response.setStatus(HttpServletResponse.SC_CREATED);
} catch(final HystrixBadRequestException e) {
responseBody = e.getMessage();
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
logger.error(e.getMessage(), e);
}
response.setContentType("application/json");
response.getOutputStream().print(responseBody);
}
}
@RunWith(MockitoJUnitRunner.Silent.class)
public class GetBusinessPartnerMockedTest
{
private static final MockUtil mockUtil = new MockUtil();
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private BusinessPartnerService service;
@Mock
private BusinessPartner alice;
@Before
public void before() {
mockUtil.mockDefaults();
mockUtil.mockDestination("ErpQueryEndpoint", URI.create(""));
when(alice.getFirstName()).thenReturn("Alice");
}
@Test
public void testBusinessPartnerCreateSuccessful() throws Exception {
final BusinessPartner enrichedAlice = Mockito.mock(BusinessPartner.class);
when(enrichedAlice.getFirstName()).thenReturn("Alice");
when(enrichedAlice.getBusinessPartner()).thenReturn("123");
when(service
.createBusinessPartner(alice)
.execute(any(ErpConfigContext.class)))
.thenReturn(enrichedAlice);
BusinessPartner partner = new StoreBusinessPartnerCommand(new ErpConfigContext(), service, alice).execute();
assertEquals(enrichedAlice, partner);
assertEquals("123", enrichedAlice.getBusinessPartner());
}
@Test(expected = HystrixBadRequestException.class)
public void testBusinessPartnerCreateNotSuccessful() throws Exception {
when(service
.createBusinessPartner(alice)
.execute(any(ErpConfigContext.class)))
.thenThrow(new ODataException());
new StoreBusinessPartnerCommand(new ErpConfigContext(), service, alice).execute();
}
}
import static com.jayway.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
@RunWith(Arquillian.class)
public class BusinessPartnerDeepInsertTest {
private static final MockUtil mockUtil = new MockUtil();
@ArquillianResource
private URL baseUrl;
@Deployment
public static WebArchive createDeployment() {
return TestUtil.createDeployment(BusinessPartnerServlet.class,
BusinessPartner.class,
StoreBusinessPartnerCommand.class,
DefaultBusinessPartnerService.class);
}
@BeforeClass
public static void beforeClass() throws URISyntaxException {
mockUtil.mockDefaults();
mockUtil.mockErpDestination("ErpQueryEndpoint", "S4HANA");
}
@Before
public void before() {
RestAssured.baseURI = baseUrl.toExternalForm();
}
@Test
public void testStoreAndGetCustomers() {
given()
.parameters("firstname", "John", "lastname", "Doe", "country", "US", "city", "Tuxedo", "email", "john@doe.com")
.when()
.post("/businessPartners")
.then()
.log().all()
.statusCode(201)
.and()
.body("BusinessPartner", not(isEmptyString()))
.and()
.body("BusinessPartnerUUID", not(isEmptyString()));
}
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
20 | |
13 | |
12 | |
10 | |
7 | |
6 | |
6 | |
6 | |
5 | |
5 |