mirror of
https://github.com/discourse/discourse.git
synced 2024-11-27 10:33:38 +08:00
DEV: migrates webhook-status to gjs (#28407)
This commit also adds a test for this component. --------- Co-authored-by: Jarek Radosz <jarek@cvx.dev>
This commit is contained in:
parent
ea8516b38d
commit
3e69f31e0b
|
@ -1,4 +1,5 @@
|
||||||
import Component from "@glimmer/component";
|
import Component from "@glimmer/component";
|
||||||
|
import icon from "discourse-common/helpers/d-icon";
|
||||||
import I18n from "discourse-i18n";
|
import I18n from "discourse-i18n";
|
||||||
|
|
||||||
export default class WebhookStatus extends Component {
|
export default class WebhookStatus extends Component {
|
||||||
|
@ -6,7 +7,7 @@ export default class WebhookStatus extends Component {
|
||||||
iconClasses = ["text-muted", "text-danger", "text-successful", "text-muted"];
|
iconClasses = ["text-muted", "text-danger", "text-successful", "text-muted"];
|
||||||
|
|
||||||
get status() {
|
get status() {
|
||||||
const lastStatus = this.args.webhook.last_delivery_status;
|
const lastStatus = this.args.webhook.get("last_delivery_status");
|
||||||
return this.args.deliveryStatuses.find((s) => s.id === lastStatus);
|
return this.args.deliveryStatuses.find((s) => s.id === lastStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,4 +22,9 @@ export default class WebhookStatus extends Component {
|
||||||
get iconClass() {
|
get iconClass() {
|
||||||
return this.iconClasses[this.status.id - 1];
|
return this.iconClasses[this.status.id - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<template>
|
||||||
|
{{icon this.iconName class=this.iconClass}}
|
||||||
|
{{this.deliveryStatus}}
|
||||||
|
</template>
|
||||||
}
|
}
|
|
@ -1,2 +0,0 @@
|
||||||
{{d-icon this.iconName (hash class=this.iconClass)}}
|
|
||||||
{{this.deliveryStatus}}
|
|
|
@ -77,6 +77,10 @@ export default class CoreFabricators {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
webhook(args = {}) {
|
||||||
|
return this.store.createRecord("web-hook", args);
|
||||||
|
}
|
||||||
|
|
||||||
upload() {
|
upload() {
|
||||||
return {
|
return {
|
||||||
extension: "jpeg",
|
extension: "jpeg",
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
import { getOwner } from "@ember/owner";
|
||||||
|
import { render, rerender } from "@ember/test-helpers";
|
||||||
|
import { module, test } from "qunit";
|
||||||
|
import CoreFabricators from "discourse/lib/fabricators";
|
||||||
|
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||||
|
import WebhookStatus from "admin/components/webhook-status";
|
||||||
|
|
||||||
|
module("Integration | Component | webhook-status", function (hooks) {
|
||||||
|
setupRenderingTest(hooks);
|
||||||
|
|
||||||
|
const DELIVERY_STATUSES = [
|
||||||
|
{ id: 1, name: "inactive" },
|
||||||
|
{ id: 2, name: "failed" },
|
||||||
|
{ id: 3, name: "successful" },
|
||||||
|
{ id: 4, name: "disabled" },
|
||||||
|
];
|
||||||
|
|
||||||
|
test("deliveryStatus", async function (assert) {
|
||||||
|
const webhook = new CoreFabricators(getOwner(this)).webhook();
|
||||||
|
await render(<template>
|
||||||
|
<WebhookStatus
|
||||||
|
@deliveryStatuses={{DELIVERY_STATUSES}}
|
||||||
|
@webhook={{webhook}}
|
||||||
|
/>
|
||||||
|
</template>);
|
||||||
|
|
||||||
|
assert.dom().hasText("Inactive");
|
||||||
|
|
||||||
|
webhook.set("last_delivery_status", 2);
|
||||||
|
|
||||||
|
await rerender();
|
||||||
|
|
||||||
|
assert.dom().hasText("Failed");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("iconName", async function (assert) {
|
||||||
|
const webhook = new CoreFabricators(getOwner(this)).webhook();
|
||||||
|
await render(<template>
|
||||||
|
<WebhookStatus
|
||||||
|
@deliveryStatuses={{DELIVERY_STATUSES}}
|
||||||
|
@webhook={{webhook}}
|
||||||
|
/>
|
||||||
|
</template>);
|
||||||
|
|
||||||
|
assert.dom(".d-icon-far-circle").exists();
|
||||||
|
|
||||||
|
webhook.set("last_delivery_status", 2);
|
||||||
|
|
||||||
|
await rerender();
|
||||||
|
|
||||||
|
assert.dom(".d-icon-times-circle").exists();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("iconClass", async function (assert) {
|
||||||
|
const webhook = new CoreFabricators(getOwner(this)).webhook();
|
||||||
|
await render(<template>
|
||||||
|
<WebhookStatus
|
||||||
|
@deliveryStatuses={{DELIVERY_STATUSES}}
|
||||||
|
@webhook={{webhook}}
|
||||||
|
/>
|
||||||
|
</template>);
|
||||||
|
|
||||||
|
assert.dom(".d-icon").hasClass("text-muted");
|
||||||
|
|
||||||
|
webhook.set("last_delivery_status", 2);
|
||||||
|
|
||||||
|
await rerender();
|
||||||
|
|
||||||
|
assert.dom(".d-icon").hasClass("text-danger");
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user