Skip to content

Commit

Permalink
[Issue-25962] SEO improvements use a hand cursor for edit and preview…
Browse files Browse the repository at this point in the history
… buttons (#26473)

* Merging with master

* Merging with master

* Merging with master

* #25959 Adding image broken

* Merging with master

* #25959 Css fixes'

* Merging with master

* Merging with master

* #25959 fix image not found

* #25959 fix image not found

* Adding meta tags service

* PR feedback

* Adding refactor

* Adding refactor

* Adding more tests for validate the test scenarios

* Adding favicon validation

* #25962 cursor pointer

* Refactor service

* Refactor service

* Adding refactor service

* Fixing tests
  • Loading branch information
manuelrojas authored and dsolistorres committed Nov 6, 2023
1 parent d959fa7 commit c5e41bb
Show file tree
Hide file tree
Showing 11 changed files with 952 additions and 358 deletions.
Expand Up @@ -102,6 +102,7 @@ import { DotPageStateService } from './services/dot-page-state/dot-page-state.se
import { DotDOMHtmlUtilService } from './services/html/dot-dom-html-util.service';
import { DotDragDropAPIHtmlService } from './services/html/dot-drag-drop-api-html.service';
import { DotEditContentToolbarHtmlService } from './services/html/dot-edit-content-toolbar-html.service';
import { DotSeoMetaTagsUtilService } from './services/html/dot-seo-meta-tags-util.service';
import { DotSeoMetaTagsService } from './services/html/dot-seo-meta-tags.service';

import { DotEditPageInfoModule } from '../components/dot-edit-page-info/dot-edit-page-info.module';
Expand Down Expand Up @@ -297,6 +298,7 @@ describe('DotEditContentComponent', () => {
DotFavoritePageService,
DotExperimentsService,
DotSeoMetaTagsService,
DotSeoMetaTagsUtilService,
{
provide: LoginService,
useClass: LoginServiceMock
Expand Down
Expand Up @@ -40,6 +40,7 @@ import { DotEditContentHtmlService } from './services/dot-edit-content-html/dot-
import { DotDOMHtmlUtilService } from './services/html/dot-dom-html-util.service';
import { DotDragDropAPIHtmlService } from './services/html/dot-drag-drop-api-html.service';
import { DotEditContentToolbarHtmlService } from './services/html/dot-edit-content-toolbar-html.service';
import { DotSeoMetaTagsUtilService } from './services/html/dot-seo-meta-tags-util.service';
import { DotSeoMetaTagsService } from './services/html/dot-seo-meta-tags.service';

import { DotEditPageToolbarSeoComponent } from '../seo/components/dot-edit-page-toolbar-seo/dot-edit-page-toolbar-seo.component';
Expand Down Expand Up @@ -97,7 +98,8 @@ const routes: Routes = [
DotLicenseService,
DialogService,
DotCopyContentModalService,
DotSeoMetaTagsService
DotSeoMetaTagsService,
DotSeoMetaTagsUtilService
]
})
export class DotEditContentModule {}
Expand Up @@ -49,6 +49,7 @@ import { DotCopyContentModalService } from '../dot-copy-content-modal/dot-copy-c
import { DotDOMHtmlUtilService } from '../html/dot-dom-html-util.service';
import { DotDragDropAPIHtmlService } from '../html/dot-drag-drop-api-html.service';
import { DotEditContentToolbarHtmlService } from '../html/dot-edit-content-toolbar-html.service';
import { DotSeoMetaTagsUtilService } from '../html/dot-seo-meta-tags-util.service';
import { DotSeoMetaTagsService } from '../html/dot-seo-meta-tags.service';
import { getEditPageCss } from '../html/libraries/iframe-edit-mode.css';

Expand Down Expand Up @@ -124,7 +125,8 @@ export class DotEditContentHtmlService {
private dotCopyContentModalService: DotCopyContentModalService,
private dotCopyContentService: DotCopyContentService,
private dotLoadingIndicatorService: DotLoadingIndicatorService,
private dotSeoMetaTagsService: DotSeoMetaTagsService
private dotSeoMetaTagsService: DotSeoMetaTagsService,
private dotSeoMetaTagsUtilService: DotSeoMetaTagsUtilService
) {
this.contentletEvents$.subscribe(
(
Expand Down Expand Up @@ -442,7 +444,7 @@ export class DotEditContentHtmlService {
getMetaTags(): SeoMetaTags {
const pageDocument = this.getEditPageDocument();

return this.dotSeoMetaTagsService.getMetaTags(pageDocument);
return this.dotSeoMetaTagsUtilService.getMetaTags(pageDocument);
}

private setMaterialIcons(): void {
Expand Down
@@ -0,0 +1,76 @@
import { SpectatorService, createServiceFactory } from '@ngneat/spectator';

import { DotMessageService } from '@dotcms/data-access';

import { DotSeoMetaTagsUtilService } from './dot-seo-meta-tags-util.service';

import { SEO_RULES_COLORS, SEO_RULES_ICONS } from '../dot-edit-content-html/models/meta-tags-model';

describe('DotSeoMetaTagsUtilService', () => {
let spectator: SpectatorService<DotSeoMetaTagsUtilService>;
const createService = createServiceFactory(DotSeoMetaTagsUtilService);

beforeEach(() => {
spectator = createService({
providers: [
{
provide: DotMessageService,
useValue: {
get: (key: string) => key
}
}
]
});
});

it('should add HTML tags to a message', () => {
const message = 'og:title This is a test message with SEO_TAGS';
const result = spectator.service.addHTMLTag(message);

expect(result).toContain('<code>og:title</code>');
});

it('should return an error item', () => {
const message = 'Error message';
const result = spectator.service.getErrorItem(message);

expect(result.message).toEqual(spectator.service.addHTMLTag(message));
expect(result.color).toBe(SEO_RULES_COLORS.ERROR);
expect(result.itemIcon).toBe(SEO_RULES_ICONS.TIMES);
});

it('should return a warning item', () => {
const message = 'Warning message';
const result = spectator.service.getWarningItem(message);

expect(result.message).toEqual(spectator.service.addHTMLTag(message));
expect(result.color).toBe(SEO_RULES_COLORS.WARNING);
expect(result.itemIcon).toBe(SEO_RULES_ICONS.EXCLAMATION_CIRCLE);
});

it('should return a done item', () => {
const message = 'Done message';
const result = spectator.service.getDoneItem(message);

expect(result.message).toEqual(spectator.service.addHTMLTag(message));
expect(result.color).toBe(SEO_RULES_COLORS.DONE);
expect(result.itemIcon).toBe(SEO_RULES_ICONS.CHECK);
});

it('should validate that all values are falsy or empty', () => {
const falsyValues: (string | NodeListOf<Element>)[] = [null, undefined, ''];
const result = spectator.service.areAllFalsyOrEmpty(falsyValues);

expect(result).toBe(true);

const nonEmptyValues: (string | NodeListOf<Element>)[] = [
null,
undefined,
'test',
document.querySelectorAll('div')
];
const nonEmptyResult = spectator.service.areAllFalsyOrEmpty(nonEmptyValues);

expect(nonEmptyResult).toBe(false);
});
});

0 comments on commit c5e41bb

Please sign in to comment.