11describe ( "A Reader Monad" , function ( ) {
22
3- var config1 = {
4- url : "http://test1.com" ,
5- port : 8080 ,
6- key : "s3cr3t"
7- }
8- var config2 = {
9- url : "http://test2.com" ,
10- port : 8081
11- }
12- var connect = function ( endpoint , config ) {
13- return "POST " + config . url + ":" + config . port + "/" + endpoint
14- } . reader ( )
15-
16-
17- it ( "must inject config with run()" , function ( ) {
18- expect ( connect ( "user" ) . run ( config1 ) ) . toBe ( "POST http://test1.com:8080/user" )
19- expect ( connect ( "session" ) . run ( config2 ) ) . toBe ( "POST http://test2.com:8081/session" )
3+ var config1 = {
4+ url : "http://test1.com" ,
5+ port : 8080 ,
6+ key : "s3cr3t"
7+ }
8+ var config2 = {
9+ url : "http://test2.com" ,
10+ port : 8081
11+ }
12+ var connect = function ( endpoint , config ) {
13+ return "POST " + config . url + ":" + config . port + "/" + endpoint
14+ } . reader ( )
15+
16+ var format = function ( url ) {
17+ return "!" + url + "!"
18+ } . reader ( )
19+
20+ it ( "must inject config with run()" , function ( ) {
21+ expect ( connect ( "user" ) . run ( config1 ) ) . toBe ( "POST http://test1.com:8080/user" )
22+ expect ( connect ( "session" ) . run ( config2 ) ) . toBe ( "POST http://test2.com:8081/session" )
23+ } )
24+
25+ it ( "must be mappable" , function ( ) {
26+ var reader = connect ( "session" ) . map ( function ( s ) {
27+ return s + "?secure=true"
2028 } )
29+ expect ( reader . run ( config1 ) ) . toBe ( "POST http://test1.com:8080/session?secure=true" )
2130
22- it ( "must be mappable" , function ( ) {
23- var reader = connect ( "session" ) . map ( function ( s ) { return s + "?secure=true" } )
24- expect ( reader . run ( config1 ) ) . toBe ( "POST http://test1.com:8080/session?secure=true" )
31+ } )
2532
26- } )
27-
28- it ( "must be flatMappable" , function ( ) {
29- var reader = connect ( "something" ) . flatMap (
30- function ( connectionString , config ) {
31- return connectionString + "?secretKey=" + config . key
32- } . reader ( ) )
33- expect ( reader . run ( config1 ) ) . toBe ( "POST http://test1.com:8080/something?secretKey=s3cr3t" )
34- } )
33+ it ( "must be flatMappable" , function ( ) {
34+ var reader = connect ( "something" ) . flatMap (
35+ function ( connectionString , config ) {
36+ return connectionString + "?secretKey=" + config . key
37+ } . reader ( ) )
38+ expect ( reader . run ( config1 ) ) . toBe ( "POST http://test1.com:8080/something?secretKey=s3cr3t" )
39+ } )
3540
36- it ( "must be applicable" , function ( ) {
37- var reader = connect ( "something" ) . ap ( Reader ( function ( config ) {
38- return function ( c ) {
39- return "**" + c + "**"
40- }
41+ it ( "must be applicable" , function ( ) {
42+ var reader = connect ( "something" ) . ap ( Reader ( function ( config ) {
43+ return function ( c ) {
44+ return "**" + c + "**"
45+ }
4146
42- } ) )
43- expect ( reader . run ( config1 ) ) . toBe ( "**POST http://test1.com:8080/something**" )
47+ } ) )
48+ expect ( reader . run ( config1 ) ) . toBe ( "**POST http://test1.com:8080/something**" )
4449
45- } )
50+ } )
4651
4752} )
0 commit comments