def test_joined_string(): el = JoinedString(u'abc') assert el.value == u'abc' assert [child.value for child in el] == [u'abc'] el = JoinedString(u'abc,def') assert el.value == u'abc,def' assert [child.value for child in el] == [u'abc', u'def'] el = JoinedString([u'abc', u'def']) assert el.value == u'abc,def' assert [child.value for child in el] == [u'abc', u'def'] el = JoinedString(u' abc,,ghi ') assert el.value == u'abc,ghi' assert [child.value for child in el] == [u'abc', u'ghi'] el = JoinedString(u'abc,,ghi', prune_empty=False) assert el.value == u'abc,,ghi' assert [child.value for child in el] == [u'abc', u'', u'ghi'] # The child (String) strips by default el = JoinedString(u' abc ,, ghi ', strip=False) assert el.value == u'abc,ghi' assert [child.value for child in el] == [u'abc', u'ghi'] # Try with a non-stripping String el = JoinedString(u' abc ,, ghi ', strip=False, member_schema=String.using(strip=False)) assert el.value == u' abc , ghi ' assert [child.value for child in el] == [u' abc ', u' ghi ']
def test_joined_string_regex(): schema = JoinedString.using(separator=u', ', separator_regex=re.compile('X*,X*')) el = schema(u'abc') assert el.value == u'abc' assert [child.value for child in el] == [u'abc'] el = schema(u'abcX,Xdef') assert el.value == u'abc, def' assert [child.value for child in el] == [u'abc', u'def']
def test_joined_string_flat(): schema = JoinedString.named(u'js').of(Integer) for set_value, flat_value in [([1], (u'js', u'1')), (u'1', (u'js', u'1')), ([1, 2, 3], (u'js', u'1,2,3')), (u'1,2,3', (u'js', u'1,2,3'))]: from_set = schema(set_value) assert from_set.flatten() == [flat_value] from_flat = schema.from_flat([flat_value]) assert len(from_flat) == len(from_set) assert from_flat.flatten() == [flat_value] assert from_flat.value == from_set.value
def test_joined_non_string(): schema = JoinedString.using(member_schema=Integer) el = schema(u'1') assert el.value == u'1' assert [child.value for child in el] == [1] el = schema(u'1, 2, 3') assert el.value == u'1,2,3' assert [child.value for child in el] == [1, 2, 3] el = schema([1, 2, 3]) assert el.value == u'1,2,3' assert [child.value for child in el] == [1, 2, 3]
def test_joined_string_flat(): schema = JoinedString.named('js').of(Integer) for set_value, flat_value in [ ([1], (u'js', u'1')), (u'1', (u'js', u'1')), ([1, 2, 3], (u'js', u'1,2,3')), (u'1,2,3', (u'js', u'1,2,3'))]: from_set = schema(set_value) assert from_set.flatten() == [flat_value] from_flat = schema.from_flat([flat_value]) assert len(from_flat) == len(from_set) assert from_flat.flatten() == [flat_value] assert from_flat.value == from_set.value
GuardianContentSearch = Dict.of( String.named('q').using(label='Search' ).validated_by(Converted()), String.named('tag').using(label='Tag filter', optional=True ).validated_by(Converted()), String.named('section').using(label='Section filter', optional=True ).validated_by(Converted()), DateYYYYMMDD.named('from-date').using(label='From Date filter', optional=True ).validated_by(Converted()), DateYYYYMMDD.named('to-date').using(label='To Date filter', optional=True ).validated_by(Converted()), Enum.named('order-by').valued(['newest', 'oldest', 'relevance'] ).using(default='newest', optional=True), Integer.named('page').using(label='Page Index', default=1 ).validated_by(Converted(), ValueGreaterThan(0)), Integer.named('page-size').using(label='Page Size', default=10 ).validated_by(Converted(), ValueGreaterThan(0)), Enum.named('format').valued(['json', 'xml']).using(default='json' ).validated_by(Converted()), JoinedString.named('show-fields').using(label='Show fields', default=['all'] ).validated_by(Converted()), JoinedString.named('show-tags').using(label='Show tabs', default=['all'] ).validated_by(Converted()), JoinedString.named('show-refinements').using(label='Show refinements', default=['all'] ).validated_by(Converted()), Integer.named('refinements-size').using(label='Refinement size', default=10 ).validated_by(Converted(), ValueGreaterThan(0)), )