diff --git a/packages/jaeger-ui/src/components/SearchTracePage/index.js b/packages/jaeger-ui/src/components/SearchTracePage/index.js index 5a709da09a..2875723a6f 100644 --- a/packages/jaeger-ui/src/components/SearchTracePage/index.js +++ b/packages/jaeger-ui/src/components/SearchTracePage/index.js @@ -30,7 +30,7 @@ import { fetchedState } from '../../constants'; import { sortTraces } from '../../model/search'; import getLastXformCacher from '../../utils/get-last-xform-cacher'; import prefixUrl from '../../utils/prefix-url'; -import { isEmbed } from '../../utils/embedded'; +import { isEmbed, VERSION_API } from '../../utils/embedded'; import './index.css'; import JaegerLogo from '../../img/jaeger-logo.svg'; @@ -61,7 +61,9 @@ export class SearchTracePageImpl extends Component { } goToTrace = traceID => { - const url = this.props.embed ? `/trace/${traceID}?embed` : `/trace/${traceID}`; + const url = this.props.embed + ? `/trace/${traceID}?embed=${VERSION_API}&fromSearch=${encodeURIComponent(this.getSearchURL())}` + : `/trace/${traceID}`; this.props.history.push(prefixUrl(url)); }; diff --git a/packages/jaeger-ui/src/components/SearchTracePage/index.test.js b/packages/jaeger-ui/src/components/SearchTracePage/index.test.js index fc212e9d51..ae55e8f774 100644 --- a/packages/jaeger-ui/src/components/SearchTracePage/index.test.js +++ b/packages/jaeger-ui/src/components/SearchTracePage/index.test.js @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -import queryString from 'query-string'; - jest.mock('redux-form', () => { function reduxForm() { return component => component; @@ -30,6 +28,7 @@ jest.mock('store'); /* eslint-disable import/first */ import React from 'react'; +import queryString from 'query-string'; import { shallow, mount } from 'enzyme'; import store from 'store'; @@ -40,6 +39,7 @@ import { fetchedState } from '../../constants'; import traceGenerator from '../../demo/trace-generators'; import { MOST_RECENT } from '../../model/order-by'; import transformTraceData from '../../model/transform-trace-data'; +import { VERSION_API } from '../../utils/embedded'; describe('', () => { let wrapper; @@ -84,11 +84,32 @@ describe('', () => { }); it('return the searchpath if call getSearchURL', () => { - const query = "end=1542906238737000&limit=20&lookback=1h&maxDuration&minDuration&service=productpage&start=1542902638737000" - wrapper = mount(); + const query = + 'end=1542906238737000&limit=20&lookback=1h&maxDuration&minDuration&service=productpage&start=1542902638737000'; + wrapper = mount(); expect(wrapper.instance().getSearchURL()).toBe(`/search?${queryString.stringify(query)}`); }); + it('Push to history the correct url when goToTrace', () => { + const query = + 'end=1542906238737000&limit=20&lookback=1h&maxDuration&minDuration&service=productpage&start=1542902638737000'; + const historyMock = { push: jest.fn() }; + const traceID = '15810714d6a27450'; + wrapper = mount(); + wrapper.instance().goToTrace(traceID); + expect(historyMock.push.mock.calls.length).toBe(1); + expect(historyMock.push.mock.calls[0][0]).toBe(`/trace/${traceID}`); + + // Embed Mode + wrapper.setProps({ embed: true }); + wrapper.instance().goToTrace(traceID); + expect(historyMock.push.mock.calls[1][0]).toBe( + `/trace/${traceID}?embed=${VERSION_API}&fromSearch=${encodeURIComponent( + wrapper.instance().getSearchURL() + )}` + ); + }); + it('shows a loading indicator if loading services', () => { wrapper.setProps({ loadingServices: true }); expect(wrapper.find(LoadingIndicator).length).toBe(1);