/******************************************************************************* * Copyright (c) 2011 GitHub Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Kevin Sawicki (GitHub Inc.) - initial API and implementation *******************************************************************************/ package org.eclipse.egit.github.core.tests.live; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import org.eclipse.egit.github.core.Comment; import org.eclipse.egit.github.core.Gist; import org.eclipse.egit.github.core.GistFile; import org.eclipse.egit.github.core.client.PageIterator; import org.eclipse.egit.github.core.service.GistService; import org.junit.Test; /** * @author Kevin Sawicki (kevin@github.com) */ public class GistTest extends LiveTest { /** * Test list a user's gists * * @throws IOException */ @Test public void listGists() throws IOException { checkUser(); GistService service = new GistService(client); Collection<Gist> gists = service.getGists(client.getUser()); assertNotNull(gists); assertFalse(gists.isEmpty()); for (Gist gist : gists) { assertNotNull(gist); assertNotNull(gist.getCreatedAt()); assertNotNull(gist.getId()); assertNotNull(gist.getFiles()); for (GistFile file : gist.getFiles().values()) { assertNotNull(file); } List<Comment> comments = service.getComments(gist.getId()); assertNotNull(comments); for (Comment comment : comments) { assertNotNull(comment); assertNotNull(comment.getUrl()); assertNotNull(comment.getCreatedAt()); assertNotNull(comment.getUpdatedAt()); assertNotNull(comment.getUser()); } } } /** * Test creating and deleting a Gist * * @throws IOException */ @Test public void createDeleteGist() throws IOException { checkUser(); Gist gist = new Gist().setDescription("testing"); gist.setPublic(false); GistFile file = new GistFile().setContent("content"); gist.setFiles(Collections.singletonMap("foo.txt", file)); GistService service = new GistService(client); Gist created = service.createGist(gist); assertNotNull(created); assertNotNull(created.getId()); service.deleteGist(created.getId()); } /** * Test creating and deleting a Gist comment * * @throws IOException */ @Test public void createDeleteGistComment() throws IOException { checkUser(); Gist gist = new Gist().setDescription("testing"); gist.setPublic(false); GistFile file = new GistFile().setContent("content"); gist.setFiles(Collections.singletonMap("foo.txt", file)); GistService service = new GistService(client); Gist created = service.createGist(gist); assertNotNull(created); assertNotNull(created.getId()); try { Comment comment = service.createComment(created.getId(), "test comment"); assertNotNull(comment); service.deleteComment(comment.getId()); } finally { service.deleteGist(created.getId()); } } /** * Test starring, unstarring, and checking if a gist if starred * * @throws IOException */ @Test public void starUnstarGist() throws IOException { checkUser(); Gist gist = new Gist().setDescription("star test"); gist.setPublic(false); GistFile file = new GistFile().setContent("content"); gist.setFiles(Collections.singletonMap("foo.txt", file)); GistService service = new GistService(client); Gist created = service.createGist(gist); assertNotNull(created); String id = created.getId(); assertNotNull(id); try { List<Gist> starred = service.getStarredGists(); assertNotNull(starred); for (Gist star : starred) assertFalse(id.equals(star.getId())); assertFalse(service.isStarred(id)); service.starGist(id); assertTrue(service.isStarred(id)); starred = service.getStarredGists(); assertNotNull(starred); boolean gistStarred = false; for (Gist star : starred) { gistStarred = id.equals(star.getId()); if (gistStarred) break; } assertTrue(gistStarred); service.unstarGist(id); assertFalse(service.isStarred(id)); } finally { service.deleteGist(id); } } /** * Test paging through public gists * * @throws Exception */ @Test public void twoPublicGistPages() throws Exception { GistService service = new GistService(client); PageIterator<Gist> pages = service.pagePublicGists(10); assertNotNull(pages); assertTrue(pages.hasNext()); Collection<Gist> gists = pages.next(); assertNotNull(gists); assertTrue(gists.size() > 0); Set<String> ids = new HashSet<String>(); for (Gist gist : gists) { assertNotNull(gist); assertNotNull(gist.getId()); assertFalse(ids.contains(gist.getId())); ids.add(gist.getId()); } assertTrue(pages.hasNext()); gists = pages.next(); assertNotNull(gists); assertTrue(gists.size() > 0); for (Gist gist : gists) { assertNotNull(gist); assertNotNull(gist.getId()); assertFalse(ids.contains(gist.getId())); ids.add(gist.getId()); } } /** * Test forking a gist * * @throws Exception */ @Test public void forkGist() throws Exception { checkUser(); GistService service = new GistService(client); Gist forked = service.forkGist("1"); assertNotNull(forked); assertNotNull(forked.getId()); assertFalse("1".equals(forked.getId())); assertNotNull(forked.getDescription()); service.deleteGist(forked.getId()); } }