-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTestClient.java
More file actions
85 lines (75 loc) · 3.54 KB
/
TestClient.java
File metadata and controls
85 lines (75 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.w3asel.inventree;
import com.w3asel.inventree.api.OrderApi;
import com.w3asel.inventree.invoker.ApiClient;
import com.w3asel.inventree.invoker.ApiException;
import com.w3asel.inventree.invoker.ServerConfiguration;
import com.w3asel.inventree.model.PaginatedSalesOrderLineItemList;
import com.w3asel.inventree.model.PaginatedSalesOrderList;
import com.w3asel.inventree.model.SalesOrderLineItem;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.io.InputStream;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
/** A test class that demonstrates configuring and calling the API. */
public class TestClient {
private static final String INVENTREE_PROPERTIES = "inventree.properties";
private ApiClient initializeClient() {
// Load properties file
final InputStream is =
TestClient.class.getClassLoader().getResourceAsStream(INVENTREE_PROPERTIES);
Properties properties = new Properties();
try {
properties.load(is);
} catch (final IOException e) {
System.err.printf("Unable to load %s", INVENTREE_PROPERTIES);
}
// Construct invoker
ApiClient client = new ApiClient();
client.setUsername(properties.getProperty("username"));
client.setPassword(properties.getProperty("password"));
client.setLenientOnJson(true);
ServerConfiguration server = new ServerConfiguration(
properties.getProperty("server_url", "http://localhost:8000"), "",
Collections.emptyMap());
client.setServers(Collections.singletonList(server));
return client;
}
@Test
void fetchSalesOrder() throws ApiException {
ApiClient client = initializeClient();
// Configure date time format to match what's returned by InvenTree
client.setOffsetDateTimeFormat(
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").withZone(ZoneOffset.UTC));
// Construct and call API
OrderApi api = new OrderApi(client);
// Fetch first sales order (batch of 1)
int limit = 1;
int offset = 0;
PaginatedSalesOrderList salesOrders = api.orderSoList(limit, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, offset, null, null,
null, null, null, null, null, null, null, null, null, null, null, null);
System.out.printf("Fetched %d of %d sales orders%n", salesOrders.getResults().size(),
salesOrders.getCount());
// Fetch all line items for the sales order (multiple pages in batches of 1)
int targetOrder = salesOrders.getResults().get(0).getPk();
List<SalesOrderLineItem> lineItems = new ArrayList<>();
try {
PaginatedSalesOrderLineItemList lineItemPage;
do {
lineItemPage = api.orderSoLineList(limit, null, null, null, null, lineItems.size(),
targetOrder, null, null, null, null, null, null, null, null);
lineItems.addAll(lineItemPage.getResults());
} while (lineItemPage.getCount() > lineItems.size());
} catch (ApiException e) {
System.err.printf("Failed to query API for line items for sales order %d.%n",
targetOrder);
e.printStackTrace();
}
System.out.printf("SO %d: Fetched %d line items%n", targetOrder, lineItems.size());
}
}