docbrown/app/javascript/article-form/__tests__/articleForm.test.jsx
Ali Spittel 52c60ce37e Feature/refactored onboarding (#3333)
* set up refactored onboarding

* create onboarding page

* add in first slide and change slide functionality

* fix test suite

* profile refactor

* profile refactor

* refactor to api

* add checkbox fields

* add checkbox fields

* remove puts

* add basic css

* add styling

* add redirect

* hide back and next at first and last slides

* test refactored onboarding

* test refactored onboarding

* remove article edits

* Fix schema

* Add deleted file back in

* Add default value for checked_t&c column

* Adjust HTML structure to keep nav buttons in place

* Fix ESLint issues on Onboarding.jsx file

* Handling for undefined or empty followedTags on getUserTags

* Fix codeclimate issues

* Fix codeclimate issues

* Fix more codeclimate issues

* Fix more codeclimate issues

* Update Onboarding snapshots

* Uncheck the CoC and T&C checkboxes on render

* Update snapshots

* Return false instead of raising error

* Update spec to use new onboarding

* Redirect to onboarding if haven't seen it yet

* Prevent redirect to onboarding from /signout_confirm

* Use assign_attributes instead of saving twice

* Move COC and T&C checkbox page to second slide

* Add 'go back to original page' functionality

* Reuse ready prototype logic

* Keep track of the last visited onboarding page

* Fix email subscription bug

* Fix overflow issue for tags page

* Remove height to prevent page container scrolling

* Check for CoC and T&C for displaying onboarding

* Add InstantClick redirect and preserve referrer in client

* Fix async update + check by using localStorage

* Turn off onboarding for tests

* Finalize design for onboarding

* Finalize design for onboarding

* Make bulk follows during onboarding

* Fix bulk follow test
2019-07-26 15:53:32 -04:00

72 lines
1.9 KiB
JavaScript

import { h, render as preactRender } from 'preact';
import render from 'preact-render-to-json';
import { shallow, deep } from 'preact-render-spy';
import { JSDOM } from 'jsdom';
import ArticleForm from '../articleForm';
import algoliasearch from '../elements/__mocks__/algoliasearch';
describe('<ArticleForm />', () => {
beforeEach(() => {
const doc = new JSDOM('<!doctype html><html><body></body></html>');
global.document = doc;
global.window = doc.defaultView;
global.document.body.createTextRange = function() {
return {
setEnd() {},
setStart() {},
getBoundingClientRect() {
return { right: 0 };
},
getClientRects() {
return {
length: 0,
left: 0,
right: 0,
};
},
};
};
global.document.body.innerHTML = "<div id='editor-help-guide'></div>";
global.window.algoliasearch = algoliasearch;
localStorage.clear();
localStorage.__STORE__ = {};
});
it('renders properly', () => {
const tree = render(getArticleForm());
expect(tree).toMatchSnapshot();
});
it('initally loads blank', () => {
const form = shallow(getArticleForm());
expect(form.state().bodyMarkdown).toBe('');
});
it('loads text from sessionstorage when available', () => {
localStorage.setItem(
'editor-v2-http://localhost/',
JSON.stringify({ bodyMarkdown: 'hello, world' }),
);
const form = shallow(getArticleForm());
expect(form.state().bodyMarkdown).toBe('hello, world');
});
it('resets the post on reset press', () => {
const form = shallow(getArticleForm());
form.find('.clear').simulate('click');
expect(form.state().bodyMarkdown).toBe('');
});
});
const getArticleForm = () => (
<ArticleForm
version="v2"
article={
'{ "id": null, "body_markdown": null, "cached_tag_list": null, "main_image": null, "published": false, "title": null }'
}
/>
);