Skip to content

Commit

Permalink
feat: add SignUp Composition
Browse files Browse the repository at this point in the history
  • Loading branch information
rmanguinho committed May 20, 2020
1 parent ff4ec8b commit 9160691
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 7 deletions.
15 changes: 15 additions & 0 deletions src/main/factories/pages/signup/signup-factory.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import React from 'react'
import { makeLocalSaveAccessToken } from '@/main/factories/usecases/save-access-token/local-save-access-token-factory'
import { SignUp } from '@/presentation/pages'
import { makeSignUpValidation } from './signup-validation-factory'
import { makeRemoteAddAccount } from '../../usecases/add-account/remote-add-account-factory'

export const makeSignUp: React.FC = () => {
return (
<SignUp
addAccount={makeRemoteAddAccount()}
validation={makeSignUpValidation()}
saveAccessToken={makeLocalSaveAccessToken()}
/>
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ describe('SignUpValidationFactory', () => {
...Builder.field('name').required().min(5).build(),
...Builder.field('email').required().email().build(),
...Builder.field('password').required().min(5).build(),
...Builder.field('passwordConfirmation').required().min(5).build()
...Builder.field('passwordConfirmation').required().sameAs('password').build()
]))
})
})
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ export const makeSignUpValidation = (): ValidationComposite => {
...Builder.field('name').required().min(5).build(),
...Builder.field('email').required().email().build(),
...Builder.field('password').required().min(5).build(),
...Builder.field('passwordConfirmation').required().min(5).build()
...Builder.field('passwordConfirmation').required().sameAs('password').build()
])
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { makeApiUrl } from '@/main/factories/http/api-url-factory'
import { makeAxiosHttpClient } from '@/main/factories/http/axios-http-client-factory'
import { AddAccount } from '@/domain/usecases'
import { RemoteAddAccount } from '@/data/usecases/add-account/remote-add-account'

export const makeRemoteAddAccount = (): AddAccount => {
return new RemoteAddAccount(makeApiUrl('/signup'), makeAxiosHttpClient())
}
2 changes: 2 additions & 0 deletions src/main/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@ import ReactDOM from 'react-dom'
import { Router } from '@/presentation/components'
import '@/presentation/styles/global.scss'
import { makeLogin } from './factories/pages/login/login-factory'
import { makeSignUp } from './factories/pages/signup/signup-factory'

ReactDOM.render(
<Router
makeLogin={makeLogin}
makeSignUp={makeSignUp}
/>,
document.getElementById('main')
)
10 changes: 5 additions & 5 deletions src/presentation/components/router/router.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import React from 'react'
import { BrowserRouter, Switch, Route } from 'react-router-dom'
import { SignUp } from '@/presentation/pages'

type Props = {
type Factory = {
makeLogin: React.FC
makeSignUp: React.FC
}

const Router: React.FC<Props> = ({ makeLogin }: Props) => {
const Router: React.FC<Factory> = (factory: Factory) => {
return (
<BrowserRouter>
<Switch>
<Route path="/login" exact component={makeLogin} />
<Route path="/signup" exact component={SignUp} />
<Route path="/login" exact component={factory.makeLogin} />
<Route path="/signup" exact component={factory.makeSignUp} />
</Switch>
</BrowserRouter>
)
Expand Down

0 comments on commit 9160691

Please sign in to comment.