2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-04-29 14:06:47 +00:00

Merge pull request #151 from inventree/unit-testing

Unit testing
This commit is contained in:
Oliver 2022-06-03 21:28:48 +10:00 committed by GitHub
commit ffae280d31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 154 additions and 3 deletions

View File

@ -60,6 +60,7 @@ jobs:
invoke import-fixtures invoke import-fixtures
invoke server -a 127.0.0.1:12345 & invoke server -a 127.0.0.1:12345 &
invoke wait invoke wait
sleep 30
- name: Unit Tests - name: Unit Tests
run: | run: |
flutter test --coverage flutter test --coverage

View File

@ -497,7 +497,7 @@ class InvenTreeAPI {
/* /*
* Request the user roles (permissions) from the InvenTree server * Request the user roles (permissions) from the InvenTree server
*/ */
Future<void> getUserRoles() async { Future<bool> getUserRoles() async {
roles.clear(); roles.clear();
@ -511,7 +511,7 @@ class InvenTreeAPI {
final response = await get(_URL_GET_ROLES, expectedStatusCode: 200); final response = await get(_URL_GET_ROLES, expectedStatusCode: 200);
if (!response.successful()) { if (!response.successful()) {
return; return false;
} }
var data = response.asMap(); var data = response.asMap();
@ -519,6 +519,10 @@ class InvenTreeAPI {
if (data.containsKey("roles")) { if (data.containsKey("roles")) {
// Save a local copy of the user roles // Save a local copy of the user roles
roles = (response.data["roles"] ?? {}) as Map<String, dynamic>; roles = (response.data["roles"] ?? {}) as Map<String, dynamic>;
return true;
} else {
return false;
} }
} }

View File

@ -129,10 +129,13 @@ void main() {
assert(api.supportsNotifications); assert(api.supportsNotifications);
assert(api.supportsPoReceive); assert(api.supportsPoReceive);
// Ensure we can request (and receive) user roles
assert(await api.getUserRoles());
// Check available permissions // Check available permissions
assert(api.checkPermission("part", "change")); assert(api.checkPermission("part", "change"));
assert(api.checkPermission("stocklocation", "delete")); assert(api.checkPermission("stocklocation", "delete"));
assert(api.checkPermission("part", "weirdpermission")); assert(!api.checkPermission("part", "weirdpermission"));
assert(api.checkPermission("blah", "bloo")); assert(api.checkPermission("blah", "bloo"));
}); });

143
test/models_test.dart Normal file
View 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");
}
});
});
}