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',
|
||||
'ele']
|
||||
|
||||
# List of fields/properties for GroupFeedData object
|
||||
GROUPFEEDDATA_FIELDS = [ 'value',
|
||||
'key']
|
||||
|
||||
FEED_FIELDS = [ 'name',
|
||||
'key',
|
||||
'id',
|
||||
|
|
@ -95,12 +99,14 @@ Group = namedtuple('Group', GROUP_FIELDS)
|
|||
Dashboard = namedtuple('Dashboard', DASHBOARD_FIELDS)
|
||||
Block = namedtuple('Block', BLOCK_FIELDS)
|
||||
Layout = namedtuple('Layout', LAYOUT_FIELDS)
|
||||
GroupFeedData = namedtuple('GroupFeedData', GROUPFEEDDATA_FIELDS)
|
||||
|
||||
# Magic incantation to make all parameters to the initializers optional with a
|
||||
# default value of None.
|
||||
Group.__new__.__defaults__ = tuple(None for x in GROUP_FIELDS)
|
||||
Data.__new__.__defaults__ = tuple(None for x in DATA_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'
|
||||
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)
|
||||
Block.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,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
from Adafruit_IO import Data, Feed, Group, Dashboard, Block, Layout
|
||||
from Adafruit_IO import Data, Feed, Group, Dashboard, Block, Layout, GroupFeedData
|
||||
|
||||
import base
|
||||
|
||||
|
|
@ -59,7 +59,7 @@ class TestData(base.IOTestCase):
|
|||
self.assertIsNone(feed.license)
|
||||
self.assertIsNone(feed.status_notify)
|
||||
self.assertIsNone(feed.status_timeout)
|
||||
|
||||
|
||||
def test_group_properties_are_optional(self):
|
||||
group = Group(name="foo")
|
||||
self.assertEqual(group.name, 'foo')
|
||||
|
|
@ -116,3 +116,19 @@ class TestData(base.IOTestCase):
|
|||
self.assertIsNone(data.expiration)
|
||||
self.assertIsNone(data.position)
|
||||
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