fun parseJsonFile()

in android/imports/testSrc/com/android/tools/idea/imports/MavenClassRegistryTest.kt [54:243]


  fun parseJsonFile() {
    // language=json
    repositoryIndexContents =
      """
        {
          "Index": [
            {
              "groupId": "androidx.activity",
              "artifactId": "activity",
              "version": "1.1.0",
              "ktxTargets": [],
              "fqcns": [
                "androidx.activity.ComponentActivity",
                "androidx.activity.Fake"
              ],
              "ktlfns": [
                {
                  "fqn": "androidx.activity.result.PickVisualMediaRequestKt.PickVisualMediaRequest"
                },
                {
                  "fqn": "androidx.activity.FakeFunctionKt.FakeFunction"
                },
                {
                  "xfqn": "androidx.activity.FakeFunctionKt.FakeFunction",
                  "rcvr": "with.a.Receiver"
                }
              ]
            },
            {
              "groupId": "androidx.activity",
              "artifactId": "activity-ktx",
              "version": "1.1.0",
              "ktxTargets": [
                "androidx.activity:activity"
              ],
              "fqcns": []
            },
            {
              "groupId": "androidx.annotation",
              "artifactId": "annotation",
              "version": "1.1.0",
              "ktxTargets": [],
              "fqcns": [
                "androidx.annotation.AnimRes",
                "androidx.annotation.Fake"
              ],
              "ktlfns": [
                {
                  "fqn": "androidx.annotation.FacadeFileKt.AnnotationFunction"
                },
                {
                  "fqn": "androidx.annotation.FakeFunctionKt.FakeFunction"
                }
              ]
            }
          ]
        }
      """
        .trimIndent()

    val mavenClassRegistry = MavenClassRegistry.createFrom(::getIndexByteStream)

    assertThat(mavenClassRegistry.lookup.classNameMap)
      .containsExactlyEntriesIn(
        mapOf(
          "ComponentActivity" to
            listOf(
              LibraryImportData(
                artifact = "androidx.activity:activity",
                importedItemFqName = "androidx.activity.ComponentActivity",
                importedItemPackageName = "androidx.activity",
                version = "1.1.0",
              )
            ),
          "Fake" to
            listOf(
              LibraryImportData(
                artifact = "androidx.activity:activity",
                importedItemFqName = "androidx.activity.Fake",
                importedItemPackageName = "androidx.activity",
                version = "1.1.0",
              ),
              LibraryImportData(
                artifact = "androidx.annotation:annotation",
                importedItemFqName = "androidx.annotation.Fake",
                importedItemPackageName = "androidx.annotation",
                version = "1.1.0",
              ),
            ),
          "AnimRes" to
            listOf(
              LibraryImportData(
                artifact = "androidx.annotation:annotation",
                importedItemFqName = "androidx.annotation.AnimRes",
                importedItemPackageName = "androidx.annotation",
                version = "1.1.0",
              )
            ),
        )
      )

    assertThat(mavenClassRegistry.findImportDataByClassName("Fake"))
      .containsExactly(
        LibraryImportData(
          artifact = "androidx.activity:activity",
          importedItemFqName = "androidx.activity.Fake",
          importedItemPackageName = "androidx.activity",
          version = "1.1.0",
        ),
        LibraryImportData(
          artifact = "androidx.annotation:annotation",
          importedItemFqName = "androidx.annotation.Fake",
          importedItemPackageName = "androidx.annotation",
          version = "1.1.0",
        ),
      )

    assertThat(mavenClassRegistry.lookup.topLevelFunctionsMap)
      .containsExactlyEntriesIn(
        mapOf(
          FunctionSpecifier("PickVisualMediaRequest", null) to
            listOf(
              LibraryImportData(
                artifact = "androidx.activity:activity",
                importedItemFqName = "androidx.activity.result.PickVisualMediaRequest",
                importedItemPackageName = "androidx.activity.result",
                version = "1.1.0",
              )
            ),
          FunctionSpecifier("FakeFunction", null) to
            listOf(
              LibraryImportData(
                artifact = "androidx.activity:activity",
                importedItemFqName = "androidx.activity.FakeFunction",
                importedItemPackageName = "androidx.activity",
                version = "1.1.0",
              ),
              LibraryImportData(
                artifact = "androidx.annotation:annotation",
                importedItemFqName = "androidx.annotation.FakeFunction",
                importedItemPackageName = "androidx.annotation",
                version = "1.1.0",
              ),
            ),
          FunctionSpecifier("FakeFunction", FqName("with.a.Receiver")) to
            listOf(
              LibraryImportData(
                artifact = "androidx.activity:activity",
                importedItemFqName = "androidx.activity.FakeFunction",
                importedItemPackageName = "androidx.activity",
                version = "1.1.0",
              )
            ),
          FunctionSpecifier("AnnotationFunction", null) to
            listOf(
              LibraryImportData(
                artifact = "androidx.annotation:annotation",
                importedItemFqName = "androidx.annotation.AnnotationFunction",
                importedItemPackageName = "androidx.annotation",
                version = "1.1.0",
              )
            ),
        )
      )

    assertThat(
        mavenClassRegistry.findImportDataByFunctionSpecifier(
          FunctionSpecifier("FakeFunction", null)
        )
      )
      .containsExactly(
        LibraryImportData(
          artifact = "androidx.activity:activity",
          importedItemFqName = "androidx.activity.FakeFunction",
          importedItemPackageName = "androidx.activity",
          version = "1.1.0",
        ),
        LibraryImportData(
          artifact = "androidx.annotation:annotation",
          importedItemFqName = "androidx.annotation.FakeFunction",
          importedItemPackageName = "androidx.annotation",
          version = "1.1.0",
        ),
      )

    assertThat(mavenClassRegistry.lookup.ktxMap)
      .containsExactlyEntriesIn(
        mapOf("androidx.activity:activity" to "androidx.activity:activity-ktx")
      )
  }