/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
import './init';
import * as fs from 'fs';
import * as path from 'path';
const EXPECTED_XMB = `
]>
  node_modules/third_party/other_comp.d.ts:1,2other-3rdP-component
multi-lines
  src/basic.html:1translate me
  src/basic.html:5src/entry_components.ts:1Welcome
`;
const EXPECTED_XLIFF = `
  
    
      
        other-3rdP-component
multi-lines
        
          node_modules/third_party/other_comp.d.ts
          1
        
      
      
        translate me
        
          src/basic.html
          1
        
        desc
        meaning
      
      
        Welcome
        
          src/basic.html
          5
        
        
          src/entry_components.ts
          1
        
      
    
  
`;
const EXPECTED_XLIFF2 = `
  
    
      
        node_modules/third_party/other_comp.d.ts:1,2
      
      
        other-3rdP-component
multi-lines
      
    
    
      
        desc
        meaning
        src/basic.html:1
      
      
        translate me
      
    
    
      
        src/basic.html:5
        src/entry_components.ts:1
      
      
        Welcome
      
    
  
`;
describe('template i18n extraction output', () => {
  const outputDir = path.join(__dirname, '../xi18n-out');
  it('should extract i18n messages as xmb', () => {
    const xmbOutput = path.join(outputDir, 'custom_file.xmb');
    expect(fs.existsSync(xmbOutput)).toBeTruthy();
    const xmb = fs.readFileSync(xmbOutput, {encoding: 'utf-8'});
    expect(xmb).toEqual(EXPECTED_XMB);
  });
  it('should extract i18n messages as xliff', () => {
    const xlfOutput = path.join(outputDir, 'messages.xlf');
    expect(fs.existsSync(xlfOutput)).toBeTruthy();
    const xlf = fs.readFileSync(xlfOutput, {encoding: 'utf-8'});
    expect(xlf).toEqual(EXPECTED_XLIFF);
  });
  it('should extract i18n messages as xliff version 2.0', () => {
    const xlfOutput = path.join(outputDir, 'messages.xliff2.xlf');
    expect(fs.existsSync(xlfOutput)).toBeTruthy();
    const xlf = fs.readFileSync(xlfOutput, {encoding: 'utf-8'});
    expect(xlf).toEqual(EXPECTED_XLIFF2);
  });
  it('should not emit js', () => {
    const files = fs.readdirSync(outputDir);
    files.forEach(f => expect(f).not.toMatch(/\.js$/));
  });
});