Add model
This commit is contained in:
parent
a3fd30ac80
commit
f7f9d1ba5a
2 changed files with 25 additions and 2 deletions
|
|
@ -41,6 +41,10 @@ DATA_FIELDS = [ 'created_epoch',
|
||||||
'lon',
|
'lon',
|
||||||
'ele']
|
'ele']
|
||||||
|
|
||||||
|
# List of fields/properties for GroupFeedData object
|
||||||
|
GROUPFEEDDATA_FIELDS = [ 'value',
|
||||||
|
'key']
|
||||||
|
|
||||||
FEED_FIELDS = [ 'name',
|
FEED_FIELDS = [ 'name',
|
||||||
'key',
|
'key',
|
||||||
'id',
|
'id',
|
||||||
|
|
@ -95,12 +99,14 @@ Group = namedtuple('Group', GROUP_FIELDS)
|
||||||
Dashboard = namedtuple('Dashboard', DASHBOARD_FIELDS)
|
Dashboard = namedtuple('Dashboard', DASHBOARD_FIELDS)
|
||||||
Block = namedtuple('Block', BLOCK_FIELDS)
|
Block = namedtuple('Block', BLOCK_FIELDS)
|
||||||
Layout = namedtuple('Layout', LAYOUT_FIELDS)
|
Layout = namedtuple('Layout', LAYOUT_FIELDS)
|
||||||
|
GroupFeedData = namedtuple('GroupFeedData', GROUPFEEDDATA_FIELDS)
|
||||||
|
|
||||||
# Magic incantation to make all parameters to the initializers optional with a
|
# Magic incantation to make all parameters to the initializers optional with a
|
||||||
# default value of None.
|
# default value of None.
|
||||||
Group.__new__.__defaults__ = tuple(None for x in GROUP_FIELDS)
|
Group.__new__.__defaults__ = tuple(None for x in GROUP_FIELDS)
|
||||||
Data.__new__.__defaults__ = tuple(None for x in DATA_FIELDS)
|
Data.__new__.__defaults__ = tuple(None for x in DATA_FIELDS)
|
||||||
Layout.__new__.__defaults__ = tuple(None for x in LAYOUT_FIELDS)
|
Layout.__new__.__defaults__ = tuple(None for x in LAYOUT_FIELDS)
|
||||||
|
GroupFeedData.__new__.__defaults__ = tuple(None for x in GROUPFEEDDATA_FIELDS)
|
||||||
|
|
||||||
# explicitly set dashboard values so that 'color_mode' is 'dark'
|
# explicitly set dashboard values so that 'color_mode' is 'dark'
|
||||||
Dashboard.__new__.__defaults__ = (None, None, None, False, "dark", True, None, None)
|
Dashboard.__new__.__defaults__ = (None, None, None, False, "dark", True, None, None)
|
||||||
|
|
@ -147,3 +153,4 @@ Group.from_dict = classmethod(_group_from_dict)
|
||||||
Dashboard.from_dict = classmethod(_dashboard_from_dict)
|
Dashboard.from_dict = classmethod(_dashboard_from_dict)
|
||||||
Block.from_dict = classmethod(_from_dict)
|
Block.from_dict = classmethod(_from_dict)
|
||||||
Layout.from_dict = classmethod(_from_dict)
|
Layout.from_dict = classmethod(_from_dict)
|
||||||
|
GroupFeedData.from_dict = classmethod(_from_dict)
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
# SOFTWARE.
|
# SOFTWARE.
|
||||||
from Adafruit_IO import Data, Feed, Group, Dashboard, Block, Layout
|
from Adafruit_IO import Data, Feed, Group, Dashboard, Block, Layout, GroupFeedData
|
||||||
|
|
||||||
import base
|
import base
|
||||||
|
|
||||||
|
|
@ -59,7 +59,7 @@ class TestData(base.IOTestCase):
|
||||||
self.assertIsNone(feed.license)
|
self.assertIsNone(feed.license)
|
||||||
self.assertIsNone(feed.status_notify)
|
self.assertIsNone(feed.status_notify)
|
||||||
self.assertIsNone(feed.status_timeout)
|
self.assertIsNone(feed.status_timeout)
|
||||||
|
|
||||||
def test_group_properties_are_optional(self):
|
def test_group_properties_are_optional(self):
|
||||||
group = Group(name="foo")
|
group = Group(name="foo")
|
||||||
self.assertEqual(group.name, 'foo')
|
self.assertEqual(group.name, 'foo')
|
||||||
|
|
@ -116,3 +116,19 @@ class TestData(base.IOTestCase):
|
||||||
self.assertIsNone(data.expiration)
|
self.assertIsNone(data.expiration)
|
||||||
self.assertIsNone(data.position)
|
self.assertIsNone(data.position)
|
||||||
self.assertIsNone(data.id)
|
self.assertIsNone(data.id)
|
||||||
|
|
||||||
|
|
||||||
|
class TestGroupFeedData(base.IOTestCase):
|
||||||
|
|
||||||
|
def test_groupfeeddata_properties_are_optional(self):
|
||||||
|
"""GroupFeedData fields have optional properties
|
||||||
|
"""
|
||||||
|
data = GroupFeedData(value='foo', key='test_key')
|
||||||
|
self.assertEqual(data.value, 'foo')
|
||||||
|
self.assertEqual(data.key, 'test_key')
|
||||||
|
|
||||||
|
def test_groupfeeddata_from_dict_ignores_unknown_items(self):
|
||||||
|
data = GroupFeedData.from_dict({'value': 'foo', 'key': 'test_key', 'unknown_param': 42})
|
||||||
|
self.assertEqual(data.value, 'foo')
|
||||||
|
self.assertEqual(data.key, 'test_key')
|
||||||
|
self.assertFalse(data.has_key('unknown_param'))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue