import {initializeOrg} from 'sentry-test/initializeOrg';
import {render, screen} from 'sentry-test/reactTestingLibrary';
import OrganizationStore from 'sentry/stores/organizationStore';
import {PersistedStoreProvider} from 'sentry/stores/persistedStore';
import ProjectsStore from 'sentry/stores/projectsStore';
import Onboarding from 'sentry/views/onboarding';
describe('Onboarding', function () {
afterEach(function () {
MockApiClient.clearMockResponses();
});
it('renders the welcome page', function () {
const {router, routerContext} = initializeOrg({
router: {
params: {
step: 'welcome',
},
},
});
render(
,
{
context: routerContext,
}
);
expect(screen.getByLabelText('Start')).toBeInTheDocument();
expect(screen.getByLabelText('Invite Team')).toBeInTheDocument();
});
it('renders the select platform step', async () => {
const {organization, router, routerContext} = initializeOrg({
router: {
params: {
step: 'select-platform',
},
},
});
MockApiClient.addMockResponse({
url: `/organizations/${organization.slug}/client-state/`,
body: {},
});
OrganizationStore.onUpdate(organization);
render(
,
{
context: routerContext,
}
);
expect(
await screen.findByText('Select the platforms you want to monitor')
).toBeInTheDocument();
});
it('renders the setup docs step', async () => {
const projects = [
TestStubs.Project({
platform: 'javascript-react',
id: '4',
slug: 'javascript-reactslug',
}),
TestStubs.Project({platform: 'ruby', id: '5', slug: 'ruby-slug'}),
TestStubs.Project({
platform: 'javascript-nextjs',
id: '6',
slug: 'javascript-nextslug',
}),
];
const {organization, router, routerContext} = initializeOrg({
projects,
router: {
params: {
step: 'setup-docs',
},
},
});
MockApiClient.addMockResponse({
url: `/organizations/${organization.slug}/client-state/`,
body: {
onboarding: {
platformToProjectIdMap: {
'javascript-react': projects[0].slug,
ruby: projects[1].slug,
'javascript-nextjs': projects[2].slug,
},
selectedPlatforms: ['ruby', 'javascript-nextjs'],
},
},
});
MockApiClient.addMockResponse({
url: `/projects/${organization.slug}/ruby-slug/`,
body: {
firstEvent: false,
},
});
MockApiClient.addMockResponse({
url: `/projects/${organization.slug}/javascript-nextslug/docs/javascript-nextjs/`,
body: null,
});
MockApiClient.addMockResponse({
url: `/projects/${organization.slug}/ruby-slug/docs/ruby/`,
body: null,
});
MockApiClient.addMockResponse({
url: `/projects/${organization.slug}/ruby-slug/issues/`,
body: [],
});
ProjectsStore.loadInitialData(projects);
OrganizationStore.onUpdate(organization);
render(
,
{
context: routerContext,
}
);
expect(await screen.findAllByTestId('sidebar-error-indicator')).toHaveLength(2);
});
});