@@ -110,6 +110,62 @@ describe 'CommentProvider', ->
110110 provider .destroy ()
111111 expect ( => provider .addTarget (commentManager)).toThrow ()
112112
113+ describe ' .applyParsersOne' , ->
114+ rejectingParser =
115+ parseOne : () -> null
116+ parseMany : () -> null
117+ resolvingParser =
118+ parseOne : (t ) -> t
119+ parseMany : (t ) -> t
120+
121+ it ' rejects if no parsers for type' , (done ) ->
122+ promise = provider .applyParsersOne {}, CommentProvider .SOURCE_JSON
123+ promise .catch (e) ->
124+ expect (e instanceof Error).toBe true
125+ done ()
126+
127+ it ' rejects if no parser accepts' , (done ) ->
128+ provider .addParser rejectingParser, CommentProvider .SOURCE_JSON
129+ promise = provider .applyParsersOne {}, CommentProvider .SOURCE_JSON
130+ promise .catch (e) ->
131+ expect (e instanceof Error).toBe true
132+ done ()
133+
134+ it ' accepts if parser accepts' , (done ) ->
135+ provider .addParser resolvingParser, CommentProvider .SOURCE_JSON
136+ promise = provider .applyParsersOne {}, CommentProvider .SOURCE_JSON
137+ promise .then (item) ->
138+ expect (item).toEqual {}
139+ done ()
140+
141+ describe ' .applyParsersList' , ->
142+ rejectingParser =
143+ parseOne : () -> null
144+ parseMany : () -> null
145+ resolvingParser =
146+ parseOne : (t ) -> t
147+ parseMany : (t ) -> t
148+
149+ it ' rejects if no parsers for type' , (done ) ->
150+ promise = provider .applyParsersList [], CommentProvider .SOURCE_JSON
151+ promise .catch (e) ->
152+ expect (e instanceof Error).toBe true
153+ done ()
154+
155+ it ' rejects if no parser accepts' , (done ) ->
156+ provider .addParser rejectingParser, CommentProvider .SOURCE_JSON
157+ promise = provider .applyParsersList [], CommentProvider .SOURCE_JSON
158+ promise .catch (e) ->
159+ expect (e instanceof Error).toBe true
160+ done ()
161+
162+ it ' accepts if parser accepts' , (done ) ->
163+ provider .addParser resolvingParser, CommentProvider .SOURCE_JSON
164+ promise = provider .applyParsersList [], CommentProvider .SOURCE_JSON
165+ promise .then (items) ->
166+ expect (items).toEqual []
167+ done ()
168+
113169 describe ' .load' , ->
114170 it ' requests static sources' , (done ) ->
115171 provider .addStaticSource (Promise .resolve ' Foo' ), CommentProvider .SOURCE_TEXT
@@ -139,6 +195,11 @@ describe 'CommentProvider', ->
139195 addEventListener : () ->
140196 spy = sinon .spy dynamicSource, " addEventListener"
141197
198+ it ' fails if called on destroyed object' , ->
199+ p = new CommentProvider ()
200+ p .destroy ()
201+ expect ( => p .start ()).toThrow ()
202+
142203 it ' calls load' , ->
143204 loadspy = sinon .spy provider, ' load'
144205 provider .start ()
@@ -161,3 +222,8 @@ describe 'CommentProvider', ->
161222 it ' sets destroyed flag' , ->
162223 provider .destroy ()
163224 expect (provider ._destroyed ).toBe true
225+
226+ it ' destroy can be called multiple times' , ->
227+ provider .destroy ()
228+ provider .destroy ()
229+ expect (provider ._destroyed ).toBe true
0 commit comments