From 105288b8bb9ca52d2069c936e98a939f6130e808 Mon Sep 17 00:00:00 2001 From: Trevor Redfern Date: Sat, 5 Feb 2022 21:57:40 -0500 Subject: [PATCH] Entities update properties cleaner --- moonpie/entities/actions.lua | 5 +++++ moonpie/entities/actions_spec.lua | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/moonpie/entities/actions.lua b/moonpie/entities/actions.lua index 28edf9f..f75c70d 100644 --- a/moonpie/entities/actions.lua +++ b/moonpie/entities/actions.lua @@ -29,6 +29,11 @@ function Actions.remove(entity) end function Actions.updateProperty(entity, property, value, copyValues) + if type(property) == "table" and property.name and property.value then + value = property.value + property = property.name + end + return { type = Actions.types.UPDATE_PROPERTY, payload = { diff --git a/moonpie/entities/actions_spec.lua b/moonpie/entities/actions_spec.lua index f3faac2..266f775 100644 --- a/moonpie/entities/actions_spec.lua +++ b/moonpie/entities/actions_spec.lua @@ -5,6 +5,7 @@ describe("moonpie.entities.actions", function() local Actions = require "moonpie.entities.actions" + local Property = require "moonpie.entities.property" it("can create an add entity action", function() local entity = {} @@ -36,4 +37,14 @@ describe("moonpie.entities.actions", function() local action = Actions.updateProperty(entity, "name", "Foobar", true) assert.is_true(action.payload.copyValues) end) + + it("can take a property type to update and will replace the property value", function() + local entity = {} + local prop = Property("foo", "value") + local action = Actions.updateProperty(entity, prop) + + assert.equals(entity, action.payload.entity) + assert.equals("foo", action.payload.property) + assert.equals("value", action.payload.value) + end) end) \ No newline at end of file