Browse Source

More robust __eq__ on _Dynamic objects

pull/312/head
Ross McFarland 7 years ago
parent
commit
ad04cefd88
No known key found for this signature in database GPG Key ID: 61C10C4FC8FE4A89
2 changed files with 47 additions and 1 deletions
  1. +6
    -0
      octodns/record/__init__.py
  2. +41
    -1
      tests/test_octodns_record.py

+ 6
- 0
octodns/record/__init__.py View File

@ -404,6 +404,8 @@ class _DynamicPool(object):
return self.data return self.data
def __eq__(self, other): def __eq__(self, other):
if not isinstance(other, _DynamicPool):
return False
return self.data == other.data return self.data == other.data
def __ne__(self, other): def __ne__(self, other):
@ -432,6 +434,8 @@ class _DynamicRule(object):
return self.data return self.data
def __eq__(self, other): def __eq__(self, other):
if not isinstance(other, _DynamicRule):
return False
return self.data == other.data return self.data == other.data
def __ne__(self, other): def __ne__(self, other):
@ -460,6 +464,8 @@ class _Dynamic(object):
} }
def __eq__(self, other): def __eq__(self, other):
if not isinstance(other, _Dynamic):
return False
ret = self.pools == other.pools and self.rules == other.rules ret = self.pools == other.pools and self.rules == other.rules
return ret return ret


+ 41
- 1
tests/test_octodns_record.py View File

@ -10,7 +10,7 @@ from unittest import TestCase
from octodns.record import ARecord, AaaaRecord, AliasRecord, CaaRecord, \ from octodns.record import ARecord, AaaaRecord, AliasRecord, CaaRecord, \
CnameRecord, Create, Delete, GeoValue, MxRecord, NaptrRecord, \ CnameRecord, Create, Delete, GeoValue, MxRecord, NaptrRecord, \
NaptrValue, NsRecord, Record, SshfpRecord, SpfRecord, SrvRecord, \ NaptrValue, NsRecord, Record, SshfpRecord, SpfRecord, SrvRecord, \
TxtRecord, Update, ValidationError
TxtRecord, Update, ValidationError, _Dynamic, _DynamicPool, _DynamicRule
from octodns.zone import Zone from octodns.zone import Zone
from helpers import DynamicProvider, GeoProvider, SimpleProvider from helpers import DynamicProvider, GeoProvider, SimpleProvider
@ -3195,3 +3195,43 @@ class TestDynamicRecords(TestCase):
self.assertEquals(a.dynamic.rules, a.dynamic.rules) self.assertEquals(a.dynamic.rules, a.dynamic.rules)
self.assertEquals(a.dynamic.rules[0], a.dynamic.rules[0]) self.assertEquals(a.dynamic.rules[0], a.dynamic.rules[0])
self.assertNotEquals(a.dynamic.rules[0], c.dynamic.rules[0]) self.assertNotEquals(a.dynamic.rules[0], c.dynamic.rules[0])
def test_dynamic_eqs(self):
pool_one = _DynamicPool('one', {
'values': [{
'value': '1.2.3.4',
}],
})
pool_two = _DynamicPool('two', {
'values': [{
'value': '1.2.3.5',
}],
})
self.assertEquals(pool_one, pool_one)
self.assertNotEquals(pool_one, pool_two)
self.assertNotEquals(pool_one, 42)
pools = {
'one': pool_one,
'two': pool_two,
}
rule_one = _DynamicRule(0, {
'pool': 'one',
})
rule_two = _DynamicRule(1, {
'pool': 'two',
})
self.assertEquals(rule_one, rule_one)
self.assertNotEquals(rule_one, rule_two)
self.assertNotEquals(rule_one, 42)
rules = [
rule_one,
rule_two,
]
dynamic = _Dynamic(pools, rules)
other = _Dynamic({}, [])
self.assertEquals(dynamic, dynamic)
self.assertNotEquals(dynamic, other)
self.assertNotEquals(dynamic, 42)

Loading…
Cancel
Save