Skip to content
This repository was archived by the owner on May 22, 2021. It is now read-only.

Commit

Permalink
closes #207 the success integration testing (#219)
Browse files Browse the repository at this point in the history
* closes #207

* include assertions
  • Loading branch information
ritosilva authored and ruimaranhao committed May 6, 2018
1 parent b686264 commit 153396f
Show file tree
Hide file tree
Showing 130 changed files with 3,048 additions and 470 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

import pt.ulisboa.tecnico.softeng.activity.services.remote.BankInterface;
import pt.ulisboa.tecnico.softeng.activity.services.remote.TaxInterface;
import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.BankOperationData;
import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.InvoiceData;
import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.RestBankOperationData;
import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.RestInvoiceData;
import pt.ulisboa.tecnico.softeng.activity.services.remote.exceptions.BankException;
import pt.ulisboa.tecnico.softeng.activity.services.remote.exceptions.RemoteAccessException;
import pt.ulisboa.tecnico.softeng.activity.services.remote.exceptions.TaxException;
Expand Down Expand Up @@ -35,14 +35,14 @@ private void processInvoices() {
if (!booking.isCancelled()) {
if (booking.getPaymentReference() == null) {
try {
booking.setPaymentReference(BankInterface.processPayment(new BankOperationData(
booking.setPaymentReference(BankInterface.processPayment(new RestBankOperationData(
booking.getIban(), booking.getAmount(), TRANSACTION_SOURCE, booking.getReference())));
} catch (BankException | RemoteAccessException ex) {
failedToProcess.add(booking);
continue;
}
}
InvoiceData invoiceData = new InvoiceData(booking.getProviderNif(), booking.getBuyerNif(),
RestInvoiceData invoiceData = new RestInvoiceData(booking.getProviderNif(), booking.getBuyerNif(),
booking.getType(), booking.getAmount(), booking.getDate(), booking.getTime());
try {
booking.setInvoiceReference(TaxInterface.submitInvoice(invoiceData));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@

import pt.ulisboa.tecnico.softeng.activity.exception.ActivityException;
import pt.ulisboa.tecnico.softeng.activity.services.local.ActivityInterface;
import pt.ulisboa.tecnico.softeng.activity.services.local.dataobjects.ActivityBookingData;
import pt.ulisboa.tecnico.softeng.activity.services.local.dataobjects.ActivityOfferData;
import pt.ulisboa.tecnico.softeng.activity.services.local.dataobjects.ActivityProviderData;
import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.RestActivityBookingData;

@Controller
@RequestMapping(value = "/providers/{codeProvider}/activities/{codeActivity}/offers/{externalId}/bookings")
Expand All @@ -34,15 +34,15 @@ public String offerBookingsPage(Model model, @PathVariable String codeProvider,
model.addAttribute("providers", ActivityInterface.getProviders());
return "providers";
} else {
model.addAttribute("booking", new ActivityBookingData());
model.addAttribute("booking", new RestActivityBookingData());
model.addAttribute("offer", activityOfferData);
return "bookings";
}
}

@RequestMapping(method = RequestMethod.POST)
public String bookingSubmit(Model model, @PathVariable String codeProvider, @PathVariable String codeActivity,
@PathVariable String externalId, @ModelAttribute ActivityBookingData booking) {
@PathVariable String externalId, @ModelAttribute RestActivityBookingData booking) {
logger.info("offerSubmit codeProvider:{}, codeActivity:{}, externalId:{}", codeProvider, codeActivity,
externalId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
import pt.ulisboa.tecnico.softeng.activity.domain.ActivityProvider;
import pt.ulisboa.tecnico.softeng.activity.domain.Booking;
import pt.ulisboa.tecnico.softeng.activity.exception.ActivityException;
import pt.ulisboa.tecnico.softeng.activity.services.local.dataobjects.ActivityBookingData;
import pt.ulisboa.tecnico.softeng.activity.services.local.dataobjects.ActivityData;
import pt.ulisboa.tecnico.softeng.activity.services.local.dataobjects.ActivityOfferData;
import pt.ulisboa.tecnico.softeng.activity.services.local.dataobjects.ActivityProviderData;
import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.RestActivityBookingData;

public class ActivityInterface {

Expand Down Expand Up @@ -85,7 +85,7 @@ public static void createOffer(String codeProvider, String codeActivity, Activit
}

@Atomic(mode = TxMode.WRITE)
public static String reserveActivity(ActivityBookingData activityBookingData) {
public static String reserveActivity(RestActivityBookingData activityBookingData) {
Booking booking = getBookingByAdventureId(activityBookingData.getAdventureId());
if (booking != null) {
return booking.getReference();
Expand All @@ -106,7 +106,7 @@ public static String reserveActivity(ActivityBookingData activityBookingData) {
}

@Atomic(mode = TxMode.WRITE)
public static void reserveActivity(String externalId, ActivityBookingData bookingData) {
public static void reserveActivity(String externalId, RestActivityBookingData bookingData) {
ActivityOffer offer = FenixFramework.getDomainObject(externalId);

if (offer == null) {
Expand All @@ -126,13 +126,13 @@ public static String cancelReservation(String reference) {
}

@Atomic(mode = TxMode.READ)
public static ActivityBookingData getActivityReservationData(String reference) {
public static RestActivityBookingData getActivityReservationData(String reference) {
for (ActivityProvider provider : FenixFramework.getDomainRoot().getActivityProviderSet()) {
for (Activity activity : provider.getActivitySet()) {
for (ActivityOffer offer : activity.getActivityOfferSet()) {
Booking booking = offer.getBooking(reference);
if (booking != null) {
return new ActivityBookingData(booking);
return new RestActivityBookingData(booking);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.springframework.format.annotation.DateTimeFormat;

import pt.ulisboa.tecnico.softeng.activity.domain.ActivityOffer;
import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.RestActivityBookingData;

public class ActivityOfferData {
private String externalId;
Expand All @@ -19,7 +20,7 @@ public class ActivityOfferData {
private LocalDate end;
private Integer capacity;
private Double amount;
private List<ActivityBookingData> reservations;
private List<RestActivityBookingData> reservations;

public ActivityOfferData() {
}
Expand All @@ -33,7 +34,7 @@ public ActivityOfferData(ActivityOffer offer) {
this.end = offer.getEnd();
this.capacity = offer.getCapacity();
this.amount = offer.getAmount();
this.reservations = offer.getBookingSet().stream().map(b -> new ActivityBookingData(b))
this.reservations = offer.getBookingSet().stream().map(b -> new RestActivityBookingData(b))
.collect(Collectors.toList());
}

Expand Down Expand Up @@ -85,11 +86,11 @@ public void setCapacity(Integer capacity) {
this.capacity = capacity;
}

public List<ActivityBookingData> getReservations() {
public List<RestActivityBookingData> getReservations() {
return this.reservations;
}

public void setReservations(List<ActivityBookingData> reservations) {
public void setReservations(List<RestActivityBookingData> reservations) {
this.reservations = reservations;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@

import pt.ulisboa.tecnico.softeng.activity.exception.ActivityException;
import pt.ulisboa.tecnico.softeng.activity.services.local.ActivityInterface;
import pt.ulisboa.tecnico.softeng.activity.services.local.dataobjects.ActivityBookingData;
import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.RestActivityBookingData;

@RestController
@RequestMapping(value = "/rest/providers")
public class ActivityRestController {
private static Logger logger = LoggerFactory.getLogger(ActivityRestController.class);

@RequestMapping(value = "/reserve", method = RequestMethod.POST)
public ResponseEntity<String> reserve(@RequestBody ActivityBookingData activityBookingData) {
public ResponseEntity<String> reserve(@RequestBody RestActivityBookingData activityBookingData) {
logger.info("reserveActivity begin:{}, end:{}, age:{}, nif:{}, iban:{}, adventureId:{}",
activityBookingData.getBegin(), activityBookingData.getEnd(), activityBookingData.getAge(),
activityBookingData.getNif(), activityBookingData.getIban(), activityBookingData.getAdventureId());
Expand All @@ -42,7 +42,7 @@ public ResponseEntity<String> cancel(@RequestParam String reference) {
}

@RequestMapping(value = "/reservation", method = RequestMethod.GET)
public ResponseEntity<ActivityBookingData> reservation(@RequestParam String reference) {
public ResponseEntity<RestActivityBookingData> reservation(@RequestParam String reference) {
logger.info("reservation reference:{}", reference);
try {
return new ResponseEntity<>(ActivityInterface.getActivityReservationData(reference), HttpStatus.OK);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;

import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.BankOperationData;
import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.RestBankOperationData;
import pt.ulisboa.tecnico.softeng.activity.services.remote.exceptions.BankException;
import pt.ulisboa.tecnico.softeng.activity.services.remote.exceptions.RemoteAccessException;

Expand All @@ -14,15 +14,16 @@ public class BankInterface {

private static String ENDPOINT = "http://localhost:8082";

public static String processPayment(BankOperationData bankOperationData) {
public static String processPayment(RestBankOperationData bankOperationData) {
logger.info("processPayment iban:{}, amount:{}, transactionSource:{}, transactionReference:{}",
bankOperationData.getIban(), bankOperationData.getValue(), bankOperationData.getTransactionSource(),
bankOperationData.getTransactionReference());

RestTemplate restTemplate = new RestTemplate();
try {
String result = restTemplate.postForObject(ENDPOINT + "/rest/banks/accounts/", bankOperationData,
String.class);
String result = restTemplate.postForObject(
ENDPOINT + "/rest/banks/accounts/" + bankOperationData.getIban() + "/processPayment",
bankOperationData, String.class);
return result;
} catch (HttpClientErrorException e) {
logger.info(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;

import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.InvoiceData;
import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.RestInvoiceData;
import pt.ulisboa.tecnico.softeng.activity.services.remote.exceptions.RemoteAccessException;
import pt.ulisboa.tecnico.softeng.activity.services.remote.exceptions.TaxException;

Expand All @@ -15,7 +15,7 @@ public class TaxInterface {

private static String ENDPOINT = "http://localhost:8086";

public static String submitInvoice(InvoiceData invoiceData) {
public static String submitInvoice(RestInvoiceData invoiceData) {
logger.info("submitInvoice buyerNif:{}, sellerNif:{}, itemType:{}, value:{}, date:{}, time:{}",
invoiceData.getBuyerNif(), invoiceData.getSellerNif(), invoiceData.getItemType(),
invoiceData.getValue(), invoiceData.getDate(), invoiceData.getTime());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,34 @@
package pt.ulisboa.tecnico.softeng.activity.services.local.dataobjects;
package pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects;

import org.joda.time.LocalDate;

import com.fasterxml.jackson.annotation.JsonFormat;

import pt.ulisboa.tecnico.softeng.activity.domain.Booking;

public class ActivityBookingData {
public class RestActivityBookingData {
private String reference;
private String nif;
private String iban;
private String name;
private String code;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private LocalDate begin;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private LocalDate end;
private int age;
private String adventureId;
private String cancellation;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private LocalDate cancellationDate;
private Double price;
private String paymentReference;
private String invoiceReference;

public ActivityBookingData() {
public RestActivityBookingData() {
}

public ActivityBookingData(Booking booking) {
public RestActivityBookingData(Booking booking) {
this.reference = booking.getReference();
this.cancellation = booking.getCancel();
this.name = booking.getActivityOffer().getActivity().getActivityProvider().getName();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,25 @@

import org.joda.time.DateTime;

public class BankOperationData {
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.datatype.joda.deser.DateTimeDeserializer;

public class RestBankOperationData {
private String reference;
private String type;
private String iban;
private Double value;
@JsonDeserialize(using = DateTimeDeserializer.class)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss.SSS")
private DateTime time;
private String transactionSource;
private String transactionReference;

public BankOperationData() {
public RestBankOperationData() {
}

public BankOperationData(String iban, double value, String transactionSource, String transactionReference) {
public RestBankOperationData(String iban, double value, String transactionSource, String transactionReference) {
this.iban = iban;
this.value = value;
this.transactionSource = transactionSource;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,24 @@

import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.springframework.format.annotation.DateTimeFormat;

public class InvoiceData {
import com.fasterxml.jackson.annotation.JsonFormat;

public class RestInvoiceData {
private String sellerNif;
private String buyerNif;
private String itemType;
private Double value;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private LocalDate date;
private Double iva;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss.SSS")
private DateTime time;

public InvoiceData() {
public RestInvoiceData() {
}

public InvoiceData(String sellerNif, String buyerNif, String itemType, Double value, LocalDate date,
public RestInvoiceData(String sellerNif, String buyerNif, String itemType, Double value, LocalDate date,
DateTime time) {
this.sellerNif = sellerNif;
this.buyerNif = buyerNif;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
import mockit.integration.junit4.JMockit;
import pt.ulisboa.tecnico.softeng.activity.services.remote.BankInterface;
import pt.ulisboa.tecnico.softeng.activity.services.remote.TaxInterface;
import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.BankOperationData;
import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.InvoiceData;
import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.RestBankOperationData;
import pt.ulisboa.tecnico.softeng.activity.services.remote.dataobjects.RestInvoiceData;

@RunWith(JMockit.class)
public class ActivityOfferHasVacancyMethodTest extends RollbackTestAbstractClass {
Expand Down Expand Up @@ -60,9 +60,9 @@ public void hasCancelledBookings(@Mocked final TaxInterface taxInterface,
@Mocked final BankInterface bankInterface) {
new Expectations() {
{
BankInterface.processPayment((BankOperationData) this.any);
BankInterface.processPayment((RestBankOperationData) this.any);

TaxInterface.submitInvoice((InvoiceData) this.any);
TaxInterface.submitInvoice((RestInvoiceData) this.any);
}
};
this.provider.getProcessor().submitBooking(new Booking(this.provider, this.offer, NIF, IBAN));
Expand All @@ -79,9 +79,9 @@ public void hasCancelledBookingsButFull(@Mocked final TaxInterface taxInterface,
@Mocked final BankInterface bankInterface) {
new Expectations() {
{
BankInterface.processPayment((BankOperationData) this.any);
BankInterface.processPayment((RestBankOperationData) this.any);

TaxInterface.submitInvoice((InvoiceData) this.any);
TaxInterface.submitInvoice((RestInvoiceData) this.any);
}
};
this.provider.getProcessor().submitBooking(new Booking(this.provider, this.offer, NIF, IBAN));
Expand Down
Loading

0 comments on commit 153396f

Please sign in to comment.