about summary refs log tree commit diff
path: root/spec
AgeCommit message (Collapse)Author
2017-11-16Merge tootsuite/master at 30237259367a0ef2b20908518b86bbeb358999b5Surinna Curtis
2017-11-16Add tests for Status#hidden? (#5719)ysksn
2017-11-15Merge pull request #212 from aschmitz/feat/mute-reblogsbeatrix
Allow hiding reblogs on a per-follow basis
2017-11-15Delegate some methods of User to @settings (#5706)ysksn
* Move some tests of User into Settings::ScopedSettings * Add a test for User@settings
2017-11-15Add a test for Tag#to_param (#5705)ysksn
2017-11-15Optional notification muting (#5087)Surinna Curtis
* Add a hide_notifications column to mutes * Add muting_notifications? and a notifications argument to mute! * block notifications in notify_service from hard muted accounts * Add specs for how mute! interacts with muting_notifications? * specs testing that hide_notifications in mutes actually hides notifications * Add support for muting notifications in MuteService * API support for muting notifications (and specs) * Less gross passing of notifications flag * Break out a separate mute modal with a hide-notifications checkbox. * Convert profile header mute to use mute modal * Satisfy eslint. * specs for MuteService notifications params * add trailing newlines to files for Pork :) * Put the label for the hide notifications checkbox in a label element. * Add a /api/v1/mutes/details route that just returns the array of mutes. * Define a serializer for /api/v1/mutes/details * Add more specs for the /api/v1/mutes/details endpoint * Expose whether a mute hides notifications in the api/v1/relationships endpoint * Show whether muted users' notifications are muted in account lists * Allow modifying the hide_notifications of a mute with the /api/v1/accounts/:id/mute endpoint * make the hide/unhide notifications buttons work * satisfy eslint * In probably dead code, replace a dispatch of muteAccount that was skipping the modal with launching the mute modal. * fix a missing import * add an explanatory comment to AccountInteractions * Refactor handling of default params for muting to make code cleaner * minor code style fixes oops * Fixed a typo that was breaking the account mute API endpoint * Apply white-space: nowrap to account relationships icons * Fix code style issues * Remove superfluous blank line * Rename /api/v1/mutes/details -> /api/v2/mutes * Don't serialize "account" in MuteSerializer Doing so is somewhat unnecessary since it's always the current user's account. * Fix wrong variable name in api/v2/mutes * Use Toggle in place of checkbox in the mute modal. * Make the Toggle in the mute modal look better * Code style changes in specs and removed an extra space * Code review suggestions from akihikodaki Also fixed a syntax error in tests for AccountInteractions. * Make AddHideNotificationsToMute Concurrent It's not clear how much this will benefit instances in practice, as the number of mutes tends to be pretty small, but this should prevent any blocking migrations nonetheless. * Fix up migration things * Remove /api/v2/mutes
2017-11-15Add tests for StreamEntry (#5687)ysksn
* Add tests for StreamEntry - `#object_type` - `#verb` - `#mentions` * Fix to test results instead of implementations
2017-11-14Add option to block direct messages from people you don't follow (#5669)Eugen Rochko
* Add option to block direct messages from people you don't follow Fix #5326 * If the DM responds to a toot by recipient, allow it through * i18n: Update Polish translation (for #5669) (#5673)
2017-11-14Add a test for SiteUpload#cache_key (#5685)ysksn
2017-11-14Refactor remote_follow_spec.rb (#5690)Yamagishi Kazutoshi
2017-11-14Add uniqueness to block email domains (#5692)Yamagishi Kazutoshi
2017-11-14Add tests for Setting (#5683)ysksn
2017-11-13Maintain case-insensitivity when merging multiple matchers (#213)David Yip
When given two regexps, Regexp.union preserves the options set (or not set) on each regex; this meant that none of the multiline (m), case-insensitivity (i), or extended syntax (x) options were set. Our regexps are written expecting the m, i, and x options were set on all of them, so we need to make sure that we preserve that behavior.
2017-11-13Add tests for SessionActivation (#5668)ysksn
* Fabricate SessionActivation not only user_id but user association. * Add tests for SessionActivation
2017-11-12Add tests for RemoteProfile (#5665)ysksn
2017-11-11Actually filter blocked reblogs from feedaschmitz
And even a relevant test. Whoops.
2017-11-10Per-user reblog hiding implementation/fixes/testsaschmitz
Note that this will only hide/show *future* reblogs by a user, and does nothing to remove/add reblogs that are already in the timeline. I don't think that's a particularly confusing behavior, and it's a lot easier to implement (similar to mutes, I believe).
2017-11-10Add tests for RemoteFollow (#5651)ysksn
* Add tests for RemoteFollow.initialize * Add tests for RemoteFollow#valid? * Add tests for RemoteFollow#subscribe_address_for
2017-11-09Add tests for Notification (#5640)ysksn
* Add tests for Notification#target_status * Add tests for Notification#browserable? * Add tests for Notification.reload_stale_associations!
2017-11-09Add and Remove tests for FollowRequest (#5622)ysksn
* Add a test for FollowRequest#authorize! * Remove tests There is no need to test ActiveModel::Validations::ClassMethods#validates. * Make an alias of destroy! as reject! Instead of defining the method, make an alias of destroy! as reject! because of reducing test.
2017-11-09Rewrite account_controller_spec (#5633)Nanamachi
* make accounts_controller_spec DRY * Add blocked user spec
2017-11-08Add tests for MediaAttachment (#5620)ysksn
- `#local?` - `#needs_redownload?` - `#to_param`
2017-11-08Add tests for CustomEmoji#local? and #object_type (#5621)ysksn
2017-11-06Implement tests for Account#refresh! (#5601)ysksn
2017-11-06Add test for Account#save_with_optional_media! (#5603)ysksn
There was a test when some of the properties are invalid, but none when all of them are valid.
2017-11-05Implement tests for Account#possibly_stale? (#5591)ysksn
2017-10-26Merge remote-tracking branch 'origin/master' into gs-masterDavid Yip
2017-10-26Fix Cocaine::ExitStatusError when upload small non-animated GIF (#5489)unarist
Looks like copied tempfile need to be flushed before further processing. This issue won't happen if the uploaded file has enough file size.
2017-10-25Merge pull request #179 from glitch-soc/keyword-mutebeatrix
Keyword muting
2017-10-25Merge remote-tracking branch 'STJrInuyasha/feature/direct-timeline' into ↵David Yip
gs-direct-timeline
2017-10-24Also filter notifications containing muted keywords.David Yip
2017-10-24Fix example description.David Yip
This example actually checks matches at the end of a string.
2017-10-22Added a timeline for Direct statusesMatthew Walsh
* Lists all Direct statuses you've sent and received * Displayed in Getting Started * Streaming server support for direct TL
2017-10-22Don't add \b to whole-word keywords that don't start with word characters.David Yip
Ditto for ending with \b. Consider muting the phrase "(hot take)". I stipulate it is reasonable to enter this with the default "match whole word" behavior. Under the old behavior, this would be encoded as \b\(hot\ take\)\b However, if \b is before the first character in the string and the first character in the string is not a word character, then the match will fail. Ditto for after. In our example, "(" is not a word character, so this will not match statuses containing "(hot take)", and that's a very surprising behavior. To address this, we only add leading and trailing \b to keywords that start or end with word characters.
2017-10-22keyword mutes: also check spoiler (CW) text and reblogged statuses.David Yip
2017-10-21Apply keyword mutes to reblogs.David Yip
2017-10-21Move KeywordMute into Glitch namespace.David Yip
There are two motivations for this: 1. It looks like we're going to add other features that require server-side storage (e.g. user notes). 2. Namespacing glitchsoc modifications is a good idea anyway: even if we do not end up doing (1), if upstream introduces a keyword-mute feature that also uses a "KeywordMute" model, we can avoid some merge conflicts this way and work on the more interesting task of choosing which implementation to use.
2017-10-21Allow keywords to match either substrings or whole words.David Yip
Word-boundary matching only works as intended in English and languages that use similar word-breaking characters; it doesn't work so well in (say) Japanese, Chinese, or Thai. It's unacceptable to have a feature that doesn't work as intended for some languages. (Moreso especially considering that it's likely that the largest contingent on the Mastodon bit of the fediverse speaks Japanese.) There are rules specified in Unicode TR29[1] for word-breaking across all languages supported by Unicode, but the rules deliberately do not cover all cases. In fact, TR29 states For example, reliable detection of word boundaries in languages such as Thai, Lao, Chinese, or Japanese requires the use of dictionary lookup, analogous to English hyphenation. So we aren't going to be able to make word detection work with regexes within Mastodon (or glitchsoc). However, for a first pass (even if it's kind of punting) we can allow the user to choose whether they want word or substring detection and warn about the limitations of this implementation in, say, docs. [1]: https://unicode.org/reports/tr29/ https://web.archive.org/web/20171001005125/https://unicode.org/reports/tr29/
2017-10-21Set up /settings/keyword_mutes. #164.David Yip
This should eventually be accessible via the API and the web frontend, but I find it easier to set up an editing interface using Rails templates and the like. We can always take it out if it turns out we don't need it.
2017-10-21Fix case-insensitive match scenario; test some word ornamentation. #164.David Yip
2017-10-21Rework KeywordMute interface to use a matcher object; spec out matcher. #164.David Yip
A matcher object that builds a match from KeywordMute data and runs it over text is, in my view, one of the easier ways to write examples for this sort of thing.
2017-10-21Spec out KeywordMute interface. #164.David Yip
2017-10-21Add KeywordMute model.David Yip
Gist of the proposed keyword mute implementation: Keyword mutes are represented server-side as one keyword per record. For each account, there exists a keyword regex that is generated as one big alternation of all keywords. This regex is cached (in Redis, I guess) so we can quickly get it when filtering in FeedManager.
2017-10-20hide mentions of muted accounts (in home col) (#190)beatrix
* hide mentions of muted accounts (in home col) also cleans up some old crap * add test
2017-10-18Merge tag 'v2.0.0' into gs-masterDavid Yip
2017-10-17Clean up reblog tracking keys, related improvements (#5428)aschmitz
* Clean up reblog-tracking sets from FeedManager Builds on #5419, with a few minor optimizations and cleanup of sets after they are no longer needed. * Update tests, fix multiply-reblogged case Previously, we would have lost the fact that a given status was reblogged if the displayed reblog of it was removed, now we don't. Also added tests to make sure FeedManager#trim cleans up our reblog tracking keys, fixed up FeedCleanupScheduler to use the right loop, and fixed the test for it.
2017-10-16Merge remote-tracking branch 'upstream/master' into upstream-merge-againOndřej Hruška
2017-10-16Keep references to all reblogs of a status on home feed (#5419)Eugen Rochko
* Keep references to all reblogs of a status on home feed When inserting reblog: Add to set of reblogs of this status on the feed, if original status was present in the feed, add it to that set as well. When removing a reblog: Remove it from that set. Take random remaining item from the set. If one exists, re-insert it into feed, otherwise do not re-insert anything. Fix #4210 * When original is removed, toss out reblog references
2017-10-16Merge remote-tracking branch 'upstream/master' into gs-masterDavid Yip
2017-10-16Fix un-reblogged status being at wrong position in the home timeline (#5418)unarist
We've changed un-reblogging behavior when we implement Snowflake, to insert un-reblogged status at the position reblogging status existed. However, our API expects home timeline is ordered by status ids, and max_id/since_id filters by zset score. Due to this, un-reblogged status appears as a last item of result set, and timeline expansion may skips many statuses. So this reverts that change...reblogged status inserted at corresponding position to its id.