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.
| # | 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 |
| Description | Between Files 1 and 2 |
|
|---|---|---|
| Text Blocks | Lines | |
| Unchanged | 3 | 456 |
| Changed | 2 | 4 |
| Inserted | 0 | 0 |
| Removed | 0 | 0 |
| 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 |
No regular expressions were active.
| 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 | }); |
Araxis Merge (but not the data content of this report) is Copyright © 1993-2016 Araxis Ltd (www.araxis.com). All rights reserved.