fun courseProjectCommandBaseData()

in intellij-plugin/features/command-line/testSrc/com/jetbrains/edu/commandLine/EduCommandTestData.kt [14:100]


    fun courseProjectCommandBaseData(commandName: String): List<EduCommandTestData<EduCourseProjectCommand>> {
      return listOf(
        EduCommandTestData(
          listOf("/path/to/project", "--marketplace", "12345"),
          mapOf(
            EduCourseProjectCommand::source to CourseSource.MARKETPLACE,
            EduCourseProjectCommand::courseId to "12345",
            EduCourseProjectCommand::courseDir to Paths.get("/path/to/project")
          ),
          null
        ),
        EduCommandTestData(
          listOf("/path/to/project", "--archive", "/path/to/archive.zip"),
          mapOf(
            EduCourseProjectCommand::source to CourseSource.ARCHIVE,
            EduCourseProjectCommand::courseId to "/path/to/archive.zip",
            EduCourseProjectCommand::courseDir to Paths.get("/path/to/project")
          ),
          null
        ),
        EduCommandTestData(
          listOf("/path/to/project", "--hyperskill", "98765"),
          mapOf(
            EduCourseProjectCommand::source to CourseSource.HYPERSKILL,
            EduCourseProjectCommand::courseId to "98765",
            EduCourseProjectCommand::courseDir to Paths.get("/path/to/project")
          ),
          null
        ),
        EduCommandTestData(
          listOf("/path/to/project"),
          empty(),
          """
            Usage: $commandName [<options>] <path to course project directory>
  
            Error: must provide one of --archive, --marketplace, --courseStorage, --hyperskill, --local
          """
        ),
        EduCommandTestData(
          listOf("--marketplace", "12345"),
          empty(),
          """
            Usage: $commandName [<options>] <path to course project directory>
            
            Error: missing argument <path to course project directory>
          """
        ),
        EduCommandTestData(
          listOf("/path/to/project1", "/path/to/project2"),
          empty(),
          """
            Usage: $commandName [<options>] <path to course project directory>
  
            Error: got unexpected extra argument (/path/to/project2)
            Error: must provide one of --archive, --marketplace, --courseStorage, --hyperskill, --local
          """
        ),
        EduCommandTestData(
          listOf("/path/to/project", "--marketplace"),
          empty(),
          """
            Usage: $commandName [<options>] <path to course project directory>
            
            Error: option --marketplace requires a value
          """
        ),
        EduCommandTestData(
          listOf("/path/to/project", "--marketplace", "12345", "--archive", "/path/to/archive.zip"),
          empty(),
          """
            Usage: $commandName [<options>] <path to course project directory>
  
            Error: option --archive cannot be used with --marketplace or --courseStorage or --hyperskill or --local
          """
        ),
        EduCommandTestData(
          listOf("--foo", "12345"),
          empty(),
          """
            Usage: $commandName [<options>] <path to course project directory>
  
            Error: no such option --foo
            Error: must provide one of --archive, --marketplace, --courseStorage, --hyperskill, --local
          """
        ),
      )
    }