NeoNagatter
しょっぴーの指摘を受けてまた修正します。
とりあえず、修正前のコードをうpします。
▼WicketApplication.java
import org.apache.wicket.protocol.http.WebApplication; public class WicketApplication extends WebApplication { /*** constructor ***/ public WicketApplication() { } /*** method ***/ @Override protected void init() { super.init(); this.getMarkupSettings().setDefaultMarkupEncoding("UTF-8"); } public Class<HomePage> getHomePage() { return HomePage.class; } }
▼HomePage.java
import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.PasswordTextField; import org.apache.wicket.markup.html.form.TextArea; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.model.PropertyModel; /** * Homepage */ public class HomePage extends WebPage { private static final long serialVersionUID = 1L; /** * Constructor that is invoked when page is invoked without a session. * * @param parameters * Page parameters */ public HomePage(final PageParameters parameters) { PostingData data = new PostingData(); TextField<String> inputId = new TextField<String>("inputId", new PropertyModel<String>(data, "userId")); PasswordTextField inputPw = new PasswordTextField("inputPw", new PropertyModel<String>(data, "password")); TextArea<String> inputSb = new TextArea<String>("inputSb", new PropertyModel<String>(data, "subject")); SubmitButton confirmButton = new SubmitButton("confirmButton", data); Form<Object> inputForm = new Form<Object>("inputForm"); inputForm.add(inputId, inputPw, inputSb, confirmButton); this.add(inputForm); } }
▼ConfirmPage.java
import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; public class ConfirmPage extends WebPage { public ConfirmPage(PostingData data) { Label confirmId = new Label("confirmId", data.getUserId()); Label confirmSb = new Label("confirmSb", data.getSubject()); SubmitLink submitlink = new SubmitLink("submitLink", data); this.add(confirmId, confirmSb, submitlink); } }
▼ResultPage.java
import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; public class ResultPage extends WebPage { /*** constructor ***/ public ResultPage(String msg) { Label resultmsg = new Label("resultmsg", msg); this.add(resultmsg); } }
▼PostingData.java
import java.io.Serializable; import twitter4j.Twitter; import twitter4j.TwitterException; public class PostingData implements Serializable { /** * */ private static final long serialVersionUID = 1L; /*** field ***/ private String userId; private String password; private String subject; /*** constructor ***/ public PostingData() { } public PostingData(String i, String p, String s) { this.userId = i; this.password = p; this.subject = s; } /*** method ***/ public boolean postToTwitter() { Twitter twitter = new Twitter(userId, password); try { twitter.updateStatus(subject); System.out.println("Success"); return true; } catch (TwitterException e) { e.printStackTrace(); return false; } } /*** getter&setter ***/ public void setUserId(String userId) { this.userId = userId; } public String getUserId() { return userId; } public void setPassword(String password) { this.password = password; } public String getPassword() { return password; } public void setSubject(String subject) { this.subject = subject; } public String getSubject() { return subject; } }
▼SubmitButton.java
import org.apache.wicket.markup.html.form.Button; public class SubmitButton extends Button { /** * */ private static final long serialVersionUID = 1L; /*** field ***/ private final PostingData postingData; /*** constructor ***/ public SubmitButton(String id, PostingData data) { super(id); this.postingData = data; } /*** method ***/ @Override public void onSubmit() { this.setResponsePage(new ConfirmPage(postingData)); } }
▼SubmitLink.java
import org.apache.wicket.markup.html.link.Link; public class SubmitLink extends Link<String> { /** * */ private static final long serialVersionUID = 8707896010504827907L; /*** field ***/ private PostingData postingData; /*** constructor ***/ public SubmitLink(String id, PostingData data) { super(id); this.postingData = data; } /*** method ***/ @Override public void onClick() { if (postingData.postToTwitter()) { this.setResponsePage(new ResultPage("投稿に成功しました。")); } else { this.setResponsePage(new ResultPage("投稿に失敗しました。")); } } }
テストコード
TestHomePage.java
import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.PasswordTextField; import org.apache.wicket.markup.html.form.TextArea; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.util.tester.WicketTester; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; public class TestHomePage { private WicketTester tester; @Before public void setUp() { tester = new WicketTester(); tester.startPage(HomePage.class); } @Test public void ページ表示() { tester.assertRenderedPage(HomePage.class); } @Ignore @Test public void ラベル表示() { tester.assertLabel("testmsg", "aaa"); } @Test public void フォームの表示() { tester.assertComponent("inputForm", Form.class); tester.assertComponent("inputForm:inputId", TextField.class); tester.assertComponent("inputForm:inputPw", PasswordTextField.class); tester.assertComponent("inputForm:inputSb", TextArea.class); tester.assertComponent("inputForm:confirmButton", Button.class); } }
TestConfirmPage.java
import org.apache.wicket.util.tester.FormTester; import org.apache.wicket.util.tester.WicketTester; import org.junit.Before; import org.junit.Test; public class TestConfirmPage { private WicketTester tester; @Before public void setUp() { tester = new WicketTester(); tester.startPage(HomePage.class); FormTester formTester = tester.newFormTester("inputForm"); formTester.setValue("inputId", "hoge"); formTester.setValue("inputPw", "hoge"); formTester.setValue("inputSb", "hoge"); formTester.submit("confirmButton"); } @Test public void ページの表示() { tester.assertRenderedPage(ConfirmPage.class); } @Test public void リンクでページ遷移するか() { tester.clickLink("submitLink"); tester.assertRenderedPage(ResultPage.class); } }
TestResultPage.java
import org.apache.wicket.util.tester.WicketTester; import org.junit.Before; import org.junit.Test; public class TestResultPage { private WicketTester tester; @Before public void setUp() { tester = new WicketTester(); tester.startPage(ResultPage.class); } @Test public void testRenderMyPage() { tester.assertRenderedPage(ResultPage.class); } }