Browse Source

Tests fixed and login screen improved.

pull/65/head
Sebastian Stehle 9 years ago
parent
commit
3de6af776c
  1. 3
      src/Squidex/app/shared/guards/resolve-user.guard.spec.ts
  2. 50
      src/Squidex/app/shared/services/users.service.spec.ts
  3. 2
      src/Squidex/app/shared/services/users.service.ts
  4. 6
      src/Squidex/app/shell/pages/home/home-page.component.html
  5. 21
      src/Squidex/app/shell/pages/home/home-page.component.scss
  6. 1
      src/Squidex/app/theme/_forms.scss
  7. 2
      src/Squidex/app/theme/_static.scss
  8. BIN
      src/Squidex/wwwroot/images/logo-half.png

3
src/Squidex/app/shared/guards/resolve-user.guard.spec.ts

@ -15,6 +15,7 @@ import { RouterMockup } from './router-mockup';
describe('ResolveUserGuard', () => { describe('ResolveUserGuard', () => {
const route = { const route = {
params: {},
parent: { parent: {
params: { params: {
userId: 'my-user' userId: 'my-user'
@ -31,7 +32,7 @@ describe('ResolveUserGuard', () => {
it('should throw if route does not contain parameter', () => { it('should throw if route does not contain parameter', () => {
const guard = new ResolveUserGuard(usersService.object, <any>new RouterMockup()); const guard = new ResolveUserGuard(usersService.object, <any>new RouterMockup());
expect(() => guard.resolve(<any>{ params: {} }, <any>{})).toThrow('Route must contain app and user name.'); expect(() => guard.resolve(<any>{ params: {} }, <any>{})).toThrow('Route must contain user id.');
}); });
it('should navigate to 404 page if user is not found', (done) => { it('should navigate to 404 page if user is not found', (done) => {

50
src/Squidex/app/shared/services/users.service.spec.ts

@ -12,8 +12,11 @@ import { It, IMock, Mock, Times } from 'typemoq';
import { import {
ApiUrlConfig, ApiUrlConfig,
AuthService, AuthService,
UserManagementService, CreateUserDto,
UpdateUserDto,
UserCreatedDto,
UserDto, UserDto,
UserManagementService,
UsersDto, UsersDto,
UsersService UsersService
} from './../'; } from './../';
@ -236,7 +239,7 @@ describe('UserManagementService', () => {
}); });
it('should make get request to get single user', () => { it('should make get request to get single user', () => {
authService.setup(x => x.authGet('http://service/p/api/users/123')) authService.setup(x => x.authGet('http://service/p/api/user-management/123'))
.returns(() => Observable.of( .returns(() => Observable.of(
new Response( new Response(
new ResponseOptions({ new ResponseOptions({
@ -263,6 +266,49 @@ describe('UserManagementService', () => {
authService.verifyAll(); authService.verifyAll();
}); });
it('should make post request to create user', () => {
const dto = new CreateUserDto('mail@squidex.io', 'Squidex User', 'password');
authService.setup(x => x.authPost('http://service/p/api/user-management', It.isAny()))
.returns(() => Observable.of(
new Response(
new ResponseOptions({
body: {
id: '123',
pictureUrl: 'path/to/image1'
}
})
)
))
.verifiable(Times.once());
let user: UserCreatedDto | null = null;
userManagementService.postUser(dto).subscribe(result => {
user = result;
}).unsubscribe();
expect(user).toEqual(new UserCreatedDto('123', 'path/to/image1'));
authService.verifyAll();
});
it('should make put request to update user', () => {
const dto = new UpdateUserDto('mail@squidex.io', 'Squidex User', 'password');
authService.setup(x => x.authPut('http://service/p/api/user-management/123', It.isAny()))
.returns(() => Observable.of(
new Response(
new ResponseOptions()
)
))
.verifiable(Times.once());
userManagementService.putUser('123', dto);
authService.verifyAll();
});
it('should make put request to lock user', () => { it('should make put request to lock user', () => {
authService.setup(x => x.authPut('http://service/p/api/user-management/123/lock', It.isAny())) authService.setup(x => x.authPut('http://service/p/api/user-management/123/lock', It.isAny()))
.returns(() => Observable.of( .returns(() => Observable.of(

2
src/Squidex/app/shared/services/users.service.ts

@ -150,7 +150,7 @@ export class UserManagementService {
} }
public postUser(dto: CreateUserDto): Observable<UserDto> { public postUser(dto: CreateUserDto): Observable<UserDto> {
const url = this.apiUrl.buildUrl(`api/user-management/`); const url = this.apiUrl.buildUrl('api/user-management');
return this.authService.authPost(url, dto) return this.authService.authPost(url, dto)
.map(response => response.json()) .map(response => response.json())

6
src/Squidex/app/shell/pages/home/home-page.component.html

@ -1,11 +1,11 @@
<div class="login-area"> <div class="login-area">
<div class="card"> <div class="card">
<div class="card-block text-center"> <div class="card-block text-center">
<img class="login-icon" src="/images/login-icon.png" /> <img class="login-icon" src="/images/logo-half.png" />
<div> <div>
<button class="btn login-button" (click)="login()"> <button class="btn btn-primary login-button" (click)="login()">
<i class="icon-google"></i> <span class="login-button-text">Continue with Google</span> Login to Squidex
</button> </button>
</div> </div>
</div> </div>

21
src/Squidex/app/shell/pages/home/home-page.component.scss

@ -2,8 +2,6 @@
@import '_vars'; @import '_vars';
$color-footer: #f7f8fa; $color-footer: #f7f8fa;
$color-google: #d34736;
$color-google-dark: #af2c1a;
.card-footer { .card-footer {
background: $color-footer; background: $color-footer;
@ -26,14 +24,6 @@ $color-google-dark: #af2c1a;
font-size: 1.4rem; font-size: 1.4rem;
} }
.icon-google {
color: $color-google-dark;
font-size: 1.4rem;
font-weight: normal;
margin-right: .5rem;
vertical-align: middle;
}
.logo { .logo {
height: 1.4rem; height: 1.4rem;
margin-top: 1rem; margin-top: 1rem;
@ -50,23 +40,14 @@ $color-google-dark: #af2c1a;
&-button { &-button {
& { & {
@include border-radius(1.5rem); @include border-radius(1.5rem);
color: $color-dark-foreground;
cursor: pointer; cursor: pointer;
border: 0;
margin-top: 4rem; margin-top: 4rem;
height: 3rem; height: 3rem;
padding-left: 1.4rem; padding-left: 1.4rem;
padding-right: 1.4rem; padding-right: 1.4rem;
background: $color-google;
text-transform: uppercase; text-transform: uppercase;
} }
&:hover {
background: darken($color-google, 5%);
}
&:focus {
@include box-shadow-none;
}
} }
&-icon { &-icon {

1
src/Squidex/app/theme/_forms.scss

@ -52,6 +52,7 @@
input, input,
select { select {
&.form-control { &.form-control {
@include placeholder-color($color-empty);
padding-top: 0; padding-top: 0;
padding-bottom: 0; padding-bottom: 0;
height: calc(2.5rem - 2px); height: calc(2.5rem - 2px);

2
src/Squidex/app/theme/_static.scss

@ -35,7 +35,7 @@ noscript {
} }
&-logo { &-logo {
@include fixed(1rem, auto, auto, 1rem); @include absolute(1rem, auto, auto, 1rem);
} }
&-password-signup { &-password-signup {

BIN
src/Squidex/wwwroot/images/logo-half.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Loading…
Cancel
Save