Skip to content

Commit

Permalink
Closes #3
Browse files Browse the repository at this point in the history
  • Loading branch information
RaySinnema committed May 27, 2017
1 parent dffadfb commit fd0bd82
Show file tree
Hide file tree
Showing 30 changed files with 272 additions and 134 deletions.
5 changes: 4 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,16 @@ repositories {

dependencies {
compile "org.springframework.boot:spring-boot-starter-web:${springBootVersion}",
"org.springframework.boot:spring-boot-starter-actuator:$springBootVersion"
"org.springframework.boot:spring-boot-starter-actuator:$springBootVersion",
"commons-io:commons-io:$commonsIoVersion"
testCompile 'junit:junit:4.12',
"net.serenity-bdd:serenity-junit:$serenityVersion",
"net.serenity-bdd:serenity-screenplay:$serenityVersion",
"net.serenity-bdd:serenity-screenplay-webdriver:$serenityVersion"
}

sourceSets.test.java.srcDirs = ['src/programmer-test/java', 'src/customer-test/java']

defaultTasks 'build'


Expand Down
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
commonsIoVersion = 2.5
serenityVersion = 1.2.4
springBootVersion = 1.5.3.RELEASE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.remonsinnema.awe.acceptance.abilities;
package abilities;

import java.io.File;
import java.io.FileInputStream;
Expand Down
34 changes: 34 additions & 0 deletions src/customer-test/java/actions/LoadWork.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package actions;

import static net.serenitybdd.screenplay.Tasks.instrumented;

import net.serenitybdd.screenplay.Actor;
import net.serenitybdd.screenplay.Interaction;
import net.serenitybdd.screenplay.Performable;
import net.serenitybdd.screenplay.actions.Click;
import net.serenitybdd.screenplay.actions.Enter;

import ui.Prompt;
import ui.WorkPage;


public class LoadWork implements Interaction {

private final String fileName;

public LoadWork(String fileName) {
this.fileName = fileName;
}

@Override
public <T extends Actor> void performAs(T actor) {
actor.attemptsTo(Click.on(WorkPage.LOAD_BUTTON),
Enter.theValue(fileName).into(Prompt.ANSWER_FIELD),
Click.on(Prompt.OK_BUTTON));
}

public static Performable from(String fileName) {
return instrumented(LoadWork.class, fileName);
}

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.remonsinnema.awe.acceptance.action;
package actions;

import static net.serenitybdd.screenplay.Tasks.instrumented;

Expand All @@ -7,16 +7,16 @@
import net.serenitybdd.screenplay.Performable;
import net.serenitybdd.screenplay.actions.Click;

import com.remonsinnema.awe.acceptance.ui.Prompt;
import com.remonsinnema.awe.acceptance.ui.WorkPage;
import ui.Prompt;
import ui.WorkPage;


public class SaveWork implements Interaction {

@Override
public <T extends Actor> void performAs(T actor) {
actor.attemptsTo(Click.on(WorkPage.SAVE_BUTTON),
Click.on(Prompt.OK));
Click.on(Prompt.OK_BUTTON));
}

public static Performable toTheServer() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.remonsinnema.awe.acceptance.action;
package actions;

import static org.openqa.selenium.Keys.TAB;

Expand All @@ -9,7 +9,7 @@
import net.serenitybdd.screenplay.Performable;
import net.serenitybdd.screenplay.actions.Enter;

import com.remonsinnema.awe.acceptance.ui.WorkPage;
import ui.WorkPage;


public final class Set {
Expand Down Expand Up @@ -55,7 +55,7 @@ public SetContents(String contents) {
@Override
public <T extends Actor> void performAs(T actor) {
actor.attemptsTo(Enter.theValue(contents)
.into(WorkPage.CONTENTS_FIELD)
.into(WorkPage.TEXT_FIELD)
.thenHit(TAB));
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.remonsinnema.awe.acceptance.action;
package actions;

import static net.serenitybdd.screenplay.Tasks.instrumented;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.remonsinnema.awe.acceptance.action;
package actions;

import static net.serenitybdd.screenplay.Tasks.instrumented;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.remonsinnema.awe.acceptance.features;
package features;

import static org.hamcrest.CoreMatchers.is;

Expand All @@ -18,23 +18,28 @@
import net.serenitybdd.screenplay.abilities.BrowseTheWeb;
import net.thucydides.core.annotations.Managed;

import com.remonsinnema.awe.acceptance.abilities.BrowseTheFileSystem;
import com.remonsinnema.awe.acceptance.questions.TheContents;
import com.remonsinnema.awe.acceptance.questions.TheText;
import com.remonsinnema.awe.acceptance.questions.TheTitle;
import com.remonsinnema.awe.acceptance.tasks.Name;
import com.remonsinnema.awe.acceptance.tasks.Save;
import com.remonsinnema.awe.acceptance.tasks.Start;
import com.remonsinnema.awe.acceptance.tasks.Stop;
import com.remonsinnema.awe.acceptance.tasks.Write;
import abilities.BrowseTheFileSystem;
import questions.TheContents;
import questions.TheText;
import questions.TheTitle;
import tasks.Load;
import tasks.Name;
import tasks.Save;
import tasks.Start;
import tasks.Stop;
import tasks.Write;


@RunWith(SerenityRunner.class)
public class WhenWritingHeartbreakingWorkOfStaggeringGenius {
public class WhenPersistingWritings {

private static final String TITLE = "Once upon a time";
private static final String TEXT = "The end.";
private static final String FILE_NAME = "once-upon-a-time.txt";

private final Actor allen = Actor.named("Allen");
@Managed(driver = "phantomjs")
private WebDriver theBrowser;
private final Actor allen = Actor.named("Allen");

@Before
public void init() {
Expand All @@ -49,15 +54,23 @@ public void done() {
}

@Test
public void shouldWriteAndSaveWork() {
when(allen).attemptsTo(Name.theWork("Once upon a time"));
then(allen).should(seeThat(TheTitle.ofTheWork(), is("Once upon a time")));
public void shouldSaveAndLoadWork() {
when(allen).attemptsTo(Name.theWork(TITLE));
then(allen).should(seeThat(TheTitle.ofTheWork(), is(TITLE)));

when(allen).attemptsTo(Write.text("The end."));
then(allen).should(seeThat(TheText.ofTheWork(), is("The end.")));
when(allen).attemptsTo(Write.text(TEXT));
then(allen).should(seeThat(TheText.ofTheWork(), is(TEXT)));

when(allen).attemptsTo(Save.theWork());
then(allen).should(seeThat(TheContents.ofTheFile("once-upon-a-time.txt"), is("The end.")));
then(allen).should(seeThat(TheContents.ofTheFile(FILE_NAME), is(TEXT)));

when(allen).attemptsTo(
Name.theWork("Er was eens"),
Write.text("En ze leefden nog lang en gelukkig."),
Load.theWorkFrom(FILE_NAME));
then(allen).should(
seeThat(TheTitle.ofTheWork(), is(TITLE)),
seeThat(TheText.ofTheWork(), is(TEXT)));
}

}
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.remonsinnema.awe.acceptance.questions;
package questions;

import static net.serenitybdd.core.steps.Instrumented.instanceOf;

import net.serenitybdd.screenplay.Actor;
import net.serenitybdd.screenplay.Question;
import net.serenitybdd.screenplay.annotations.Subject;

import com.remonsinnema.awe.acceptance.abilities.BrowseTheFileSystem;
import abilities.BrowseTheFileSystem;


@Subject("the contents of the file '#fileName'")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.remonsinnema.awe.acceptance.questions;
package questions;

import static net.serenitybdd.core.steps.Instrumented.instanceOf;

Expand All @@ -7,15 +7,15 @@
import net.serenitybdd.screenplay.annotations.Subject;
import net.serenitybdd.screenplay.questions.Value;

import com.remonsinnema.awe.acceptance.ui.WorkPage;
import ui.WorkPage;


@Subject("the work's text")
public class TheText implements Question<String> {

@Override
public String answeredBy(Actor actor) {
return Value.of(WorkPage.CONTENTS_FIELD)
return Value.of(WorkPage.TEXT_FIELD)
.viewedBy(actor)
.asString();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.remonsinnema.awe.acceptance.questions;
package questions;

import static net.serenitybdd.core.steps.Instrumented.instanceOf;

Expand All @@ -7,7 +7,7 @@
import net.serenitybdd.screenplay.annotations.Subject;
import net.serenitybdd.screenplay.questions.Value;

import com.remonsinnema.awe.acceptance.ui.WorkPage;
import ui.WorkPage;


@Subject("the work's title")
Expand Down
31 changes: 31 additions & 0 deletions src/customer-test/java/tasks/Load.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package tasks;

import static net.serenitybdd.screenplay.Tasks.instrumented;

import net.serenitybdd.screenplay.Actor;
import net.serenitybdd.screenplay.Performable;
import net.serenitybdd.screenplay.Task;
import net.thucydides.core.annotations.Step;

import actions.LoadWork;


public class Load implements Task {

private final String fileName;

public Load(String fileName) {
this.fileName = fileName;
}

@Override
@Step("{0} loads the file '#fileName'")
public <T extends Actor> void performAs(T actor) {
actor.attemptsTo(LoadWork.from(fileName));
}

public static Performable theWorkFrom(String fileName) {
return instrumented(Load.class, fileName);
}

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.remonsinnema.awe.acceptance.tasks;
package tasks;

import static net.serenitybdd.screenplay.Tasks.instrumented;

Expand All @@ -7,7 +7,7 @@
import net.serenitybdd.screenplay.Task;
import net.thucydides.core.annotations.Step;

import com.remonsinnema.awe.acceptance.action.Set;
import actions.Set;


public class Name implements Task {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.remonsinnema.awe.acceptance.tasks;
package tasks;

import static net.serenitybdd.screenplay.Tasks.instrumented;

Expand All @@ -7,7 +7,7 @@
import net.serenitybdd.screenplay.Task;
import net.thucydides.core.annotations.Step;

import com.remonsinnema.awe.acceptance.action.SaveWork;
import actions.SaveWork;


public class Save implements Task {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.remonsinnema.awe.acceptance.tasks;
package tasks;

import static net.serenitybdd.screenplay.Tasks.instrumented;

Expand All @@ -8,7 +8,7 @@
import net.serenitybdd.screenplay.actions.Open;
import net.thucydides.core.annotations.Step;

import com.remonsinnema.awe.acceptance.action.StartUp;
import actions.StartUp;


public class Start implements Task {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.remonsinnema.awe.acceptance.tasks;
package tasks;

import static net.serenitybdd.screenplay.Tasks.instrumented;

Expand All @@ -7,7 +7,7 @@
import net.serenitybdd.screenplay.Task;
import net.thucydides.core.annotations.Step;

import com.remonsinnema.awe.acceptance.action.ShutDown;
import actions.ShutDown;


public class Stop implements Task {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.remonsinnema.awe.acceptance.tasks;
package tasks;

import static net.serenitybdd.screenplay.Tasks.instrumented;

Expand All @@ -7,7 +7,7 @@
import net.serenitybdd.screenplay.Task;
import net.thucydides.core.annotations.Step;

import com.remonsinnema.awe.acceptance.action.Set;
import actions.Set;


public class Write implements Task {
Expand Down
11 changes: 11 additions & 0 deletions src/customer-test/java/ui/Prompt.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ui;

import net.serenitybdd.screenplay.targets.Target;


public interface Prompt {

Target OK_BUTTON = Target.the("the OK button").locatedBy("#ok");
Target ANSWER_FIELD = Target.the("the Answer field").locatedBy("#answer");

}
13 changes: 13 additions & 0 deletions src/customer-test/java/ui/WorkPage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package ui;

import net.serenitybdd.screenplay.targets.Target;


public interface WorkPage {

Target TITLE_FIELD = Target.the("the Title field").locatedBy("#title");
Target TEXT_FIELD = Target.the("the Text field").locatedBy("#text");
Target SAVE_BUTTON = Target.the("the Save button").locatedBy("#save");
Target LOAD_BUTTON = Target.the("the Load button").locatedBy("#load");

}
Loading

0 comments on commit fd0bd82

Please sign in to comment.