(t *testing.T)
| 758 | } |
| 759 | |
| 760 | func Test_ProjectsGet_GetProjectItem(t *testing.T) { |
| 761 | toolDef := ProjectsGet(translations.NullTranslationHelper) |
| 762 | |
| 763 | item := verbosePullRequestProjectItemFixture() |
| 764 | |
| 765 | t.Run("success organization", func(t *testing.T) { |
| 766 | mockedClient := MockHTTPClientWithHandlers(map[string]http.HandlerFunc{ |
| 767 | GetOrgsProjectsV2ItemsByProjectByItemID: mockResponse(t, http.StatusOK, item), |
| 768 | }) |
| 769 | |
| 770 | client := mustNewGHClient(t, mockedClient) |
| 771 | deps := BaseDeps{ |
| 772 | Client: client, |
| 773 | } |
| 774 | handler := toolDef.Handler(deps) |
| 775 | request := createMCPRequest(map[string]any{ |
| 776 | "method": "get_project_item", |
| 777 | "owner": "octo-org", |
| 778 | "owner_type": "org", |
| 779 | "project_number": float64(1), |
| 780 | "item_id": float64(1001), |
| 781 | }) |
| 782 | result, err := handler(ContextWithDeps(context.Background(), deps), &request) |
| 783 | |
| 784 | require.NoError(t, err) |
| 785 | require.False(t, result.IsError) |
| 786 | |
| 787 | textContent := getTextResult(t, result) |
| 788 | var response map[string]any |
| 789 | err = json.Unmarshal([]byte(textContent.Text), &response) |
| 790 | require.NoError(t, err) |
| 791 | assertMinimalPullRequestProjectItem(t, textContent.Text, response) |
| 792 | }) |
| 793 | |
| 794 | t.Run("missing item_id", func(t *testing.T) { |
| 795 | mockedClient := MockHTTPClientWithHandlers(map[string]http.HandlerFunc{}) |
| 796 | client := mustNewGHClient(t, mockedClient) |
| 797 | deps := BaseDeps{ |
| 798 | Client: client, |
| 799 | } |
| 800 | handler := toolDef.Handler(deps) |
| 801 | request := createMCPRequest(map[string]any{ |
| 802 | "method": "get_project_item", |
| 803 | "owner": "octo-org", |
| 804 | "owner_type": "org", |
| 805 | "project_number": float64(1), |
| 806 | }) |
| 807 | result, err := handler(ContextWithDeps(context.Background(), deps), &request) |
| 808 | |
| 809 | require.NoError(t, err) |
| 810 | require.True(t, result.IsError) |
| 811 | textContent := getTextResult(t, result) |
| 812 | assert.Contains(t, textContent.Text, "missing required parameter: item_id") |
| 813 | }) |
| 814 | } |
| 815 | |
| 816 | func Test_ProjectsWrite(t *testing.T) { |
| 817 | // Verify tool definition once |
nothing calls this directly
no test coverage detected