1616var proxyquire = require ( 'proxyquire' ) . noCallThru ( ) ;
1717var text = 'Hello world!' ;
1818var apiKey = 'key' ;
19+ var target = 'es' ;
1920
2021function getSample ( ) {
2122 var languagesMock = [
@@ -29,9 +30,9 @@ function getSample () {
2930 } ;
3031 var translationMock = 'Привет мир!' ;
3132 var translateMock = {
32- getLanguages : sinon . stub ( ) . callsArgWith ( 0 , null , languagesMock ) ,
33- detect : sinon . stub ( ) . callsArgWith ( 1 , null , resultMock ) ,
34- translate : sinon . stub ( ) . callsArgWith ( 2 , null , translationMock )
33+ getLanguages : sinon . stub ( ) . yields ( null , languagesMock ) ,
34+ detect : sinon . stub ( ) . yields ( null , resultMock ) ,
35+ translate : sinon . stub ( ) . yields ( null , translationMock )
3536 } ;
3637 var TranslateMock = sinon . stub ( ) . returns ( translateMock ) ;
3738
@@ -65,14 +66,14 @@ describe('translate:translate', function () {
6566 assert . equal ( callback . firstCall . args . length , 2 , 'callback received 2 arguments' ) ;
6667 assert . ifError ( callback . firstCall . args [ 0 ] , 'callback did not receive error' ) ;
6768 assert . strictEqual ( callback . firstCall . args [ 1 ] , sample . mocks . result , 'callback received result' ) ;
68- assert ( console . log . calledWith ( 'Detected %s (%s) with confidence %d ' , 'English' , 'en' , sample . mocks . result . confidence ) ) ;
69+ assert ( console . log . calledWith ( 'Detected language: ' , sample . mocks . result ) ) ;
6970 } ) ;
7071
7172 it ( 'should handle error' , function ( ) {
7273 var error = new Error ( 'error' ) ;
7374 var sample = getSample ( ) ;
7475 var callback = sinon . stub ( ) ;
75- sample . mocks . translate . detect = sinon . stub ( ) . callsArgWith ( 1 , error ) ;
76+ sample . mocks . translate . detect . yields ( error ) ;
7677
7778 sample . program . detectLanguage ( text , apiKey , callback ) ;
7879
@@ -103,7 +104,7 @@ describe('translate:translate', function () {
103104 var error = new Error ( 'error' ) ;
104105 var sample = getSample ( ) ;
105106 var callback = sinon . stub ( ) ;
106- sample . mocks . translate . getLanguages = sinon . stub ( ) . callsArgWith ( 0 , error ) ;
107+ sample . mocks . translate . getLanguages . yields ( error ) ;
107108
108109 sample . program . listLanguages ( apiKey , callback ) ;
109110
@@ -114,12 +115,43 @@ describe('translate:translate', function () {
114115 } ) ;
115116 } ) ;
116117
118+ describe ( 'listLanguageNames' , function ( ) {
119+ it ( 'should list languages' , function ( ) {
120+ var sample = getSample ( ) ;
121+ var callback = sinon . stub ( ) ;
122+
123+ sample . program . listLanguageNames ( target , apiKey , callback ) ;
124+
125+ assert ( sample . mocks . translate . getLanguages . calledOnce , 'method called once' ) ;
126+ assert . equal ( sample . mocks . translate . getLanguages . firstCall . args . length , 2 , 'method received 2 arguments' ) ;
127+ assert ( callback . calledOnce , 'callback called once' ) ;
128+ assert . equal ( callback . firstCall . args . length , 2 , 'callback received 2 arguments' ) ;
129+ assert . ifError ( callback . firstCall . args [ 0 ] , 'callback did not receive error' ) ;
130+ assert . strictEqual ( callback . firstCall . args [ 1 ] , sample . mocks . languages , 'callback received result' ) ;
131+ assert ( console . log . calledWith ( 'Found %d language(s)!' , sample . mocks . languages . length ) ) ;
132+ } ) ;
133+
134+ it ( 'should handle error' , function ( ) {
135+ var error = new Error ( 'error' ) ;
136+ var sample = getSample ( ) ;
137+ var callback = sinon . stub ( ) ;
138+ sample . mocks . translate . getLanguages . yields ( error ) ;
139+
140+ sample . program . listLanguageNames ( target , apiKey , callback ) ;
141+
142+ assert ( callback . calledOnce , 'callback called once' ) ;
143+ assert . equal ( callback . firstCall . args . length , 1 , 'callback received 1 argument' ) ;
144+ assert ( callback . firstCall . args [ 0 ] , 'callback received error' ) ;
145+ assert . equal ( callback . firstCall . args [ 0 ] . message , error . message , 'error has correct message' ) ;
146+ } ) ;
147+ } ) ;
148+
117149 describe ( 'translateText' , function ( ) {
118150 it ( 'should translate text' , function ( ) {
119151 var sample = getSample ( ) ;
120152 var callback = sinon . stub ( ) ;
121153 var options = {
122- text : text ,
154+ input : [ text ] ,
123155 to : 'ru' ,
124156 apiKey : apiKey
125157 } ;
@@ -128,7 +160,7 @@ describe('translate:translate', function () {
128160
129161 assert ( sample . mocks . translate . translate . calledOnce , 'method called once' ) ;
130162 assert . equal ( sample . mocks . translate . translate . firstCall . args . length , 3 , 'method received 3 arguments' ) ;
131- assert . equal ( sample . mocks . translate . translate . firstCall . args [ 0 ] , text , 'method received correct first argument' ) ;
163+ assert . deepEqual ( sample . mocks . translate . translate . firstCall . args [ 0 ] , [ text ] , 'method received correct first argument' ) ;
132164 assert . deepEqual ( sample . mocks . translate . translate . firstCall . args [ 1 ] , {
133165 to : 'ru' ,
134166 from : undefined
@@ -149,7 +181,7 @@ describe('translate:translate', function () {
149181 to : 'ru' ,
150182 apiKey : apiKey
151183 } ;
152- sample . mocks . translate . translate = sinon . stub ( ) . callsArgWith ( 2 , error ) ;
184+ sample . mocks . translate . translate . yields ( error ) ;
153185
154186 sample . program . translateText ( options , callback ) ;
155187
@@ -167,7 +199,7 @@ describe('translate:translate', function () {
167199 sinon . stub ( program , 'detectLanguage' ) ;
168200 program . main ( [ 'detect' , text , '-k' , apiKey ] ) ;
169201 assert . equal ( program . detectLanguage . calledOnce , true ) ;
170- assert . deepEqual ( program . detectLanguage . firstCall . args . slice ( 0 , - 1 ) , [ text , apiKey ] ) ;
202+ assert . deepEqual ( program . detectLanguage . firstCall . args . slice ( 0 , - 1 ) , [ [ text ] , apiKey ] ) ;
171203 } ) ;
172204
173205 it ( 'should call listLanguages' , function ( ) {
@@ -179,14 +211,23 @@ describe('translate:translate', function () {
179211 assert . deepEqual ( program . listLanguages . firstCall . args . slice ( 0 , - 1 ) , [ apiKey ] ) ;
180212 } ) ;
181213
214+ it ( 'should call listLanguageNames' , function ( ) {
215+ var program = getSample ( ) . program ;
216+
217+ sinon . stub ( program , 'listLanguageNames' ) ;
218+ program . main ( [ 'list' , target , '-k' , apiKey ] ) ;
219+ assert . equal ( program . listLanguageNames . calledOnce , true ) ;
220+ assert . deepEqual ( program . listLanguageNames . firstCall . args . slice ( 0 , - 1 ) , [ target , apiKey ] ) ;
221+ } ) ;
222+
182223 it ( 'should call translateText' , function ( ) {
183224 var program = getSample ( ) . program ;
184225
185226 sinon . stub ( program , 'translateText' ) ;
186227 program . main ( [ 'translate' , text , '-k' , apiKey , '-t' , 'ru' ] ) ;
187228 assert . equal ( program . translateText . calledOnce , true ) ;
188229 assert . deepEqual ( program . translateText . firstCall . args . slice ( 0 , - 1 ) , [ {
189- text : text ,
230+ input : [ text ] ,
190231 to : 'ru' ,
191232 from : undefined ,
192233 apiKey : apiKey
0 commit comments