@@ -7,23 +7,118 @@ let assert = chai.assert;
77describe ( "MetadataService" , function ( ) {
88 let subject ;
99 let settings ;
10-
11- beforeEach ( function ( ) {
10+ let stubJsonService ;
11+
12+ beforeEach ( function ( ) {
1213 settings = { } ;
13- subject = new MetadataService ( settings ) ;
14+ stubJsonService = new StubJsonService ( ) ;
15+ subject = new MetadataService ( settings , stubJsonService ) ;
1416 } ) ;
15-
16- describe ( "parseResult " , function ( ) {
17-
17+
18+ describe ( "constructor " , function ( ) {
19+
1820 it ( "should require a settings param" , function ( ) {
19- try {
21+ try {
2022 new MetadataService ( ) ;
2123 }
22- catch ( e ) {
24+ catch ( e ) {
2325 return ;
2426 }
2527 assert . fail ( ) ;
2628 } ) ;
29+
30+ } ) ;
31+
32+ describe ( "getMetadata" , function ( ) {
33+
34+ it ( "should return a promise" , function ( ) {
35+ subject . getMetadata ( ) . should . be . instanceof ( Promise ) ;
36+ } ) ;
37+
38+ it ( "should use metadata on settings" , function ( done ) {
39+ settings . metadata = "test" ;
40+
41+ var p = subject . getMetadata ( ) ;
42+
43+ p . then ( result => {
44+ result . should . equal ( "test" ) ;
45+ done ( ) ;
46+ } ) ;
47+ } ) ;
48+
49+ it ( "should require metadataUrl" , function ( done ) {
50+ delete settings . metadataUrl ;
51+
52+ var p = subject . getMetadata ( ) ;
53+
54+ p . then ( null , err => {
55+ err . message . should . contain ( 'metadataUrl' ) ;
56+ done ( ) ;
57+ } ) ;
58+ } ) ;
59+
60+ it ( "should require metadataUrl" , function ( done ) {
61+ delete settings . metadataUrl ;
62+
63+ var p = subject . getMetadata ( ) ;
64+
65+ p . then ( null , err => {
66+ err . message . should . contain ( 'metadataUrl' ) ;
67+ done ( ) ;
68+ } ) ;
69+ } ) ;
70+
71+ it ( "should use metadataUrl to make json call" , function ( ) {
72+ settings . metadataUrl = "http://sts/metadata" ;
73+ stubJsonService . result = Promise . resolve ( 'test' ) ;
74+
75+ subject . getMetadata ( ) ;
76+
77+ stubJsonService . url . should . equal ( "http://sts/metadata" ) ;
78+ } ) ;
79+
80+ it ( "should return metadata from json call" , function ( done ) {
81+ settings . metadataUrl = "http://sts/metadata" ;
82+ stubJsonService . result = Promise . resolve ( "test" ) ;
83+
84+ var p = subject . getMetadata ( ) ;
85+
86+ p . then ( result => {
87+ result . should . equal ( "test" ) ;
88+ done ( ) ;
89+ } ) ;
90+ } ) ;
91+
92+ it ( "should cache metadata from json call" , function ( done ) {
93+ settings . metadataUrl = "http://sts/metadata" ;
94+ stubJsonService . result = Promise . resolve ( "test" ) ;
95+
96+ var p = subject . getMetadata ( ) ;
97+
98+ p . then ( result => {
99+ settings . metadata . should . equal ( "test" ) ;
100+ done ( ) ;
101+ } ) ;
102+ } ) ;
27103
104+ it ( "should fail if json call fails" , function ( done ) {
105+ settings . metadataUrl = "http://sts/metadata" ;
106+ stubJsonService . result = Promise . reject ( "test" ) ;
107+
108+ var p = subject . getMetadata ( ) ;
109+
110+ p . then ( null , err => {
111+ err . message . should . contain ( "metadata" ) ;
112+ done ( ) ;
113+ } ) ;
114+ } ) ;
115+
28116 } ) ;
29117} ) ;
118+
119+ class StubJsonService {
120+ getJson ( url ) {
121+ this . url = url ;
122+ return this . result ;
123+ }
124+ }
0 commit comments