fix(search): can search with a colon character

Summary:
Fixes T1127

For now, colons are taken literally. This means you can't type scoped
searches. This will likely change when search gets re-designed

Test Plan:
SearchBar.cjsx got a test for this. The class needs more tests
edgehill --test

Reviewers: bengotow

Reviewed By: bengotow

Subscribers: mg

Maniphest Tasks: T1127

Differential Revision: https://review.inboxapp.com/D1490
This commit is contained in:
Evan Morikawa 2015-05-11 18:07:58 -07:00
parent c65425ab91
commit 36be4cd497
2 changed files with 22 additions and 14 deletions

View file

@ -5,7 +5,6 @@ classNames = require 'classnames'
SearchSuggestionStore = require './search-suggestion-store'
_ = require 'underscore-plus'
class SearchBar extends React.Component
@displayName = 'SearchBar'
@ -97,20 +96,11 @@ class SearchBar extends React.Component
if key == "all"
str += val
else
str += "#{key}:#{val}"
str += val
_stringToQuery: (str) =>
return [] unless str
# note: right now this only works if there's one term. In the future,
# we'll make this whole search input a tokenizing field
[a,b] = str.split(':')
term = {}
if b
term[a] = b
else
term["all"] = a
[term]
return [all: str]
_onValueChange: (event) =>
Actions.searchQueryChanged(@_stringToQuery(event.target.value))
@ -148,5 +138,4 @@ class SearchBar extends React.Component
suggestions: SearchSuggestionStore.suggestions()
committedQuery: SearchSuggestionStore.committedQuery()
module.exports = SearchBar
module.exports = SearchBar

View file

@ -0,0 +1,19 @@
React = require 'react'
ReactTestUtils = React.addons.TestUtils
{Actions} = require 'inbox-exports'
SearchBar = require '../lib/search-bar'
SearchSuggestionStore = require '../lib/search-suggestion-store.coffee'
describe 'SearchBar', ->
beforeEach ->
@searchBar = ReactTestUtils.renderIntoDocument(<SearchBar />)
input = ReactTestUtils.findRenderedDOMComponentWithTag(@searchBar, "input")
@input = React.findDOMNode(input)
it 'supports search queries with a colon character', ->
spyOn(Actions, "searchQueryChanged")
test = "::Hello: World::"
ReactTestUtils.Simulate.change @input, target: value: test
expect(Actions.searchQueryChanged).toHaveBeenCalledWith [all: test]