mirror of
https://github.com/inventree/inventree-app.git
synced 2025-04-29 05:56:47 +00:00
commit
ffae280d31
1
.github/workflows/ci.yaml
vendored
1
.github/workflows/ci.yaml
vendored
@ -60,6 +60,7 @@ jobs:
|
||||
invoke import-fixtures
|
||||
invoke server -a 127.0.0.1:12345 &
|
||||
invoke wait
|
||||
sleep 30
|
||||
- name: Unit Tests
|
||||
run: |
|
||||
flutter test --coverage
|
||||
|
@ -497,7 +497,7 @@ class InvenTreeAPI {
|
||||
/*
|
||||
* Request the user roles (permissions) from the InvenTree server
|
||||
*/
|
||||
Future<void> getUserRoles() async {
|
||||
Future<bool> getUserRoles() async {
|
||||
|
||||
roles.clear();
|
||||
|
||||
@ -511,7 +511,7 @@ class InvenTreeAPI {
|
||||
final response = await get(_URL_GET_ROLES, expectedStatusCode: 200);
|
||||
|
||||
if (!response.successful()) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
var data = response.asMap();
|
||||
@ -519,6 +519,10 @@ class InvenTreeAPI {
|
||||
if (data.containsKey("roles")) {
|
||||
// Save a local copy of the user roles
|
||||
roles = (response.data["roles"] ?? {}) as Map<String, dynamic>;
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -129,10 +129,13 @@ void main() {
|
||||
assert(api.supportsNotifications);
|
||||
assert(api.supportsPoReceive);
|
||||
|
||||
// Ensure we can request (and receive) user roles
|
||||
assert(await api.getUserRoles());
|
||||
|
||||
// Check available permissions
|
||||
assert(api.checkPermission("part", "change"));
|
||||
assert(api.checkPermission("stocklocation", "delete"));
|
||||
assert(api.checkPermission("part", "weirdpermission"));
|
||||
assert(!api.checkPermission("part", "weirdpermission"));
|
||||
assert(api.checkPermission("blah", "bloo"));
|
||||
});
|
||||
|
||||
|
143
test/models_test.dart
Normal file
143
test/models_test.dart
Normal file
@ -0,0 +1,143 @@
|
||||
/*
|
||||
* Unit tests for accessing various model classes via the API
|
||||
*/
|
||||
|
||||
import "package:inventree/inventree/model.dart";
|
||||
import "package:test/test.dart";
|
||||
|
||||
import "package:inventree/api.dart";
|
||||
import "package:inventree/user_profile.dart";
|
||||
import "package:inventree/inventree/part.dart";
|
||||
|
||||
|
||||
void main() {
|
||||
|
||||
setUp(() async {
|
||||
await UserProfileDBManager().addProfile(UserProfile(
|
||||
name: "Test Profile",
|
||||
server: "http://localhost:12345",
|
||||
username: "testuser",
|
||||
password: "testpassword",
|
||||
selected: true,
|
||||
));
|
||||
|
||||
assert(await UserProfileDBManager().selectProfileByName("Test Profile"));
|
||||
assert(await InvenTreeAPI().connectToServer());
|
||||
});
|
||||
|
||||
group("Category Tests:", () {
|
||||
test("Basics", () async {
|
||||
assert(InvenTreePartCategory().URL == "part/category/");
|
||||
});
|
||||
|
||||
test("List Categories", () async {
|
||||
List<InvenTreeModel> results;
|
||||
|
||||
// List *all* categories
|
||||
results = await InvenTreePartCategory().list();
|
||||
assert(results.length == 8);
|
||||
|
||||
for (var result in results) {
|
||||
assert(result is InvenTreePartCategory);
|
||||
}
|
||||
|
||||
// Filter by parent category
|
||||
results = await InvenTreePartCategory().list(
|
||||
filters: {
|
||||
"parent": "1",
|
||||
}
|
||||
);
|
||||
|
||||
assert(results.length == 3);
|
||||
});
|
||||
});
|
||||
|
||||
group("Part Tests:", () {
|
||||
|
||||
test("Basics", () async {
|
||||
assert(InvenTreePart().URL == "part/");
|
||||
});
|
||||
|
||||
test("List Parts", () async {
|
||||
List<InvenTreeModel> results;
|
||||
|
||||
// List *all* parts
|
||||
results = await InvenTreePart().list();
|
||||
assert(results.length == 13);
|
||||
|
||||
for (var result in results) {
|
||||
// results must be InvenTreePart instances
|
||||
assert(result is InvenTreePart);
|
||||
}
|
||||
|
||||
// Filter by category
|
||||
results = await InvenTreePart().list(
|
||||
filters: {
|
||||
"category": "2",
|
||||
}
|
||||
);
|
||||
|
||||
assert(results.length == 2);
|
||||
});
|
||||
|
||||
test("Part Detail", () async {
|
||||
final result = await InvenTreePart().get(1);
|
||||
|
||||
assert(result != null);
|
||||
assert(result is InvenTreePart);
|
||||
|
||||
if (result != null) {
|
||||
InvenTreePart part = result as InvenTreePart;
|
||||
|
||||
// Check some basic properties of the part
|
||||
assert(part.name == "M2x4 LPHS");
|
||||
assert(part.fullname == "M2x4 LPHS");
|
||||
assert(part.description == "M2x4 low profile head screw");
|
||||
assert(part.categoryId == 8);
|
||||
assert(part.categoryName == "Fasteners");
|
||||
assert(part.image == part.thumbnail);
|
||||
assert(part.thumbnail == "/static/img/blank_image.thumbnail.png");
|
||||
|
||||
// Stock information
|
||||
assert(part.unallocatedStockString == "9000");
|
||||
assert(part.inStockString == "9000");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
test("Part Adjust", () async {
|
||||
// Test that we can update part data
|
||||
final result = await InvenTreePart().get(1);
|
||||
|
||||
assert(result != null);
|
||||
assert(result is InvenTreePart);
|
||||
|
||||
if (result != null) {
|
||||
InvenTreePart part = result as InvenTreePart;
|
||||
assert(part.name == "M2x4 LPHS");
|
||||
|
||||
// Change the name to something else
|
||||
assert(await part.update(
|
||||
values: {
|
||||
"name": "Woogle",
|
||||
}
|
||||
));
|
||||
|
||||
assert(await part.reload());
|
||||
assert(part.name == "Woogle");
|
||||
|
||||
// And change it back again
|
||||
assert(await part.update(
|
||||
values: {
|
||||
"name": "M2x4 LPHS"
|
||||
}
|
||||
));
|
||||
|
||||
assert(await part.reload());
|
||||
assert(part.name == "M2x4 LPHS");
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user