Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
pls78 committed Feb 27, 2025
1 parent a4391d4 commit ec5cadb
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 5 deletions.
17 changes: 17 additions & 0 deletions packages/js/tests/dashboard/__mocks__/fake-data-formatter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { DataFormatterInterface } from "../../../src/dashboard/services/data-formatter-interface";

/**
* Fake implementation of the data formatter interface.
*/
export class FakeDataFormatter extends DataFormatterInterface {
/**
* @param {*} data The data.
* @param {string} name The name. Used to determine how to format.
* @param {Object} [context] Extra information to determine how to format.
* @returns {*} The formatted or original
*/
// eslint-disable-next-line no-unused-vars
format( data, name, context = {} ) {
return data;
}
}
19 changes: 14 additions & 5 deletions packages/js/tests/dashboard/services/widget-factory.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { waitFor } from "@testing-library/react";
import { WidgetFactory } from "../../../src/dashboard/services/widget-factory";
import { render } from "../../test-utils";
import { MockDataProvider } from "../__mocks__/data-provider";
import { FakeDataFormatter } from "../__mocks__/fake-data-formatter";
import { MockRemoteDataProvider } from "../__mocks__/remote-data-provider";

// Mock the Chart.js library. Preventing the error:
Expand All @@ -15,31 +16,38 @@ describe( "WidgetFactory", () => {
let widgetFactory;
let dataProvider;
let remoteDataProvider;

let dataFormatters;
beforeAll( () => {
dataProvider = new MockDataProvider( {
siteKitConfiguration: {
isFeatureEnabled: true,
},
} );
remoteDataProvider = new MockRemoteDataProvider( {} );
widgetFactory = new WidgetFactory( dataProvider, remoteDataProvider );
dataFormatters = {
icsaDataFormatter: new FakeDataFormatter( { locale: "en-US" } ),
topPagesDataFormatter: new FakeDataFormatter( { locale: "en-US" } ),
topQueriesDataFormatter: new FakeDataFormatter( { locale: "en-US" } ),
};
widgetFactory = new WidgetFactory( dataProvider, remoteDataProvider, dataFormatters );
} );

test.each( [
[ "seoScores" ],
[ "readabilityScores" ],
[ "topPages" ],
[ "icsa" ],
] )( "should have the widget type: %s", async( type ) => {
expect( WidgetFactory.types[ type ] ).toBe( type );
} );

test.each( [
[ "Top pages", { id: "top-pages-widget", type: "topPages" } ],
[ "Top queries", { id: "top-queries-widget", type: "topQueries" } ],
[ "Icsa", { id: "icsa-widget", type: "icsa" } ],
] )( "should not create a %s widget when site kit is not connected", async( _, widget ) => {
dataProvider.setSiteKitConnected( false );
widgetFactory = new WidgetFactory( dataProvider, remoteDataProvider );
widgetFactory = new WidgetFactory( dataProvider, remoteDataProvider, dataFormatters );
expect( widgetFactory.createWidget( widget ) ).toBeNull();
} );

Expand Down Expand Up @@ -120,20 +128,21 @@ describe( "WidgetFactory", () => {
dataProvider = new MockDataProvider( {
siteKitConfiguration: { isConfigurationDismissed: true },
} );
widgetFactory = new WidgetFactory( dataProvider, remoteDataProvider );
widgetFactory = new WidgetFactory( dataProvider, remoteDataProvider, dataFormatters );

expect( widgetFactory.createWidget( { id: "site-kite-setup-widget", type: "siteKitSetup" } ) ).toBeNull();
} );

test.each( [
[ "Top pages", { id: "top-pages-widget", type: "topPages" } ],
[ "Top queries", { id: "top-queries-widget", type: "topQueries" } ],
[ "Icsa", { id: "icsa-widget", type: "icsa" } ],
[ "siteKitSetup", { id: "site-kite-setup-widget", type: "siteKitSetup" } ],
] )( "should not create a %s widget when site kit feature is disabled", async( _, widget ) => {
dataProvider = new MockDataProvider( {
siteKitConfiguration: { isFeatureEnabled: false },
} );
widgetFactory = new WidgetFactory( dataProvider, remoteDataProvider );
widgetFactory = new WidgetFactory( dataProvider, remoteDataProvider, dataFormatters );

expect( widgetFactory.createWidget( widget ) ).toBeNull();
} );
Expand Down

0 comments on commit ec5cadb

Please sign in to comment.