aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/templates/layout/site-header/site-branding.test.tsx
blob: db454e39f85e035e032b80b7dfe49cbb886cb9bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import { describe, expect, it } from '@jest/globals';
import { render, screen as rtlScreen } from '../../../../../tests/utils';
import { SiteBranding } from './site-branding';
import { CONFIG } from 'src/utils/config';
import { ROUTES } from 'src/utils/constants';

describe('SiteBranding', () => {
  it('renders the website logo, name and baseline', () => {
    render(<SiteBranding />);

    expect(
      rtlScreen.getByRole('img', { name: `${CONFIG.name} picture` })
    ).toBeInTheDocument();
    expect(
      rtlScreen.getByRole('img', { name: `${CONFIG.name} logo` })
    ).toBeInTheDocument();
    expect(rtlScreen.getByRole('link', { name: CONFIG.name })).toHaveAttribute(
      'href',
      ROUTES.HOME
    );
    expect(rtlScreen.getByText(CONFIG.baseline)).toBeInTheDocument();
  });
});
r: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
// Specification:
// https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/Throwable.html#printStackTrace()

Prism.languages.javastacktrace = {
  // java.sql.SQLException: Violation of unique constraint MY_ENTITY_UK_1: duplicate value(s) for column(s) MY_COLUMN in statement [...]
  // Caused by: java.sql.SQLException: Violation of unique constraint MY_ENTITY_UK_1: duplicate value(s) for column(s) MY_COLUMN in statement [...]
  // Caused by: com.example.myproject.MyProjectServletException
  // Caused by: MidLevelException: LowLevelException
  // Suppressed: Resource$CloseFailException: Resource ID = 0
  summary: {
    pattern:
      /^([\t ]*)(?:(?:Caused by:|Suppressed:|Exception in thread "[^"]*")[\t ]+)?[\w$.]+(?::.*)?$/m,
    lookbehind: true,
    inside: {
      keyword: {
        pattern:
          /^([\t ]*)(?:(?:Caused by|Suppressed)(?=:)|Exception in thread)/m,
        lookbehind: true,
      },

      // the current thread if the summary starts with 'Exception in thread'
      string: {
        pattern: /^(\s*)"[^"]*"/,
        lookbehind: true,
      },
      exceptions: {
        pattern: /^(:?\s*)[\w$.]+(?=:|$)/,
        lookbehind: true,
        inside: {
          'class-name': /[\w$]+$/,
          namespace: /\b[a-z]\w*\b/,
          punctuation: /\./,
        },
      },
      message: {
        pattern: /(:\s*)\S.*/,
        lookbehind: true,
        alias: 'string',
      },
      punctuation: /:/,
    },
  },

  // at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
  // at org.hsqldb.jdbc.Util.throwError(Unknown Source) here could be some notes
  // at java.base/java.lang.Class.forName0(Native Method)
  // at Util.<init>(Unknown Source)
  // at com.foo.loader/foo@9.0/com.foo.Main.run(Main.java:101)
  // at com.foo.loader//com.foo.bar.App.run(App.java:12)
  // at acme@2.1/org.acme.Lib.test(Lib.java:80)
  // at MyClass.mash(MyClass.java:9)
  //
  // More information:
  // https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/StackTraceElement.html#toString()
  //
  // A valid Java module name is defined as:
  //   "A module name consists of one or more Java identifiers (§3.8) separated by "." tokens."
  // https://docs.oracle.com/javase/specs/jls/se9/html/jls-6.html#jls-ModuleName
  //
  // A Java module version is defined by this class:
  // https://docs.oracle.com/javase/9/docs/api/java/lang/module/ModuleDescriptor.Version.html
  // This is the implementation of the `parse` method in JDK13:
  // https://github.com/matcdac/jdk/blob/2305df71d1b7710266ae0956d73927a225132c0f/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java#L1108
  // However, to keep this simple, a version will be matched by the pattern /@[\w$.+-]*/.
  'stack-frame': {
    pattern: /^([\t ]*)at (?:[\w$./]|@[\w$.+-]*\/)+(?:<init>)?\([^()]*\)/m,
    lookbehind: true,
    inside: {
      keyword: {
        pattern: /^(\s*)at(?= )/,
        lookbehind: true,
      },
      source: [
        // (Main.java:15)
        // (Main.scala:15)
        {
          pattern: /(\()\w+\.\w+:\d+(?=\))/,
          lookbehind: true,
          inside: {
            file: /^\w+\.\w+/,
            punctuation: /:/,
            'line-number': {
              pattern: /\b\d+\b/,
              alias: 'number',
            },
          },
        },
        // (Unknown Source)
        // (Native Method)
        // (...something...)
        {
          pattern: /(\()[^()]*(?=\))/,
          lookbehind: true,
          inside: {
            keyword: /^(?:Native Method|Unknown Source)$/,
          },
        },
      ],
      'class-name': /[\w$]+(?=\.(?:<init>|[\w$]+)\()/,
      function: /(?:<init>|[\w$]+)(?=\()/,
      'class-loader': {
        pattern: /(\s)[a-z]\w*(?:\.[a-z]\w*)*(?=\/[\w@$.]*\/)/,
        lookbehind: true,
        alias: 'namespace',
        inside: {
          punctuation: /\./,
        },
      },
      module: {
        pattern: /([\s/])[a-z]\w*(?:\.[a-z]\w*)*(?:@[\w$.+-]*)?(?=\/)/,
        lookbehind: true,
        inside: {
          version: {
            pattern: /(@)[\s\S]+/,
            lookbehind: true,
            alias: 'number',
          },
          punctuation: /[@.]/,
        },
      },
      namespace: {
        pattern: /(?:\b[a-z]\w*\.)+/,
        inside: {
          punctuation: /\./,
        },
      },
      punctuation: /[()/.]/,
    },
  },

  // ... 32 more
  // ... 32 common frames omitted
  more: {
    pattern: /^([\t ]*)\.{3} \d+ [a-z]+(?: [a-z]+)*/m,
    lookbehind: true,
    inside: {
      punctuation: /\.{3}/,
      number: /\d+/,
      keyword: /\b[a-z]+(?: [a-z]+)*\b/,
    },
  },
};