mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-01-09 09:38:07 +08:00
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:
parent
c65425ab91
commit
36be4cd497
2 changed files with 22 additions and 14 deletions
|
@ -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
|
||||
|
|
19
internal_packages/search-bar/spec/search-bar-spec.cjsx
Normal file
19
internal_packages/search-bar/spec/search-bar-spec.cjsx
Normal 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]
|
Loading…
Reference in a new issue