Exemple #1
0
    def test_entry_unresolved_link(self):
        ContentTypeCache.__CACHE__ = []

        errors = [
            {
                "sys": {
                    "id": "notResolvable",
                    "type": "error"
                },
                "details": {
                    "type": "Link",
                    "linkType": "Entry",
                    "id": "unresolvedLinkId"
                }
            }
        ]

        entry = Entry(
            {
                'sys': {
                    'space': {
                        'sys': {
                            'type': 'Link',
                            'linkType': 'Space',
                            'id': 'foo'
                        }
                    },
                    'contentType': {
                        'sys': {
                            'type': 'Link',
                            'linkType': 'ContentType',
                            'id': 'foo'
                        }
                    },
                    'type': 'Entry',
                    'createdAt': '2016-06-06',
                    'updatedAt': '2016-06-06',
                    'deletedAt': '2016-06-06',
                    'id': 'foobar',
                    'version': 1
                },
                'fields': {
                    'name': 'foobar',
                    'entryLink': {
                        'sys': {
                            'type': 'Link',
                            'linkType': 'Entry',
                            'id': 'unresolvedLinkId'
                        }
                    }
                }
            },
            None,
            errors
        )

        self.assertEqual(entry.fields().get('entryLink'), None)
Exemple #2
0
    def test_entry(self):
        ContentTypeCache.__CACHE__ = []

        entry = Entry({
            'sys': {
                'space': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'Space',
                        'id': 'foo'
                    }
                },
                'contentType': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'ContentType',
                        'id': 'foo'
                    }
                },
                'type': 'Entry',
                'createdAt': '2016-06-06',
                'updatedAt': '2016-06-06',
                'deletedAt': '2016-06-06',
                'id': 'foobar',
                'version': 1
            },
            'fields': {
                'name': 'foobar',
                'date': '2016-06-06'
            }
        })

        self.assertEqual(str(entry), "<Entry[foo] id='foobar'>")
        self.assertEqual(entry.name, 'foobar')
        self.assertEqual(entry.date, '2016-06-06')
    def test_asset(self):
        entry = Entry({
            'sys': {
                'space': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'Space',
                        'id': 'foo'
                    }
                },
                'contentType': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'ContentType',
                        'id': 'foo'
                    }
                },
                'type': 'Entry',
                'createdAt': '2016-06-06',
                'updatedAt': '2016-06-06',
                'deletedAt': '2016-06-06',
                'id': 'foobar',
                'version': 1
            },
            'fields': {
                'name': 'foobar',
                'date': '2016-06-06'
            }
        })
        array = Array(
            {
                'sys': {
                    'type': 'Array'
                },
                'items': [entry.raw],
                'total': 11,
                'skip': 10,
                'limit': 10
            }, [entry])

        self.assertEqual(len(array), 1)
        self.assertEqual(array.total, 11)
        self.assertEqual(array.skip, 10)
        self.assertEqual(array.limit, 10)
        self.assertEqual(array[0], entry)
        self.assertEqual(str(array),
                         "<Array size='1' total='11' limit='10' skip='10'>")
        for e in array:
            # testing __iter__
            # should be only one, so assert is valid
            self.assertEqual(e, entry)
Exemple #4
0
    def test_metadata_tags(self):
        ContentTypeCache.__CACHE__ = []

        entry = Entry({
            'sys': {
                'space': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'Space',
                        'id': 'foo'
                    }
                },
                'contentType': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'ContentType',
                        'id': 'foo'
                    }
                },
                'type': 'Entry',
                'createdAt': '2016-06-06',
                'updatedAt': '2016-06-06',
                'deletedAt': '2016-06-06',
                'id': 'foobar',
                'version': 1
            },
            'metadata': {
                'tags': [
                    {
                        'sys': {
                            'type': 'Link',
                            'linkType': 'Tag',
                            'id': 'nyCampaign'
                        }
                    }
                ]
            },
            'fields': {
                'name': 'foobar',
                'date': '2016-06-06',
                'metadata': 'baz'
            }
        })

        self.assertEqual(len(entry._metadata['tags']), 1)

        tag = entry._metadata['tags'][0]
        self.assertEqual(str(tag), "<Link[Tag] id='nyCampaign'>")
        self.assertEqual(tag.id, 'nyCampaign')
        self.assertEqual(tag.link_type, 'Tag')
Exemple #5
0
    def test_defined_entry_include_resolution_depth(self):
        entry_only_5_nesting_levels = Entry({
            'sys': {
                'space': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'Space',
                        'id': 'foo'
                        }
                    },
                'contentType': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'ContentType',
                        'id': 'foo'
                        }
                    },
                'type': 'Entry',
                'createdAt': '2016-06-06',
                'updatedAt': '2016-06-06',
                'deletedAt': '2016-06-06',
                'id': 'foobar',
                'version': 1
                },
            'fields': {
                'name': 'foobar',
                'date': '2016-06-06',
                'a': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'Entry',
                        'id': 'linkedEntry'
                        }
                    }
                }
            },
            includes=[
                {
                    'sys': {
                        'space': {
                            'sys': {
                                'id': 'foo'
                                }
                            },
                        'contentType': {
                            'sys': {
                                'id': 'foo'
                                }
                            },
                        'type': 'Entry',
                        'id': 'foobar',
                        },
                    'fields': {
                        'name': 'foobar',
                        'date': '2016-06-06',
                        'a': {
                            'sys': {
                                'type': 'Link',
                                'linkType': 'Entry',
                                'id': 'linkedEntry'
                                }
                            }
                        }
                    },
                {
                    'sys': {
                        'id': 'linkedEntry',
                        'type': 'Entry',
                        'contentType': {
                            'sys': {
                                'id': 'foo'
                                }
                            }
                        },
                    'fields': {
                        'b': {
                            'sys': {
                                'type': 'Link',
                                'linkType': 'Entry',
                                'id': 'foobar'
                                }
                            }
                        }
                    }
                ],
            max_depth=5)

        self.assertEqual(str(entry_only_5_nesting_levels.a), "<Entry[foo] id='linkedEntry'>")
        self.assertEqual(str(entry_only_5_nesting_levels.a.b), "<Entry[foo] id='foobar'>")
        self.assertEqual(str(entry_only_5_nesting_levels.a.b.a.b.a), "<Entry[foo] id='linkedEntry'>")
        self.assertEqual(str(entry_only_5_nesting_levels.a.b.a.b.a.b), "<Link[Entry] id='foobar'>")
Exemple #6
0
    def test_entry_default_include_resolution_depth(self):
        default_entry = Entry({
            'sys': {
                'space': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'Space',
                        'id': 'foo'
                    }
                },
                'contentType': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'ContentType',
                        'id': 'foo'
                    }
                },
                'type': 'Entry',
                'createdAt': '2016-06-06',
                'updatedAt': '2016-06-06',
                'deletedAt': '2016-06-06',
                'id': 'foobar',
                'version': 1
            },
            'fields': {
                'name': 'foobar',
                'date': '2016-06-06',
                'a': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'Entry',
                        'id': 'linkedEntry'
                    }
                }
            }
        },
        includes=[
            {
                'sys': {
                    'space': {
                        'sys': {
                            'id': 'foo'
                        }
                    },
                    'contentType': {
                        'sys': {
                            'id': 'foo'
                        }
                    },
                    'type': 'Entry',
                    'id': 'foobar',
                },
                'fields': {
                    'name': 'foobar',
                    'date': '2016-06-06',
                    'a': {
                        'sys': {
                            'type': 'Link',
                            'linkType': 'Entry',
                            'id': 'linkedEntry'
                        }
                    }
                }
            },
            {
                'sys': {
                    'id': 'linkedEntry',
                    'type': 'Entry',
                    'contentType': {
                        'sys': {
                            'id': 'foo'
                        }
                    }
                },
                'fields': {
                    'b': {
                        'sys': {
                            'type': 'Link',
                            'linkType': 'Entry',
                            'id': 'foobar'
                        }
                    }
                }
            }
        ])

        self.assertEqual(str(default_entry.a), "<Entry[foo] id='linkedEntry'>")
        self.assertEqual(str(default_entry.a.b), "<Entry[foo] id='foobar'>")
        self.assertEqual(str(default_entry.a.b.a.b.a), "<Entry[foo] id='linkedEntry'>")
        self.assertEqual(str(default_entry.a.b.a.b.a.b.a.b.a.b.a.b.a.b.a.b.a.b.a.b), "<Entry[foo] id='foobar'>")
        self.assertEqual(str(default_entry.a.b.a.b.a.b.a.b.a.b.a.b.a.b.a.b.a.b.a.b.a), "<Link[Entry] id='linkedEntry'>")
Exemple #7
0
    def test_entry_includes(self):
        entry = Entry({
            'sys': {
                'space': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'Space',
                        'id': 'foo'
                    }
                },
                'contentType': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'ContentType',
                        'id': 'foo'
                    }
                },
                'type': 'Entry',
                'createdAt': '2016-06-06',
                'updatedAt': '2016-06-06',
                'deletedAt': '2016-06-06',
                'id': 'foobar',
                'version': 1
            },
            'fields': {
                'name': 'foobar',
                'date': '2016-06-06',
                'entryLink': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'Entry',
                        'id': 'linkedEntry'
                    }
                },
                'assetLink': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'Asset',
                        'id': 'linkedAsset'
                    }
                },
                'arrayLink': [
                    {
                        'sys': {
                            'type': 'Link',
                            'linkType': 'Entry',
                            'id': 'otherLinkedEntry'
                        }
                    }
                ]
            }
        },
        includes=[
            {
                'sys': {
                    'id': 'linkedEntry',
                    'type': 'Entry',
                    'contentType': {
                        'sys': {
                            'id': 'foobar'
                        }
                    }
                },
                'fields': {
                    'foo': 'bar'
                }
            },
            {
                'sys': {
                    'id': 'otherLinkedEntry',
                    'type': 'Entry',
                    'contentType': {
                        'sys': {
                            'id': 'foobar'
                        }
                    }
                },
                'fields': {
                    'foo': 'baz'
                }
            },
            {
                'sys': {
                    'id': 'linkedAsset',
                    'type': 'Asset'
                },
                'fields': {
                    'file': {
                        'url': '//images.contentful.com/...'
                    }
                }
            }
        ])

        self.assertEqual(str(entry.entry_link), "<Entry[foobar] id='linkedEntry'>")
        self.assertEqual(str(entry.asset_link), "<Asset id='linkedAsset' url='//images.contentful.com/...'>")
        self.assertEqual(str(entry.array_link[0]), "<Entry[foobar] id='otherLinkedEntry'>")
Exemple #8
0
    def test_cached_content_type_entry(self):
        ContentTypeCache.__CACHE__ = []

        foo_ct = ContentType({
            'sys': {
                'type': 'ContentType',
                'id': 'foo'
            },
            "displayField": "name",
            "name": "Foo",
            "description": "",
            "fields": [
                {
                    "id": "name",
                    "name": "Name",
                    "type": "Text",
                    "localized": True,
                    "required": True,
                    "disabled": False,
                    "omitted": False
                },
                {
                    "id": "date",
                    "name": "Date",
                    "type": "Date",
                    "localized": True,
                    "required": True,
                    "disabled": False,
                    "omitted": False
                }
            ]
        })

        ContentTypeCache.__CACHE__.append(foo_ct)

        entry = Entry({
            'sys': {
                'space': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'Space',
                        'id': 'foo'
                    }
                },
                'contentType': {
                    'sys': {
                        'type': 'Link',
                        'linkType': 'ContentType',
                        'id': 'foo'
                    }
                },
                'type': 'Entry',
                'createdAt': '2016-06-06',
                'updatedAt': '2016-06-06',
                'deletedAt': '2016-06-06',
                'id': 'foobar',
                'version': 1
            },
            'fields': {
                'name': 'foobar',
                'date': '2016-06-06'
            }
        })

        self.assertEqual(entry.name, 'foobar')
        self.assertEqual(entry.date, datetime(2016, 6, 6))