github.com/crosbymichael/octokat@v0.0.0-20160826194511-076a32289ed5/releases_test.go (about)

     1  package octokat
     2  
     3  import (
     4  	"github.com/bmizerany/assert"
     5  	"net/http"
     6  	"testing"
     7  )
     8  
     9  func TestAddPreviewMediaType(t *testing.T) {
    10  	options := addPreviewMediaType(nil)
    11  	assert.Equal(t, PreviewMediaType, options.Headers["Accept"])
    12  }
    13  
    14  func TestReleases(t *testing.T) {
    15  	setup()
    16  	defer tearDown()
    17  
    18  	mux.HandleFunc("/repos/jingweno/gh/releases", func(w http.ResponseWriter, r *http.Request) {
    19  		testMethod(t, r, "GET")
    20  		testHeader(t, r, "Accept", PreviewMediaType)
    21  		respondWith(w, loadFixture("releases.json"))
    22  	})
    23  
    24  	repo := Repo{UserName: "jingweno", Name: "gh"}
    25  	releases, _ := client.Releases(repo, nil)
    26  	assert.Equal(t, 1, len(releases))
    27  
    28  	firstRelease := releases[0]
    29  	assert.Equal(t, 50013, firstRelease.ID)
    30  	assert.Equal(t, "v0.23.0", firstRelease.TagName)
    31  	assert.Equal(t, "master", firstRelease.TargetCommitsh)
    32  	assert.Equal(t, "v0.23.0", firstRelease.Name)
    33  	assert.T(t, !firstRelease.Draft)
    34  	assert.T(t, !firstRelease.Prerelease)
    35  	assert.Equal(t, "* Windows works!: https://github.com/jingweno/gh/commit/6cb80cb09fd9f624a64d85438157955751a9ac70", firstRelease.Body)
    36  	assert.Equal(t, "https://api.github.com/repos/jingweno/gh/releases/50013", firstRelease.URL)
    37  	assert.Equal(t, "https://api.github.com/repos/jingweno/gh/releases/50013/assets", firstRelease.AssetsURL)
    38  	assert.Equal(t, "https://uploads.github.com/repos/jingweno/gh/releases/50013/assets{?name}", firstRelease.UploadURL)
    39  	assert.Equal(t, "https://github.com/jingweno/gh/releases/v0.23.0", firstRelease.HTMLURL)
    40  	assert.Equal(t, "2013-09-23 00:59:10 +0000 UTC", firstRelease.CreatedAt.String())
    41  	assert.Equal(t, "2013-09-23 01:07:56 +0000 UTC", firstRelease.PublishedAt.String())
    42  
    43  	firstReleaseAssets := firstRelease.Assets
    44  	assert.Equal(t, 8, len(firstReleaseAssets))
    45  
    46  	firstAsset := firstReleaseAssets[0]
    47  	assert.Equal(t, 20428, firstAsset.ID)
    48  	assert.Equal(t, "gh_0.23.0-snapshot_amd64.deb", firstAsset.Name)
    49  	assert.Equal(t, "gh_0.23.0-snapshot_amd64.deb", firstAsset.Label)
    50  	assert.Equal(t, "application/x-deb", firstAsset.ContentType)
    51  	assert.Equal(t, "uploaded", firstAsset.State)
    52  	assert.Equal(t, 1562984, firstAsset.Size)
    53  	assert.Equal(t, 0, firstAsset.DownloadCount)
    54  	assert.Equal(t, "https://api.github.com/repos/jingweno/gh/releases/assets/20428", firstAsset.URL)
    55  	assert.Equal(t, "2013-09-23 01:05:20 +0000 UTC", firstAsset.CreatedAt.String())
    56  	assert.Equal(t, "2013-09-23 01:07:56 +0000 UTC", firstAsset.UpdatedAt.String())
    57  }
    58  
    59  func TestCreateRelease(t *testing.T) {
    60  	setup()
    61  	defer tearDown()
    62  
    63  	mux.HandleFunc("/repos/octokat/Hello-World/releases", func(w http.ResponseWriter, r *http.Request) {
    64  		testMethod(t, r, "POST")
    65  		testHeader(t, r, "Accept", PreviewMediaType)
    66  		testBody(t, r, `{"tag_name":"v1.0.0","target_commitish":"master"}`)
    67  		respondWith(w, loadFixture("create_release.json"))
    68  	})
    69  
    70  	repo := Repo{UserName: "octokat", Name: "Hello-World"}
    71  	params := ReleaseParams{
    72  		TagName:         "v1.0.0",
    73  		TargetCommitish: "master",
    74  	}
    75  	options := Options{Params: params}
    76  	release, _ := client.CreateRelease(repo, &options)
    77  
    78  	assert.Equal(t, "v1.0.0", release.TagName)
    79  }