63. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 10/4/2017 8:04:35 AM Central Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

63.1 Files compared

# Location File Last Modified
1 rdk.zip\rdk\product\production\rdk\src\resources\patient-record\search suggest-search-spec.js Mon Aug 21 12:51:00 2017 UTC
2 rdk.zip\rdk\product\production\rdk\src\resources\patient-record\search suggest-search-spec.js Tue Oct 3 18:18:12 2017 UTC

63.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 3 456
Changed 2 4
Inserted 0 0
Removed 0 0

63.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

63.4 Active regular expressions

No regular expressions were active.

63.5 Comparison detail

  1   'use stric t';
  2  
  3   var _ = re quire('lod ash');
  4   var nock =  require(' nock');
  5   var bunyan  = require ('bunyan') ;
  6   var solrCl ientLib =  require('s olr-client ');
  7  
  8   var sugges tClient =  require('. /suggest-s earch');
  9  
  10   var logger  = bunyan. createLogg er({
  11       name:  'suggest-s earch-spec '
  12   });
  13  
  14   // comment  this out  to see log ging
  15   logger = s inon.stub( logger);
  16  
  17   var SOLR_A DDR = 'sol rserver.co m';
  18   var SOLR_P ORT =  PORT ;
  19   var SOLR_C ORE = 'vpr ';
  20   var SOLR_P ATH = '/so lr';
  21   var SOLR_B ASE_URL =  'http://'  + SOLR_ADD R + ':' +  SOLR_PORT;  // made u p value fo r mocking
  22  
  23   var SOLR_C LIENT_OPTI ONS = {
  24       'host' : SOLR_ADD R,
  25       'port' : SOLR_POR T,
  26       'core' : SOLR_COR E,
  27       'path' : SOLR_PAT H
  28   };
  29  
  30  
  31   /********* ********** ********** ********** ********** ********** ********** ********** /
  32   /*      Fu nctions re turning Ob jects to t o make the m safe for  modificat ion      * /
  33   /********* ********** ********** ********** ********** ********** ********** ********** /
  34  
  35   function c reateDefau ltRequest( ) {
  36       // dis able ontol ogy
  37       return  {
  38           so lrTestClie nt: solrCl ientLib.cr eateClient (SOLR_CLIE NT_OPTIONS ),
  39           lo gger: logg er,
  40           ap p: {
  41                config:  {
  42                    onto logySugges t: {
  43                         enabled: f alse,
  44                         baseUrl: ' https://br owser-aws- 1.ihtsdoto ols.org',
  45                         url: '/api /snomed',
  46                         database:  'us-editio n',
  47                         version: ' v20150901'
  48                    },
  49                    solr Client: {
  50                         core: SOLR _CORE,
  51                          zooKeeperC onnection:  ' IP               '
  52                    },
  53                }
  54           },
  55           qu ery: {
  56                pid: 'AA AA',
  57                query: ' pencollin'
  58           }
  59       };
  60   }
  61  
  62   function c reateDefau ltSolrSugg estRespons e() {
  63       return  {
  64           re sponseHead er: {
  65                status:  0,
  66                QTime: 9
  67           },
  68           su ggest: {
  69                freetext _suggester : {
  70                    penc ollin: {
  71                         numFound:  0,
  72                         suggestion s: []
  73                    }
  74                },
  75                phrase_s uggester:  {
  76                    penc ollin: {
  77                         numFound:  0,
  78                         suggestion s: []
  79                    }
  80                }
  81           },
  82           sp ellcheck:  {
  83                suggesti ons: [
  84                    'pen collin', {
  85                         numFound:  5,
  86                         startOffse t: 0,
  87                         endOffset:  9,
  88                         origFreq:  0,
  89                         suggestion : [{
  90                             word:  'penicilli n',
  91                             freq:  -1
  92                         }, {
  93                             word:  'penicilli ns',
  94                             freq:  -1
  95                         }, {
  96                             word:  'hemicolli n',
  97                             freq:  -1
  98                         }, {
  99                             word:  'penicilli nic',
  100                             freq:  -1
  101                         }, {
  102                             word:  'tenuicoll is',
  103                             freq:  -1
  104                         }]
  105                    }
  106                ],
  107                correctl ySpelled:  false,
  108                collatio ns: [
  109                    'col lation',
  110                    'pen icillin'
  111                ]
  112           }
  113       };
  114   }
  115  
  116   /********* ********** ********** ********** ********** ********** ********** ********** /
  117   /*                                                                                    * /
  118   /********* ********** ********** ********** ********** ********** ********** ********** /
  119  
  120   describe(' suggest-se arch', fun ction() {
  121       var sp ies = {};
  122       var mo ckResponse  = null;
  123       var fe tchDone =  false;
  124  
  125       var af terFetchDo neDo = fun ction(call back) {
  126           if  (!fetchDo ne) {
  127                return s etTimeout( afterFetch DoneDo, 0,  callback) ;
  128           }
  129  
  130           re turn setTi meout(call back);
  131       };
  132  
  133       before Each(funct ion() {
  134           fe tchDone =  false;
  135  
  136           va r rdkSendS py = sinon .spy(funct ion() {
  137                fetchDon e = true;
  138           }) ;
  139  
  140           mo ckResponse  = {
  141                rdkSend:  rdkSendSp y,
  142                status:  function()  {
  143                    retu rn {
  144                         rdkSend: r dkSendSpy
  145                    };
  146                }
  147           };
  148  
  149           sp ies.rdkSen d = rdkSen dSpy;
  150  
  151           //  Reset the  nock mock ing--other wise the t ests on fa ilure cond itions wil l
  152           //  erroneous ly succeed  due to no ck throwin g err for  unexpected  calls.
  153           no ck.cleanAl l();
  154       });
  155  
  156       it('te sts retrie ve suggest ions (happ y path)',  function(d one) {
  157           no ck(SOLR_BA SE_URL)
  158                .get('/s olr/vpr/te rms?qt=%2F terms&term s.fl=kind& terms.sort =count&ter ms.regex=. *pencollin .*&terms.r egex.flag= case_insen sitive&req uestId=&wt =json')
  159                .reply(2 00, {});
  160           no ck(SOLR_BA SE_URL)
  161                .get('/s olr/vpr/te rms?qt=%2F terms&term s.fl=med_d rug_class_ name&terms .sort=coun t&terms.re gex=.*penc ollin.*&te rms.regex. flag=case_ insensitiv e&requestI d=&wt=json ')
  162                .reply(2 00, {});
  163           no ck(SOLR_BA SE_URL)
  164                .get('/s olr/vpr/su ggest?q=pe ncollin&re questId=&w t=json')
  165                .reply(2 00, create DefaultSol rSuggestRe sponse());
  166           no ck(SOLR_BA SE_URL)
  167                .get('/s olr/vpr/se lect?q=pen collin&row s=0&facet= true&facet .pivot=med _drug_clas s_name%2Cq ualified_n ame&facet. limit=5&re questId=&w t=json')
  168                .reply(2 00, {});
  169  
  170  
  171           su ggestClien t.suggestS earch(crea teDefaultR equest(),  mockRespon se);
  172  
  173           af terFetchDo neDo(funct ion() {
  174                expect(s pies.rdkSe nd.called) .to.be.tru e();
  175                expect(s pies.rdkSe nd.calledO nce).to.be .true();
  176  
  177                var sugg estRespons e = spies. rdkSend.ar gs[0][0];
  178  
  179                expect(_ .has(sugge stResponse , 'data')) .to.be.tru e();
  180                expect(_ .get(sugge stResponse , 'data.it ems.length ')).to.eql (6);
  181  
  182                // Check  the first  and secon d record t o ensure t hey are st ructured c orrectly
  183                var item s = sugges tResponse. data.items ;
  184                expect(_ .get(items , ['0', 'd isplay'])) .to.not.be .null();
  185                expect(_ .get(items , ['0', 'q uery'])).t o.not.be.n ull();
  186                expect(_ .get(items , ['0', 't extSearchT erm'])).to .not.be.nu ll();
  187  
  188                expect(_ .get(items , ['1', 'd isplay'])) .to.not.be .null();
  189                expect(_ .get(items , ['1', 'q uery'])).t o.not.be.n ull();
  190                expect(_ .get(items , ['1', 't extSearchT erm'])).to .not.be.nu ll();
  191                expect(_ .get(items , ['1', 'c ategory']) ).to.not.b e.null();
  192  
  193                done();
  194           }) ;
  195       });
  196  
  197  
  198       it('te sts DE3181  fix - get s suggests  for lower case value  of the qu ery', func tion(done)  {
  199           no ck(SOLR_BA SE_URL)
  200                .get('/s olr/vpr/te rms?qt=%2F terms&term s.fl=kind& terms.sort =count&ter ms.regex=. *Pencollin .*&terms.r egex.flag= case_insen sitive&req uestId=&wt =json')
  201                .reply(2 00, {});
  202           no ck(SOLR_BA SE_URL)
  203                .get('/s olr/vpr/te rms?qt=%2F terms&term s.fl=med_d rug_class_ name&terms .sort=coun t&terms.re gex=.*Penc ollin.*&te rms.regex. flag=case_ insensitiv e&requestI d=&wt=json ')
  204                .reply(2 00, {});
  205  
  206           //  query is  still spec ified with  lower cas e version  of 'Pencol lin'
  207           no ck(SOLR_BA SE_URL)
  208                .get('/s olr/vpr/su ggest?q=pe ncollin&re questId=&w t=json')
  209                .reply(2 00, create DefaultSol rSuggestRe sponse());
  210           no ck(SOLR_BA SE_URL)
  211                .get('/s olr/vpr/se lect?q=Pen collin&row s=0&facet= true&facet .pivot=med _drug_clas s_name%2Cq ualified_n ame&facet. limit=5&re questId=&w t=json')
  212                .reply(2 00, {});
  213  
  214  
  215           va r request  = createDe faultReque st();
  216           re quest.quer y.query =  'Pencollin '; // use  capitalize d version
  217           su ggestClien t.suggestS earch(requ est, mockR esponse);
  218  
  219           af terFetchDo neDo(funct ion() {
  220                expect(s pies.rdkSe nd.called) .to.be.tru e();
  221                expect(s pies.rdkSe nd.calledO nce).to.be .true();
  222  
  223                var sugg estRespons e = spies. rdkSend.ar gs[0][0];
  224  
  225                expect(_ .get(sugge stResponse , 'data.it ems.length ')).to.eql (6);
  226  
  227                done();
  228           }) ;
  229       });
  230   });