Package br.com.caelum.vraptor.musicjungle.acceptance

Source Code of br.com.caelum.vraptor.musicjungle.acceptance.RoutesTest

package br.com.caelum.vraptor.musicjungle.acceptance;

import static br.com.caelum.vraptor.musicjungle.enums.MusicType.ROCK;
import static org.hamcrest.Matchers.containsString;
import static org.junit.Assert.assertThat;

import org.junit.Before;
import org.junit.Test;

import br.com.caelum.vraptor.musicjungle.acceptance.builder.MusicBuilder;
import br.com.caelum.vraptor.musicjungle.acceptance.infra.AcceptanceTestCase;
import br.com.caelum.vraptor.musicjungle.acceptance.pages.LoginPage;
import br.com.caelum.vraptor.musicjungle.acceptance.pages.PageObject;
import br.com.caelum.vraptor.musicjungle.acceptance.pages.SearchPage;
import br.com.caelum.vraptor.musicjungle.model.Music;

/**
* Some tests for vraptor {@code routes} of a {@code RESTFUL} resource,
* such as post, get, path, defaul url values, param injection and so on.
*
* @author Rodrigo Turini
*/
public class RoutesTest extends AcceptanceTestCase {

  private LoginPage loginPage;
  private Music music;
  private String userName = "acceptancetest";

  @Before
  public void setUp() {
    this.loginPage = loginPage();
    loginPage.createAndloginAsUser(userName);
    this.music = new MusicBuilder(3, "Please Please Me", "Beatles", ROCK).create();
    homePage().addMusic(music);
    loginPage.logout();
  }

  @Test
  public void shouldHandleAllRoutesTypes() throws Exception {
    // @Post testing default route /home/login
    shouldAccessPostMethodWithDefaultURLValue();
    // @Get(/musics/search)
    shouldAccessGetMethodWithADefinedValue();
    // @Path(/musics/{music.id}) @Get()
    shouldAccessPathPlusGetMethodWithURLParameter();
  }

  private void shouldAccessPathPlusGetMethodWithURLParameter() {
    PageObject musicPage = homePage().clickOnFirstMusic();
    assertPageContains(musicPage, music.getTitle(), "Owners:", userName);
  }

  private void shouldAccessGetMethodWithADefinedValue() {
    loginPage.loginAsUser(userName);
    String musicTitle = music.getTitle();
    SearchPage searchPage = homePage().searchFor(musicTitle);
    assertPageContains(searchPage, "Search results", musicTitle);
  }

  private void shouldAccessPostMethodWithDefaultURLValue() {
    assertPageContains(loginPage, "VRaptor Music Jungle", "Sign in");
  }

  private void assertPageContains(PageObject page, String ...args) {
    String pageSource = page.pageSource();
    for (String expectedText : args) {
      assertThat(pageSource, containsString(expectedText));
    }
  }

}
TOP

Related Classes of br.com.caelum.vraptor.musicjungle.acceptance.RoutesTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.