Introducing Riya

Hello! I am Riya, 2nd year CSE student at IIT Bhilai India. I have the experience of building full stack applications using MERN stack. I also have knowledge of next.js and tailwind CSS. I am passionate learner. I know C, C++, python, javascript and java programming languages. I like to solve data structure and algorithm problems. I am really interested to contribute to Joplin in GSoC 2022. Please guide me or assign me some task so that I can start contributing.

2 Likes

Hi there,
Welcome to the community.

Is there anything missing in Google Summer of Code 2022 | Joplin to give you guidance on how to contribute and get involved?

By the way, what is your GitHub account?

happy to see you here.

thx & good luck

My github account: riya107

Actually I am new so I am facing difficulty in understanding the codebase. I am trying to resolve Desktop: Show installed plugins in Help - About Joplin #6143 this issue.

Link is gone

Sorry,

I meant the link to this is gone

1 Like

Hi there,
you are doing?
Are you getting along well as the serious phase is about to start?
Any help required on how to read Joplin's codebase and how to fix an issue easily?

good luck

Hi,
Actually I created #6337 pull request. But this pull request was closed because there was no test file. But I don't know how to write test file. I also read the instructions written joplin/CONTRIBUTING.md at dev · laurent22/joplin · GitHub here. But still don't know how to write test file. I am trying to learn it.

Is the problem genereal writing a test, or special for this PR?

the problem is general.

Ok, the best is to read the Jest docu an try it with a smal own project.
If you have understood the basic principle, then take a look at the existing tests in Joplin and try to understand, for example, those for the Notes.

I am able to write test file for a simple add function. But It is difficult for me to write test file for notes. I am trying it once again if It does not work then I will ask again.

Thanks for your support and help

Referring to previous doubt in writing test file for issue Desktop: Show installed plugins in Help - About Joplin · Issue #6143 · laurent22/joplin · GitHub
I have added a function given below:

export function installedPluginDisplayAndCopy(plugins:Plugins):string[]{
	const v = versionInfo(packageInfo);
	let greater_than_20 = false;
	let pluginList = [];
	let message = v.message;
	let body = v.body;

	for (const pluginId in plugins) {
		const plugin = plugins[pluginId];
		pluginList.push([plugin.manifest.name, plugin.manifest.version]);
	}

	body += '\n\n';

	for (const item of pluginList) {
		body += `${item[0]}: ${item[1]}\n`;
	}

	if (pluginList.length > 20) {
		pluginList = pluginList.slice(0, 20);
		greater_than_20 = true;
	}

	message += '\n\n';

	for (const item of pluginList) {
		message += `${item[0]}: ${item[1]}\n`;
	}

	if (greater_than_20) {
		message += '...';
	}

	return [message,body];//message is displayed body is copied to clipboard
}

in the file at this path:
/home/riya/Documents/joplin/joplin/packages/app-desktop/gui/MenuBar.tsx

This function returns a list of two strings first one is displayed in about joplin section and

Now I am writing a test file to check this function. The test file is at the same path with name MenuBar.test.ts. The file is given below:

import {installedPluginDisplayAndCopy} from './MenuBar';
import { Plugins } from '@joplin/lib/services/plugins/PluginService';
import Plugin from '@joplin/lib/services/plugins/Plugin';
import { PluginManifest } from '@joplin/lib/services/plugins/utils/types';
import versionInfo from '@joplin/lib/versionInfo';
const packageInfo = require('../packageInfo.js');

describe('MenuBar',()=>{
    test('should return right message and body',()=>{
        function temp():any{return null}
        const v = versionInfo(packageInfo);
        let mnfst1:PluginManifest={manifest_version: 1,id: '1',name: '1',version: '1',app_min_version: '1'};
        let mnfst2:PluginManifest={manifest_version: 2,id: '2',name: '2',version: '2',app_min_version: '2'};        
        let mnfst3:PluginManifest={manifest_version: 3,id: '3',name: '3',version: '3',app_min_version: '3'};        
        let mnfst4:PluginManifest={manifest_version: 4,id: '4',name: '4',version: '4',app_min_version: '4'};
        let plg1=new Plugin('1',mnfst1,'1',temp,'1');
        let plg2=new Plugin('2',mnfst2,'2',temp,'2');
        let plg3=new Plugin('3',mnfst3,'3',temp,'3');
        let plg4=new Plugin('4',mnfst4,'4',temp,'4');
        
        let plugins:Plugins={'1':plg1,'2':plg2,'3':plg3,'4':plg4};

        let message:string=v.message+'\n\n'+
        '1: 1\n'+
        '2: 2\n'+
        '3: 3\n'+
        '4: 4\n';

        let body:string=v.body+'\n\n'+
        '1: 1\n'+
        '2: 2\n'+
        '3: 3\n'+
        '4: 4\n';

        let output:string[]=[message,body];

        expect(installedPluginDisplayAndCopy(plugins)).toBe(output);
    })
});

When I am running this test file I am getting the following error:

yarn test MenuBar
 FAIL  gui/MenuBar.test.js
  ● Test suite failed to run

    No such module was linked: electron_common_features

      at Object.getElectronBinding (node_modules/@electron/remote/dist/src/common/get-electron-binding.js:6:24)
      at Object.<anonymous> (node_modules/@electron/remote/dist/src/common/module-names.js:44:41)
      at Object.<anonymous> (node_modules/@electron/remote/dist/src/renderer/remote.js:7:24)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        3.328 s
Ran all test suites matching /MenuBar/i.

Please help me to resolve this error.

you should post such question in #development there is people who can help you :slight_smile: