View Javadoc

1   /**
2    * Copyright (c) 2002-2015, JWebUnit team.
3    *
4    * This file is part of JWebUnit.
5    *
6    * JWebUnit is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU Lesser General Public License as published by
8    * the Free Software Foundation, either version 3 of the License, or
9    * (at your option) any later version.
10   *
11   * JWebUnit is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU General Public License for more details.
15   *
16   * You should have received a copy of the GNU Lesser General Public License
17   * along with JWebUnit.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package net.sourceforge.jwebunit.tests;
20  
21  import static net.sourceforge.jwebunit.junit.JWebUnit.assertElementPresent;
22  import static net.sourceforge.jwebunit.junit.JWebUnit.assertFormElementEquals;
23  import static net.sourceforge.jwebunit.junit.JWebUnit.assertFormElementMatch;
24  import static net.sourceforge.jwebunit.junit.JWebUnit.assertHiddenFieldPresent;
25  import static net.sourceforge.jwebunit.junit.JWebUnit.assertMatchInElement;
26  import static net.sourceforge.jwebunit.junit.JWebUnit.assertNoMatch;
27  import static net.sourceforge.jwebunit.junit.JWebUnit.assertNoMatchInElement;
28  import static net.sourceforge.jwebunit.junit.JWebUnit.assertSelectedOptionEquals;
29  import static net.sourceforge.jwebunit.junit.JWebUnit.assertSelectedOptionMatches;
30  import static net.sourceforge.jwebunit.junit.JWebUnit.assertTextFieldEquals;
31  import static net.sourceforge.jwebunit.junit.JWebUnit.assertTextInElement;
32  import static net.sourceforge.jwebunit.junit.JWebUnit.assertTextNotInElement;
33  import static net.sourceforge.jwebunit.junit.JWebUnit.assertTextNotPresent;
34  import static net.sourceforge.jwebunit.junit.JWebUnit.beginAt;
35  import static net.sourceforge.jwebunit.junit.JWebUnit.setBaseUrl;
36  import static org.junit.Assert.fail;
37  
38  import org.junit.Test;
39  
40  /**
41   * Test the assertions provided by WebTestCase using the PseudoServer test
42   * package provided by Russell Gold in httpunit.
43   * 
44   * @author Wilkes Joiner
45   * @author Jim Weaver
46   */
47  public class WebAssertionsTest extends JWebUnitAPITestCase {
48  
49  	public void setUp() throws Exception {
50  		super.setUp();
51  		setBaseUrl(HOST_PATH + "/WebAssertionsTest");
52  		beginAt("/testPage.html");
53  	}
54  
55      @Test
56      public void testAssertTitleEquals() throws Throwable {
57          assertPass("assertTitleEquals", new String[] { "testPage" });
58          assertFail("assertTitleEquals", "wrong title");
59      }
60  
61      @Test
62      public void testAssertTitleMatch() throws Throwable {
63          assertPass("assertTitleMatch", new String[] { "test[Pp]age" });
64          assertFail("assertTitleMatch", "[Ww]rong title");
65      }
66  
67      @Test
68      public void testAssertTitleNotEquals() throws Throwable {
69          assertPass("assertTitleNotEquals", new String[] { "wrong title" });
70          assertFail("assertTitleNotEquals", "testPage");
71      }
72  
73      @Test
74      public void testAssertTextPresent() throws Throwable {
75          assertPassFail("assertTextPresent", "This is a test.", "no such text");
76      }
77  
78      @Test
79      public void testAssertMatch() throws Throwable {
80          assertPassFail("assertMatch", "This (is)* a .* test.", "no.*text");
81      }
82  
83      @Test
84      public void testAssertTextNotPresent() throws Throwable {
85          assertPassFail("assertTextNotPresent", "no such text", "This is a test.");
86      }
87  
88      @Test public void testAssertNoMatch() throws Throwable {
89          assertPassFail("assertNoMatch", "no.*text", "This (is)* a .* test.");
90      }
91      
92      /**
93       * Check that {@link #assertNoMatch(String)} can actually fail.
94       */
95      @Test(expected=AssertionError.class)
96      public void testAssertNoMatchFails() throws Throwable {
97          // 'Span Text' definitely exists in the source page text
98          assertNoMatch("Span Text");
99      }
100 
101 	@Test public void testAssertLinkPresentWithText() throws Throwable {
102 		assertPassFail("assertLinkPresentWithText", "test link", "no such link");
103 	}
104 
105 	@Test public void testAssertLinkNotPresentWithText() throws Throwable {
106 		assertPassFail("assertLinkNotPresentWithText", "no such link",
107 				"test link");
108 	}
109 
110 	@Test public void testAssertLinkPresentWithTextN() throws Throwable {
111 		assertPass("assertLinkPresentWithText", new Object[] { "test link",
112 				Integer.valueOf(0) });
113 		assertFail("assertLinkPresentWithText", new Object[] { "test link",
114 				Integer.valueOf(1) });
115 	}
116 
117 	@Test public void testAssertLinkNotPresentWithTextN() throws Throwable {
118 		assertPass("assertLinkNotPresentWithText", new Object[] { "test link",
119 				new Integer(1) });
120 		assertFail("assertLinkNotPresentWithText", new Object[] { "test link",
121 				Integer.valueOf(0) });
122 	}
123 
124 	@Test public void testAssertLinkPresent() throws Throwable {
125 		assertPassFail("assertLinkPresent", "test_link_id", "no_link_id");
126 	}
127 
128 	@Test public void testAssertLinkNotPresent() throws Throwable {
129 		assertPassFail("assertLinkNotPresent", "no_link_id", "test_link_id");
130 	}
131 
132 	@Test public void testAssertLinkPresentWithImage() throws Throwable {
133 		assertPassFail("assertLinkPresentWithImage", "graphic.jpg",
134 				"nosuchgraphic.jsp");
135 	}
136 
137 	@Test public void testAssertLinkNotPresentWithImage() throws Throwable {
138 		assertPassFail("assertLinkNotPresentWithImage", "nosuchgraphic.jpg",
139 				"graphic.jpg");
140 	}
141 
142 	@Test public void testAssertElementPresent() throws Throwable {
143 		assertElementPresent("row1");
144 		assertPassFail("assertElementPresent", "span_id", "no_id");
145 	}
146 
147 	@Test public void testAssertElementNotPresent() throws Throwable {
148 		assertPassFail("assertElementNotPresent", "no_id", "span_id");
149 	}
150 
151 	@Test public void testAssertTextNotInElement() throws Throwable {
152 		assertTextNotInElement("outer_id", "nosuchtext");
153 		assertTextNotInElement("inner_id", "Outer");
154 		assertFail("assertTextNotInElement",
155 				new Object[] { "outer_id", "Outer" });
156 	}
157 
158 	@Test public void testAssertElementContainsText() throws Throwable {
159 		assertTextInElement("span_id", "Span");
160 		assertTextInElement("span_id", "Text");
161 		assertTextInElement("span_id", "Span Text");
162         assertTextInElement("span_empty", "");
163 		assertFail("assertTextInElement",
164 				new Object[] { "span_id", "Not Text" });
165 	}
166 
167 	@Test public void testAssertElementContainsTextInChild() throws Throwable {
168 		assertTextInElement("outer_id", "Outer");
169 		assertTextInElement("outer_id", "Text");
170 		assertTextInElement("outer_id", "Inner Text");
171 		assertTextInElement("outer2", "$100,000/$300,000");
172 	}
173 
174     @Test public void testAssertNoMatchInElement() throws Throwable {
175         assertNoMatchInElement("outer_id", "no[Ss]uchtext");
176         assertNoMatchInElement("inner_id", "Out+er");
177         assertFail("assertNoMatchInElement", new Object[] {"outer_id", "Out+er"});
178     }
179 
180     @Test public void testAssertMatchInElement() throws Throwable {
181         assertMatchInElement("span_id", "Sp[Aa]n");
182         assertMatchInElement("span_id", "Te+xt");
183         assertMatchInElement("span_id", "Span\\sText");
184         assertFail("assertMatchInElement", new Object[] {"span_id", "Not.*Text"});
185     }
186     
187     @Test public void testAssertMatchInElementChild() throws Throwable {
188         assertMatchInElement("outer_id", "Out+er");
189         assertMatchInElement("outer_id", "Texx*t");
190         assertMatchInElement("outer_id", "Inner.*Text");
191     }
192 
193     /** 
194      * @deprecated
195      */
196     @Test public void testAssertFormElementEquals() throws Throwable {
197         assertFormElementEquals("testInputElement", "testValue");
198         assertFail("assertFormElementEquals", new Object[] {"testInputElement", "AnotherValue"});
199     }
200     
201     @Test public void testAssertTextFieldEquals() throws Throwable {
202         assertTextFieldEquals("testInputElement", "testValue");
203         assertFail("assertTextFieldEquals", new Object[] {"testInputElement", "AnotherValue"});
204     }
205     
206     @Test public void testAssertHiddenFieldPresent() throws Throwable {
207         assertHiddenFieldPresent("hidden", "h");
208         assertFail("assertHiddenFieldPresent", new Object[] {"hidden", "AnotherValue"});
209     }
210 
211     @Test public void testAssertFormElementMatch() throws Throwable {
212         assertFormElementMatch("testInputElement", "test[Vv]alue");
213         assertFail("assertFormElementMatch", new Object[] {"testInputElement", "Another[Vv]alue"});
214     }
215 
216     @Test public void testAssertSelectedOptionEquals() throws Throwable {
217         assertSelectedOptionEquals("testSelect", "Value1");
218         assertFail("assertSelectedOptionEquals", new Object[] {"testSelect", "AnotherValue"});
219     }
220 
221     @Test public void testAssertSelectedOptionMatch() throws Throwable {
222         assertSelectedOptionMatches("testSelect", "[Vv]alue1");
223         assertFail("assertSelectedOptionMatches", new Object[] {"testSelect", "Another[Vv]alue"});
224     }
225 
226 
227 }