Skip to content

Commit f7f9d1b

Browse files
committed
Add model
1 parent a3fd30a commit f7f9d1b

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

Adafruit_IO/model.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@
4141
'lon',
4242
'ele']
4343

44+
# List of fields/properties for GroupFeedData object
45+
GROUPFEEDDATA_FIELDS = [ 'value',
46+
'key']
47+
4448
FEED_FIELDS = [ 'name',
4549
'key',
4650
'id',
@@ -95,12 +99,14 @@
9599
Dashboard = namedtuple('Dashboard', DASHBOARD_FIELDS)
96100
Block = namedtuple('Block', BLOCK_FIELDS)
97101
Layout = namedtuple('Layout', LAYOUT_FIELDS)
102+
GroupFeedData = namedtuple('GroupFeedData', GROUPFEEDDATA_FIELDS)
98103

99104
# Magic incantation to make all parameters to the initializers optional with a
100105
# default value of None.
101106
Group.__new__.__defaults__ = tuple(None for x in GROUP_FIELDS)
102107
Data.__new__.__defaults__ = tuple(None for x in DATA_FIELDS)
103108
Layout.__new__.__defaults__ = tuple(None for x in LAYOUT_FIELDS)
109+
GroupFeedData.__new__.__defaults__ = tuple(None for x in GROUPFEEDDATA_FIELDS)
104110

105111
# explicitly set dashboard values so that 'color_mode' is 'dark'
106112
Dashboard.__new__.__defaults__ = (None, None, None, False, "dark", True, None, None)
@@ -147,3 +153,4 @@ def _dashboard_from_dict(cls, data):
147153
Dashboard.from_dict = classmethod(_dashboard_from_dict)
148154
Block.from_dict = classmethod(_from_dict)
149155
Layout.from_dict = classmethod(_from_dict)
156+
GroupFeedData.from_dict = classmethod(_from_dict)

tests/test_model.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1919
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2020
# SOFTWARE.
21-
from Adafruit_IO import Data, Feed, Group, Dashboard, Block, Layout
21+
from Adafruit_IO import Data, Feed, Group, Dashboard, Block, Layout, GroupFeedData
2222

2323
import base
2424

@@ -59,7 +59,7 @@ def test_feeds_have_explicitly_set_values(self):
5959
self.assertIsNone(feed.license)
6060
self.assertIsNone(feed.status_notify)
6161
self.assertIsNone(feed.status_timeout)
62-
62+
6363
def test_group_properties_are_optional(self):
6464
group = Group(name="foo")
6565
self.assertEqual(group.name, 'foo')
@@ -116,3 +116,19 @@ def test_from_dict_ignores_unknown_items(self):
116116
self.assertIsNone(data.expiration)
117117
self.assertIsNone(data.position)
118118
self.assertIsNone(data.id)
119+
120+
121+
class TestGroupFeedData(base.IOTestCase):
122+
123+
def test_groupfeeddata_properties_are_optional(self):
124+
"""GroupFeedData fields have optional properties
125+
"""
126+
data = GroupFeedData(value='foo', key='test_key')
127+
self.assertEqual(data.value, 'foo')
128+
self.assertEqual(data.key, 'test_key')
129+
130+
def test_groupfeeddata_from_dict_ignores_unknown_items(self):
131+
data = GroupFeedData.from_dict({'value': 'foo', 'key': 'test_key', 'unknown_param': 42})
132+
self.assertEqual(data.value, 'foo')
133+
self.assertEqual(data.key, 'test_key')
134+
self.assertFalse(data.has_key('unknown_param'))

0 commit comments

Comments
 (0)