• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2"http://www.w3.org/TR/html4/loose.dtd">
3
4<html>
5  <head>
6	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7    <title>Tests</title>
8    <link rel="stylesheet" type="text/css" href="jsunit/css/jsUnitStyle.css">
9    <script language="JavaScript" type="text/javascript" src="../../jsunit/app/jsUnitCore.js"></script>
10    <script language="JavaScript" type="text/javascript" src="../mock4js.js"></script>
11    <script language="JavaScript" type="text/javascript" src="PriceService.js"></script>
12    <script language="JavaScript" type="text/javascript">
13
14		Mock4JS.addMockSupport(this);
15
16		var mockPriceFetcher;
17		var mockPriceCache;
18		var priceService;
19
20		function setUp() {
21			Mock4JS.clearMocksToVerify();
22			mockPriceFetcher = mock(PriceFetcher);
23			mockPriceCache = mock(PriceCache);
24			priceService = new PriceService(mockPriceFetcher.proxy(), mockPriceCache.proxy());
25		}
26
27		function tearDown() {
28			Mock4JS.verifyAllMocks();
29		}
30
31    	function testGetsPriceFromFetcherWhenPriceNotInCache() {
32    		mockPriceCache.expects(once()).getCachedPrice("USDGBP").will(returnValue(null));
33    		mockPriceFetcher.expects(once()).getPriceFromServer("USDGBP").will(returnValue(123.4));
34    		mockPriceCache.expects(once()).setCachedPrice("USDGBP", 123.4);
35
36    		var result = priceService.getPrice("USDGBP");
37
38    		assertEquals("Should have returned price from server", 123.4, result);
39		}
40
41    	function testDoesntGetsPriceFromFetcherWhenPriceAlreadyInCache() {
42    		mockPriceCache.expects(once()).getCachedPrice("USDGBP").will(returnValue(123.4));
43    		mockPriceCache.expects(never()).setCachedPrice();
44    		mockPriceFetcher.expects(never()).getPriceFromServer("USDGBP");
45
46    		var result = priceService.getPrice("USDGBP");
47
48    		assertEquals("Should have returned price from cache", 123.4, result);
49		}
50
51      </script>
52  </head>
53
54  <body>
55    <h1>JsUnit Tests</h1>
56
57    <p>This page contains some JsUnit tests. To see them, take a look at the source.</p>
58  </body>
59</html>
60
61