-
Notifications
You must be signed in to change notification settings - Fork 0
Manual testing
Therecalloftheonion edited this page Sep 18, 2026
·
2 revisions
These tests must be performed by the repository owner on a real server before claiming production readiness. None of them have been run by automation.The server owner didnt however test them like he should
- Fresh install: drop the jar in
plugins/, start the server, confirmplugins/Andreaitemmaker/is created withconfig.yml, example content andassets/folders. -
/aitem reloadcompletes without errors; log shows concise counts (Loaded N items, M blocks, K furniture definitions in Xms). -
/aitem diagnoseshows the plugin version, server version, Java version, content counts, pack status/hash/size and generation duration.
-
/aitem give <id>gives the item with correct name, lore and texture. - Using the item triggers its mechanics (right-click and hit mechanics).
- Food restores hunger/saturation and respects cooldown.
- Weapons deal configured damage.
- Equipping a piece applies
armor-effectswhile worn and removes them when unequipped. - A HEAD armor piece with a
model:renders its 3D model on the head (1.21.2+). - Chest/legs/feet pieces render the 2D
armor-texture:layer (1.21.2+).
- Place a custom block; the correct appearance replaces the base block.
- The block keeps its identity across server restart, plugin reload and chunk unload/reload, in multiple worlds.
- Breaking it drops the custom item (when
drops-item: true) and cleans the id. - Explosion: with
explosion-protected: truethe block survives; withfalseit is destroyed and the id cleaned up. - A piston cannot push/pull a custom block.
- Fire does not leave a stale id behind.
- Replacing a custom block with a different material via an external editor is detected and the stale tag cleaned up.
- Place furniture; the model renders on an invisible armor stand.
- Right-click to pick it back up.
- Furniture survives restart/reload; normal armor stands are unaffected.
- Removing a furniture definition cleans up its entities.
- With WorldGuard installed, placing blocks/furniture in a protected region is denied (world unchanged, item not consumed).
- Denying the
andreaitemmaker.buildpermission blocks placement. - Vanilla placement restrictions still apply.
- A joining player receives the pack prompt and the content is visible after accepting.
- A player who fails to download is re-sent the pack on the next join.
- A player who successfully loads is not re-prompted unnecessarily.
-
/aitem pack regeneratere-sends the new pack to online players;pack.urlshows the right URL. - With the firewall blocking port 8163, hosting
pack/(unzipped folder) at a fixed URL viapack.public-urlworks. - Unchanged config regenerates the same hash; changing any content changes the hash.
-
/aitem reloadtwice in quick succession runs one combined generation (no crash, no stale state).
-
/aitem editoropens for an operator; a non-operator withoutandreaitemmaker.editorgets a permission error. The console is told the editor is in-game only. - Categories list the right entries and pagination works with more entries than fit a page.
- Search finds entries by id and by display name across categories.
- Create a
WEAPON: enter an id, set the material, display name, lore, attributes, enchantments, a texture and thelightningmechanic from the GUI. - Press Save: the file appears in
items/<id>.yml, the log reports the content reloading, and/aitem give <id>gives the item with the configured values. - Unsaved changes: edit something and press Escape. The Save/Discard/Continue dialog appears; Discard leaves the file untouched, Continue editing returns to the editor, and closing the dialog returns to the editor rather than losing the changes.
- Revert: edit a field, press Revert to the saved file, confirm the field shows the value from disk again — and that one Undo brings the unsaved edit back.
-
Text input: a field prompt appears in chat;
cancelreturns without changes,clearremoves an optional field, an invalid value is refused with a message and re-prompted, and a normal chat message after closing the editor is not swallowed. -
Validation: remove the
materialline from a file by hand, open it in the editor and press Validate — an error namingmaterialis shown and saving is refused until fixed. - Duplicate: duplicate an entry; a new id is written with the same values, and for a block the base block must be chosen again before it saves.
-
Delete: delete an entry; the file disappears, the copy in
backups/editor/deletedexists, and the content reloads. - Unknown fields: add a custom key (and a comment) to a file, edit and save it in the editor — the key, its nested values, the comment and the original key order are all still there afterwards. Preserved fields lists the key.
- Blocks: create a block, place it, break it, restart the server and confirm the persisted block identity still works.
-
Furniture: create furniture with sounds and an
offset-y, place it, pick it up, and confirm the sounds and the placement height are right. -
Mechanics: enable
armor-effects, add aneffectsentry through the list editor, save, and confirm the effects apply while the piece is worn. - Preview: press Give a preview item with unsaved changes and confirm the item in your inventory matches the values in the GUI (not the file on disk).
-
Rename: change an entry's
idand save; the old file must be gone and only the new id must be loaded. - Two players: two operators editing at the same time do not see each other's fields, and both can save without errors.
-
Ranges that need a live server: a
base-blockof glass/stairs/slabs is rejected and already-used base blocks are marked in the picker. -
Reload while editing:
/aitem reloadwhile an editor session has unsaved changes does not crash and the working copy is still intact afterwards.
- Make five different edits (a boolean, a number, a text value, a picked material and a
mechanic parameter). The Undo button shows
5; undo five times and the entry matches the file again (the header stops showing unsaved changes). - Change one mechanic's parameters (several values) and undo once — the whole mechanic change must disappear in one step, not one value at a time.
- Browsing menus, opening fields and pressing Back must not add undo steps (Undo count stays).
- Undo twice, then make a new edit — Redo must be empty afterwards.
- Save an entry, then undo: the entry becomes unsaved again and the file on disk is unchanged until you save again.
- With more than 50 edits, the history stops growing (no lag, no unbounded memory) and undo still works.
- Vanilla blocks and items behave completely normally.
- Large content sets (hundreds of items) load and generate without errors.
- Multiplayer: two players see the same custom content after both load the pack.