def test_manifest_v1_serializer_duplicate_dependency(user, manifest_v1_data, package_version): UploaderIdentityMember.objects.create( user=user, identity=package_version.owner, role=UploaderIdentityMemberRole.owner, ) pkg = PackageFactory.create( owner=package_version.owner, name="somepackage", ) version1 = PackageVersionFactory.create( package=pkg, name="somepackage", version_number="1.0.0", ) version2 = PackageVersionFactory.create( package=pkg, name="somepackage", version_number="2.0.0", ) manifest_v1_data["dependencies"] = [ str(version1.reference), str(version2.reference), ] serializer = ManifestV1Serializer( user=user, uploader=package_version.owner, data=manifest_v1_data, ) assert serializer.is_valid() is False assert len(serializer.errors["non_field_errors"]) == 1 assert "Cannot depend on multiple versions of the same package" in str( serializer.errors["non_field_errors"][0])
def active_package(): package = PackageFactory.create( is_active=True, is_deprecated=False, ) PackageVersionFactory.create( name=package.name, package=package, is_active=True, ) return package
def test_manifest_v1_serializer_dependencies_valid(user, manifest_v1_data): reference = PackageReference.parse("actual_package-reference-1.0.0") PackageVersionFactory.create( package=PackageFactory.create( owner=UploaderIdentityFactory.create(name=reference.namespace, ), name=reference.name, ), name=reference.name, version_number=reference.version_str, ) identity = UploaderIdentity.get_or_create_for_user(user) manifest_v1_data["dependencies"] = [str(reference)] serializer = ManifestV1Serializer( user=user, uploader=identity, data=manifest_v1_data, ) assert serializer.is_valid() is True
def test_fields_list_dependency_field(): field = serializers.ListField( child=DependencyField(), max_length=100, allow_empty=True, ) identity = UploaderIdentityFactory.create(name="tester") versions = [ PackageVersionFactory.create( package=PackageFactory.create(owner=identity, name=f"package_{i}"), name=f"package_{i}", ) for i in range(10) ] references = [x.reference for x in versions] reference_strings = [str(x) for x in references] result = field.run_validation(reference_strings) assert len(result) == 10 assert isinstance(result[0], PackageReference) assert result == references
def test_package_query_count(django_assert_max_num_queries, package_count, version_count): for package_id in range(package_count): package = PackageFactory.create( owner=UploaderIdentityFactory.create( name=f"uploader_{package_id}" ), name=f"package_{package_id}", ) for version_id in range(version_count): PackageVersionFactory.create( package=package, name=f"package_{package_id}", version_number=f"{version_id}.0.0", ) packages = get_mod_list_queryset() with django_assert_max_num_queries(package_count * 5 + 3): serializer = PackageSerializer(packages, many=True) _ = serializer.data
def test_package_query_count(django_assert_max_num_queries, package_count, version_count, community_site): with CaptureQueriesContext(connection) as context: for package_id in range(package_count): package = PackageFactory.create( owner=UploaderIdentityFactory.create( name=f"uploader_{package_id}" ), name=f"package_{package_id}", ) for version_id in range(version_count): PackageVersionFactory.create( package=package, name=f"package_{package_id}", version_number=f"{version_id}.0.0", ) PackageListing.objects.create(package=package, community=community_site.community) creation_queries = len(context) packages = get_package_listing_queryset(community_site) with django_assert_max_num_queries(package_count + creation_queries + 1): serializer = PackageListingSerializer(packages, many=True, context={"community_site": community_site}) _ = serializer.data